我在DICOM中有一些4维MR数据。第四维可以是时间,DWI中的b值或其他任何值。如何确定我在第四维中有多少个切片和几个序列? 例如,我有400张图像。如何确定是否有100个序列和4个切片,反之亦然?
编辑: 我已经通过检查切片的位置弄清楚了。如果给定位置重复,则增加堆栈数。我的Python代码如下:
def getNumOfStacks(self, someImage):
sliceDict = dict()
for n in range(0, someImage.ImagesInAcquisition):
location = pydicom.dcmread(self.path+self.fileList[n]).SliceLocation
if location in sliceDict:
sliceDict[location] = sliceDict.get(location) + 1
else:
sliceDict[location] = 1
return list(sliceDict.values())[0]
答案 0 :(得分:2)
唯一的方法是检查每个单个实例的SeriesInstanceUID
(标记号0020,000e
)的值。
根据所使用的工具,解决方案可能会有所不同。例如,如果您有dcmtk
或gdcm
,那么在bash中将是这样的:
find /path/to/dicom/files -exec dcmdump "{}" 2>/dev/null ";" | grep SeriesInstanceUID |sort -u
如果您使用gdcm
,则将gdcmdump
放在上面的dcmdump
上。
答案 1 :(得分:2)
DICOM中的MRI图像具有两种不同的风格:
对于这两者,就像Bartlomiej所写的那样,系列实例UID可用于确定哪个切片属于同一系列,并且通常一个系列代表一堆图像。
对于增强型MR,引入了堆栈的概念。也就是说,单个DICOM对象(“文件”)包含多个帧(“图像”),这些帧可以细分为堆栈。在“每帧功能组序列”(5200,9230)中,您可以找到特定于各个帧的属性。在这种情况下,您应该阅读堆栈ID(0020,9056)和堆栈中位置编号(0020,9057),以分隔堆栈并在堆栈中对切片进行排序。