DICOM文件的医学图像质量问题

问题描述 投票:0回答:1

我正在尝试使用python对DICOM格式的CT图像进行一些分割任务。

主要问题是,当我尝试使用pydicom库读取DICOM文件(https://www.dicomlibrary.com/meddream/md5/index.html?study=1.2.826.0.1.3680043.8.1055.1.20111102150758591.92402465.76095170)并使用pixel_array属性显示图像时,我正在获取带有质量比原始质量差很多(请从下面查看代码和屏幕截图)。

dicom_file = pydicom.read_file('Anonymized20191102.dcm')
plt.imshow(dicom_file.pixel_array, cmap='gray')
plt.show()

The original image

The image displayed with matplotlib

我的问题,为了更好地理解问题是:

  1. pixel_array属性代表什么?我已经看到它采用[0,2250]范围内的值。

观察:

我还尝试通过乘以斜率并加上偏差来获得hounsfield单位(HU)值,如下所示:

def convert_to_hu(dicom_file):
    bias = dicom_file.RescaleIntercept
    slope = dicom_file.RescaleSlope
    pixel_values = dicom_file.pixel_array
    new_pixel_values = (pixel_values * slope) + bias
    return new_pixel_values

hu_pixels = convert_to_hu(dicom_file)
plt.imshow(hu_pixels, cmap='gray')
plt.show()

就可视化而言,结果与使用pixel_array原始值的结果几乎相同。值也在[-1000,1250]范围内(考虑到HU通常在-1000到1000之间,我认为这很好)。

python image-processing dicom medical pydicom
1个回答
0
投票

[第一张图像看起来已使用适合所有提供的HU值的灰度范围来绘制像素,而不仅仅是显示与所显示的解剖结构相对应的HU值范围。

虽然我不确定pydicom如何处理此问题,但您需要“缩放和平整”图像以从第一张图像中获得结果。通常通过线性VOI LUT对CT图像应用窗口/级别将限制显示像素的范围,并将它们缩放到可显示范围,通常为8位,除非使用灰度监视器。

CT图像很可能具有用于窗口中心(0028,1050)来设置级别和用于窗口宽度(0028,1051)来设置窗口的标签。图像中的中心和宽度值由生成图像的模态提供,并对应于显示图像中腹部区域的良好范围。下面的链接提供了一些基于正在查看的身体部位的CT图像的常用窗口/级别设置,还提供了有关设置如何影响显示图像的其他信息。

https://radiopaedia.org/articles/windowing-ct

虽然应用窗口/级别对显示图像很有用,但是通过将每个像素存储的10或12位(CT图像常见)转换为每个像素显示的8位,您正在失去位深度。您将需要确定分段任务是否需要此额外的位深度。

© www.soinside.com 2019 - 2024. All rights reserved.