DICOM和NIFTI:
DICOM类型的文件后缀为dcm,常用的python处理库有:SimpleITK, pydicom库 。
NIFTI类型型的文件后缀为nii或nii.gz(压缩格式),常用的python处理库有:SimpleITK, nibabel库。
对于nii格式的图片,SimpleITK,nibabel中常用的api接口,都会自动的进行上述转化过程,即取出来的值已经是Hu了。
对于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
引用https://blog.youkuaiyun.com/weixin_44058333/article/details/102923921
nii/nii.gz
原数据中保存的Get size = (x,y,z) 但是 data.shape = (z , y, x )
在sitk对象中,GetSize()得到的是:[x, y, z] —> [width, height, depth]
而numpy中,shape为:[z, y, x] —> [depth, heitht, width]。
nrrd
·在pynrrd中nrrd.read(path)中得到的data.shape为(x,y, z)。
·在options里面的size:(y,x,z)
·nrrd_data:保存图片的多维矩阵
·nrrd_options:保存图片的相关信息
nrrd_data, nrrd_options = nrrd.read(nrrd_filename)
一个意外发现:基于nrrd的数据,也可以用Simpleitk读取哦,然后读取后的形状规则和上面的其它格式文件的规则相同,这样省了很多时间和精力啊。