簡體   English   中英

ITK / SimpleITK DICOM系列裝載順序錯誤/切片間距不正確

[英]ITK/SimpleITK DICOM Series Loaded in wrong order / slice spacing incorrect

這個問題出現在許多數據集中,但我們特別注意到在dicoms中的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圖像在兩個肺切片之間有腦切片

基本上,如果您使用SimpleITK.ReadImage或VTK讀取dicom,則該工具將以列表的順序(通常是字母順序)加載文件。 切片和文件之間的映射不是按字母順序,而是按隨機順序。 由於這是文件0和文件1之間的位置差,因此這會導致錯誤地計算“切片間距”(這些數據中缺少的標簽)。這還會導致大腦切片在兩個肺切片和其他奇怪的偽影之間出現。

解決方案是使用GetGDCMSeriesFileNames函數對文件進行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)

所以這是我一邊嘗試的方法:

$ 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倉庫中修復:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM