关于图像处理问题:CT图像预处理

想问一下大家 在做CT图像预处理的时候 根据数据集提供的信息 需要先从像素中减去32768获得HU值 再调整窗宽窗位【-1024, 3071】,可是得到的结果是全黑的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: CT图像预处理之窗宽窗位调整中的 1 CT图像的Hu值变换 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    CT值属于医学领域的概念,通常称亨氏单位(hounsfield unit,HU),反映了组织对X射线的吸收程度。黑影表示低吸收区,即低密度区,如含气体多的肺部;白影表示高吸收区,即高密度区,如骨骼。但是CT 和X线图像相比,CT的密度分辨力高,即有高的密度分辨力(density resolution)。因此,人体软组织的密度差别虽小。吸收系数虽多接近于水,也能形成对比而

    成像。解剖成像。

    灰度值属于计算机领域的概念,指的是单个像素点的亮度,灰度值越大表示越亮。范围一般从0到255,白色为255,黑色为0,故黑白图片也称为灰度图像。

    两种最常用的医学图像数据格式:DICOM类型NIFTI类型

    DICOM类型的文件后缀为dcm,常用的python处理库有:SimpleITK,pydicom库

    NIFTI类型的文件后缀为niinii.gz,常用的python处理库有:SimpleITK,nibabel库

    :无论对于dcm还是nii格式的图片,只要是ct图,为了更好地观察不同器官,都可以选择将储存的原始数据转化为Hu值,因为Hu值即代表了物体真正的密度。

           对于nii格式的图片,SimpleITK,nibabel中常用的api接口,都会自动的进行上述转化过程,即取出来的值已经是Hu了。除非专门用nib.load('xx').dataobj.get_unscaled()或者itk.ReadImage('xx').GetPixel(x,y,z)才能取得原始数据

           对于dcm格式的图片,SimpleITK,pydicom常用的api接口都不会将原始数据自动转化为Hu。(itk snap软件读入dcm或nii都不会对数据进行scale操作)

    公式与代码:

    HU = pixel_val*slope + intercept

    其中,slope,intercept可以从元数据中读取

    def get_pixels_hu(ct_array,slope,intercept):
        if slope != 1:
            ct_array = slope*ct_array
        ct_array += intercept
        return ct_array

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^