我对CT DICOM中的重新缩放斜率和重新缩放截距几乎没有疑问:
- 它们是否用于将原始数据从扫描仪传输到Hounsfield数据集,其中水为 0,空气为 -1000?
- 我在图像显示组。如何知道重新缩放斜率和重新缩放截距值?
- 重新缩放斜率和重新缩放截距的确切含义是什么?它们是如何确定的?
我对CT DICOM中的重新缩放斜率和重新缩放截距几乎没有疑问:
重新缩放斜率和重新缩放截距允许将像素值转换为 HU 或其他单位,如标记 0028,1054 中指定的那样。
对于 CT 图像,单位应该是 HU(Hounsfield),当标签 0028,1054 不存在时,默认值确实是 HU。然而,标签可能存在并且可能指定不同的单位(OD=光密度,US=未指定)。
重新调整斜率和截距由硬件制造商确定。
如果从原始像素值到 Hounsfield 或光密度的转换不是线性的,则应用 LUT。
查看标准 C.11 的第 3 部分以获取更多详细信息,以及此答案DICOM 图像的窗口宽度和中心计算
这是我的实现:
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