19

我对CT DICOM中的重新缩放斜率重新缩放截距几乎没有疑问:

  1. 它们是否用于将原始数据从扫描仪传输到Hounsfield数据集,其中水为 0,空气为 -1000?
  2. 我在图像显示组。如何知道重新缩放斜率和重新缩放截距值?
  3. 重新缩放斜率和重新缩放截距的确切含义是什么?它们是如何确定的?
4

2 回答 2

24

重新缩放斜率和重新缩放截距允许将像素值转换为 HU 或其他单位,如标记 0028,1054 中指定的那样。

对于 CT 图像,单位应该是 HU(Hounsfield),当标签 0028,1054 不存在时,默认值确实是 HU。然而,标签可能存在并且可能指定不同的单位(OD=光密度,US=未指定)。

重新调整斜率和截距由硬件制造商确定。

如果从原始像素值到 Hounsfield 或光密度的转换不是线性的,则应用 LUT。

查看标准 C.11 的第 3 部分以获取更多详细信息,以及此答案DICOM 图像的窗口宽度和中心计算

于 2012-04-17T19:30:13.223 回答
2

这是我的实现:

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
于 2019-09-19T20:37:43.923 回答