我一直在研究一些dicom系列,发现厚度属性和itkimage.GetSpacing()[2]值并不总是一致的。
例如,在dcm文件中编码的厚度(0018,0050)值 1.5 mm,但z轴上指示simpleITK的相应间距 1.00 。那么我应该用什么值来表示z轴上相邻体素中心之间的物理距离?如果它们是不同的东西,那么间距实际意味着什么?
我在python中检索厚度和间距值,如下所示:
//thickness using dicom
thickness = dicom.read_file(dcm_file)[0x0018, 0x0050].value
//spacing using simpleITK
reader = sitk.ImageSeriesReader()
dicom_files = reader.GetGDCMSeriesFileNames(dicom_dir)
reader.SetFileNames(dicom_names)
itkImage= rader.Execute
spacing_x, spacing_y, spacing_z = itkImage.GetSpacing()
我一直在搜索文档,但尚未发现类似答案的内容。谢谢!
====== Update1 ======
我已经检查了图像位置(患者)(0020,0032)值,它们确实每片1毫米。那厚度是什么意思?
答案 0 :(得分:4)
扫描仪可以测量的最小切片厚度。并且相邻切片的测量位置之间存在距离。在创建图像时,扫描仪不必测量恰好一个厚度的下一个切片,它可以更少(使一些测量重叠)或更多(在测量中产生一些间隙)。对于相邻的体素中心,您需要间距。厚度是额外的信息,通常价值不大。
答案 1 :(得分:3)
切片是根据扫描仪获取的连续信号计算出来的。您可以将计算想象为整数或平均值。在数学模型中,切片厚度无限小,但是像素值是来自切片平面周围的长方体的信号的平均值。
因此,切片厚度和相邻切片之间的距离彼此无关,并且可以独立地变化。
我发现此图片非常具有说明性:https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSWyeGrs-Ojdhg6GCn7obLfQ3j94c_sD0Hy8Oe1A-HdO6OZ-7H- (不幸的是它很小)