许多数据集都会出现问题,但我们特别注意到
中的Soft-tissue-SarcomaSTS_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图像在两个肺切片之间有脑切片
答案 0 :(得分:1)
基本上,如果您使用SimpleITK.ReadImage或VTK读取dicoms,该工具将按照列表所在的顺序(通常按字母顺序)加载文件。切片和文件之间的映射不是按字母顺序排列,而是以随机顺序排列。这会导致切片间距(这些数据中缺少的标签)被错误地计算,因为它是文件0和1之间的位置差异。它还会导致脑切片在两个肺切片和其他奇怪的伪像之间出现。 / p>
解决方案是使用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)
答案 1 :(得分:0)
所以这就是我在我身边试过的:
$ 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-Spacing计算为3.3,而在这种情况下它应该真的是3.27。请报告上游的错误。
已在当前git存储库中修复: