HU(Hounsfiled Unit)值,反映了组织对X射线吸收程度。以水的吸收程度作为参考,即水的HU=0,衰减系数大于水的为正直,小于水的为负值。并以骨皮质和空气的HU值为上限和下限。
最近遇到了一个问题,为了站在医生的角度看问题,所以必须将dcm图像的值转换为HU值。在网上也搜了一些帖子,大家都提到了一个公式:
HU = pixel_val * slope + intercept
import dicom
import numpy as np
import SimpleITK as sitk
dcm_path = '图片路径'
img = dicom.read_file(dcm_path)
img_array = sitk.GetArrayFromImage(sitk.ReadImage(dcm_path))
HU = np.dot(img_array, img.RescaleSlope) + img.RescaleIntercept
但是,这里会有一个问题,有的图像就已经是CT值(HU值),该图像的Solpe=1,Intercept=0,如果按照上面的公式计算,就还是图像的值;而有的图像则是像素值,所以需要转化,该图像的Sople=1, Intercept=-1024(这是我用LUNA数据得出的结果)。
如有错误,欢迎指正