【问题标题】:Align two Dicom series对齐两个 Dicom 系列
【发布时间】:2019-01-25 17:26:50
【问题描述】:

我对 CT 图像世界完全陌生。所以提前谢谢你 我有两个同一个病人的 dicom 系列。 对于这两个系列,第一个切片信息是

Series 1 
'ImagePositionPatient',
['-205.0966796875', '-384.0966796875', '-1496.5']
'Pixelspacing',['0.806640625', '0.806640625']
slice Thickness' 2mm
Image Orientation (Patient)['1', '0', '0', '0', '1', '0']

Series 2
'ImagePositionPatient', 
['-171.650390625', '-356.650390625', '-1099.7']
'Pixelspacing', ['0.69921875', '0.69921875']
'slice Thickness', 2mm
Image Orientation (Patient)['1', '0', '0', '0', '1', '0']
In both series slices are of  512*512 in size

。 我想在系列 1 上重叠系列 2。

但根据我的理解,要重叠它们必须共享相同的坐标。像素间距和文件数量也存在差异。所以我的问题是:

  • 如何重叠两个系列?

  • 如何匹配索引。因为两个系列都有不同数量的切片。 例如,在系列 1 中,切片索引为 220 或 Z 值为 -976,如何获取系列 1 的特定切片的 Z 值或系列 2 中的索引?

我正在使用 pydicom python 包。任何示例代码或处理这个问题的想法都会很棒:)

编辑:我正在使用的 sitk.resample 代码

def resample_image(self,itk_image, ref_imge, is_label=False):
        original_spacing = itk_image.GetSpacing()
        original_size = itk_image.GetSize()
        out_spacing = ref_imge.GetSpacing()
        out_size = ref_imge.GetSize()
        resample = sitk.ResampleImageFilter()
        resample.SetOutputSpacing(out_spacing)
        resample.SetSize(out_size)
        resample.SetOutputDirection(itk_image.GetDirection())
        resample.SetOutputOrigin(ref_imge.GetOrigin()) 
        resample.SetTransform(sitk.Transform())
        resample.SetDefaultPixelValue(itk_image.GetPixelIDValue())

        if is_label:
            resample.SetInterpolator(sitk.sitkNearestNeighbor)
        else:
            resample.SetInterpolator(sitk.sitkLinear)#sitkBSpline)

        return resample.Execute(itk_image)

【问题讨论】:

  • 你可能想看看这个问题:stackoverflow.com/questions/36996353/…
  • @kritzel_sw 感谢您的链接。我读过了。我试图构建转换矩阵但仍然失败。您能否制定如何为给定场景构建转换矩阵。非常感谢。

标签: dicom pydicom simpleitk


【解决方案1】:

听起来您想将一张图像重新采样到另一张图像上,以便它们具有匹配的像素尺寸和大小。如果是这样,您可以使用 ResampleImageFilter 或 Resample 函数。这是他们的文档页面。

过滤器: https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1ResampleImageFilter.html

功能: https://itk.org/SimpleITKDoxygen/html/namespaceitk_1_1simple.html#ab02a58cf3633d810fac5821749b49a74

基本思想是建立一个图像的图像坐标系,然后告诉Resample使用该系统对另一张图像进行采样。

【讨论】:

  • 非常感谢您的回复。 1. 实际上我确实使用了sitk.resample 过滤器。但我不确定我是否正确使用它。添加代码,请查看。 2. 还有一个问题是,用一个参考图像重新采样所有图像是否足够?因为我不知道如何将具有 485 个文件的系列的 Z 值或切片数与具有 160 个文件的另一个系列相匹配。
  • 就 Z 切片而言,您需要将一系列图像读入单个 3d 图像。您将为这两个系列执行此操作以生成 3d 图像。因此,您可以将源 3d 图像重新采样到目标 3d 图像上。
  • 但是,1. 如果我只使用单个切片作为我想要重新采样的所有切片的参考,可以吗? 2. 如何关联两个系列之间的 idex 或 Z 值?因为这样我必须事先重新采样所有图像。然后没有办法区分系列 1 中的哪一个实际上与系列 2 相关。因为最后我需要 20-30 片才能在两个系列之间重叠。
  • 戴夫,但是如果我将源图像重新采样为目标 3D 图像,那么源 3D 图像的数据不会丢失吗??我的意思是源数据将填充参考数据?请纠正我,如果我错了。最后我会计算骰子系数。
  • @g_uint 你是对的。欢迎您的评论 :) 有时,动手帮助就像破冰船一样。
猜你喜欢
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多