在分析一个竞赛的数据集时发现,用SimpleITK得到的pixel spacing不对,但是用pydicom得到的就没有问题,代码如下:
import SimpleITK as sitk
import pydicom
import os
import numpy as np
if __name__ == '__main__':
in_dcm_dir = 'L:\\ImageData\\Spine_Localization_PIL\\lumbar_testA50_mid_sagittal'
file_name = 'Case417.dcm'
dcm_file_path = os.path.join(in_dcm_dir, file_name)
sitk_mr_file = sitk.ReadImage(dcm_file_path)
mr1 = sitk.GetArrayFromImage(sitk_mr_file)[0, :, :]
pydicom_file = pydicom.read_file(dcm_file_path)
mr2 = pydicom_file.pixel_array
pixel_spacing = [float(pydicom_file.PixelSpacing[0]), float(pydicom_file.PixelSpacing[1]), float(pydicom_file.SpacingBetweenSlices)]
print('pydicom pixel spacing:')
print(pixel_spacing)
print('sitk pixel spacing:')
print(sitk_mr_file.GetSpacing())
输出如下:
pydicom pixel spacing:
[0.9379948, 0.9373264, 6.0]
sitk pixel spacing:
(1.0, 1.0, 1.0)
用RadiAnt打开DICOM图像,看到的pixel spacing与pydicom得到的一致,但是SimpleITK对这套数据得到的pixel spacing始终是1*1,有没有人知道为什么会这样?