dicom - 查找在同一扫描 session 中获取的两个 MR 数据集的相同切片位置的坐标 (mm)

标签 dicom image-registration mri

我有两次 MR 采集,其中第一个是 3D 采集 (1x1x1 mm3),第二个是 2D 采集(2.24 x 2.24 x 5.00 mm,轴向切片)。高分辨率数据集是全头 3D 采集,如果沿轴向重新切片(采集中方向最初为矢状),则可提供 176 个切片。 2D 采集仅包含 3 个轴向切片,这些切片被选择用于针对大脑中的特定区域并连续采集。

假设对象在扫描之间没有移动并且这些数据集是在同一扫描 session 中获取的,是否可以知道 3D 高分辨率数据集中的哪些切片与 2D 数据集中的 3 个切片准确对应? 我正在查看这两个数据集的 dicom,并尝试使用 ImageOrientationPatient 和 ImagePositionPatient 标签来尝试准确找出 2D 扫描中切片相对于磁铁等中心点的坐标。这样我就可以知道 2D 采集中第一个切片相对于磁体等角点的确切坐标,并假设两个扫描共享相同的原点,然后我可以准确地知道坐标对应于 3D 扫描中的哪个轴向切片? 我面临的问题是,两次采集的 ImageOrientationPatient 矢量都不同,因为高分辨率是通过矢状方向规范获取的(尽管是 3d 并且可以获取任何方向的切片),而 2D 数据是专门作为轴向切片获取的。

有 dicom 处理经验的人可以告诉我如何链接这两个扫描吗?由于这是相同的扫描 session ,我假设这两次采集的引用位置应该相同。这是正确的吗?

最佳答案

仅当所有图像均在一次扫描中拍摄时,ImagePositionPatient 才能可靠地引用相同的坐标系。不幸的是,没有“对患者进行校准”来确保特定坐标始终引用同一患者的相同位置。

假设您的扫描就是这种情况,那么任务非常简单。每次扫描的完整几何形状由以下定义:

  • ImagePositionPatient (0020,0032) - 每个切片的左上角像素的坐标
  • ImageOrientationPatient (0020,0037) - 每个切片的方向向量,即像素行和列对齐的轴

  • PixelSpacing (0028,0030) - 每个像素的高度和宽度(是的,y 维度首先出现!)

既然您精确地知道了两次扫描中每个切片的每个像素的位置,剩下的任务就是在 3D 扫描的维度中表达 2D 扫描的左上角像素。我会使用坐标变换来做到这一点,但其他方法也可以。

关于dicom - 查找在同一扫描 session 中获取的两个 MR 数据集的相同切片位置的坐标 (mm),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36996353/

相关文章:

c# - DICOM库-支持所有DICOM传输语法

python - 通过 Nibabel 加载 Nifti 并使用形状函数

ruby - MRI 优于 JRuby 的典型工作负载示例有哪些?

dicom - 免费的Pacs服务器

python - 如何使用 pyDicom 替换同一 DICOM 文件中的像素数据以使用任何 DICOM 查看器再次读取它?

python - 计算圆和直线的变换

Python 在 "SystemExit: 1"上引发异常 "sys.exit ( 1 )"

ruby - Ruby 基准测试如何计算线程内的总 CPU 时间

linux - Octave 4.0.1 octave forge dicom 包在安装 openSUSE linux 时出现 fatal error