首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ITK/SimpleITK DICOM系列加载顺序错误/切片间距错误

ITK/SimpleITK DICOM系列加载顺序错误/切片间距错误
EN

Stack Overflow用户
提问于 2016-12-08 18:41:09
回答 2查看 1.1K关注 0票数 0

这个问题出现在许多数据集上,但我们特别注意到了Soft-tissue-Sarcoma

代码语言:javascript
复制
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图像在两个肺切片之间有脑切片

EN

回答 2

Stack Overflow用户

发布于 2016-12-08 18:41:09

基本上,如果您使用SimpleITK.ReadImage或VTK读取dicoms,该工具将以与列表相同的顺序加载文件(通常是按字母顺序)。切片和文件之间的映射不是按字母顺序排列的,而是按随机顺序排列的。这会导致无法正确计算切片间距(这些数据中缺少的标签),因为它是文件0和1之间的位置差异。它还会导致脑切片在两个肺切片和其他奇怪的伪像之间出现。

解决方案是使用GetGDCMSeriesFileNames函数对文件进行预排序。

代码语言:javascript
复制
# 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
EN

Stack Overflow用户

发布于 2016-12-09 15:13:38

所以这是我在我这边尝试过的:

代码语言:javascript
复制
$ 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

然后我用以下命令检查输出文件:

代码语言:javascript
复制
$ 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库中修复:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41037407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档