在分析一个竞赛的数据集时发现,用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,有没有人知道为什么会这样?
请问您解决了吗?我现在也出现这样的问题,而且更奇葩的是不同设备拍出来的dicom图片,有些可以读出来,有些就是1*1
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。