重新缩放斜率和重新缩放截距

时间:2012-04-17 15:15:16

标签: dicom

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

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

2 个答案:

答案 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