我对 CT * DICOM 中的重新缩放斜率和重新缩放拦截几乎没有疑问*:
答案 0 :(得分:13)
重新缩放斜率和重新缩放截距允许将像素值转换为HU或其他单位,如标记0028,1054中所指定。
对于CT图像,单位应为HU(Hounsfield),当标签0028,1054不存在时,默认值确实为HU。 但是,标签可能存在并且可能指定不同的单位(OD =光密度,US =未指定)。
重新缩放斜率和截距由硬件制造商确定。
如果从原始像素值到Hounsfield或光密度的变换不是线性的,则应用LUT。
检查标准C.11的第3部分以获取更多详细信息,以及此答案Window width and center calculation of DICOM image
答案 1 :(得分:0)
这是我的实现方式
def window_ct(dcm, w, c, ymin, ymax):
"""Windows a CT slice.
http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.11.2.html
Args:
dcm (pydicom.dataset.FileDataset):
w: Window Width parameter.
c: Window Center parameter.
ymin: Minimum output value.
ymax: Maximum output value.
Returns:
Windowed slice.
"""
# convert to HU
b = dcm.RescaleIntercept
m = dcm.RescaleSlope
x = m * dcm.pixel_array + b
# windowing C.11.2.1.2.1 Default LINEAR Function
#
y = np.zeros_like(x)
y[x <= (c - 0.5 - (w - 1) / 2)] = ymin
y[x > (c - 0.5 + (w - 1) / 2)] = ymax
y[(x > (c - 0.5 - (w - 1) / 2)) & (x <= (c - 0.5 + (w - 1) / 2))] = \
((x[(x > (c - 0.5 - (w - 1) / 2)) & (x <= (c - 0.5 + (w - 1) / 2))] - (c - 0.5)) / (w - 1) + 0.5) * (
ymax - ymin) + ymin
return y