这个问题出现在许多数据集上,但我们特别注意到了Soft-tissue-Sarcoma在
STS_004/1.3.6.1.4.1.14519.5.2.1.5168.1900.124239320067253523699285035604/1.3.6.1.4.1.14519.5.2.1.5168.1900.952127023780097934747932279670间距被读取为30而不是2.9,并且3D图像在两个肺切片之间有脑切片
发布于 2016-12-08 18:41:09
基本上,如果您使用SimpleITK.ReadImage或VTK读取dicoms,该工具将以与列表相同的顺序加载文件(通常是按字母顺序)。切片和文件之间的映射不是按字母顺序排列的,而是按随机顺序排列的。这会导致无法正确计算切片间距(这些数据中缺少的标签),因为它是文件0和1之间的位置差异。它还会导致脑切片在两个肺切片和其他奇怪的伪像之间出现。
解决方案是使用GetGDCMSeriesFileNames函数对文件进行预排序。
# noinspection PyPep8Naming
import SimpleITK as sitk
def safe_sitk_read(img_list, *args, **kwargs):
dir_name = os.path.dirname(img_list[0])
s_img_list = sitk.ImageSeriesReader().GetGDCMSeriesFileNames(dir_name)
return sitk.ReadImage(s_img_list, *args, **kwargs)发布于 2016-12-09 15:13:38
所以这是我在我这边尝试过的:
$ gdcm2vtk --lower-left --ipp-sort STS_004/1.3.6.1.4.1.14519.5.2.1.5168.1900.124239320067253523699285035604/1.3.6.1.4.1.14519.5.2.1.5168.1900.952127023780097934747932279670 /tmp/kmader.mha然后我用以下命令检查输出文件:
$ head -13 /tmp/kmader.mha
ObjectType = Image
NDims = 3
BinaryData = True
BinaryDataByteOrderMSB = False
CompressedData = False
TransformMatrix = 1 0 0 0 1 0 0 0 1
Offset = -250 -250 -5
CenterOfRotation = 0 0 0
ElementSpacing = 0.976562 0.976562 3.3
DimSize = 512 512 311
AnatomicalOrientation = ???
ElementType = MET_SHORT
ElementDataFile = LOCAL事实上,您是对的,GDCM计算的Z间距为3.3,而在这种情况下,它实际上应该是3.27。请上报上游的bug。
已在当前git库中修复:
https://stackoverflow.com/questions/41037407
复制相似问题