DICOM:如何对不同来源的多模态数据进行重采样?

DICOM: how to resample multi modality data with different origins?

我有 1 个对象的 2 组 DICOM 图像数据,包括同时拍摄的 PET 扫描和 CT 扫描。 The Frame of Reference UIDs 不同,我认为这意味着它们的参考来源不同。以至于无法比较'Image Position Patient'标签。

我想做的是对两幅图像重新采样,使它们的空间维度和像素维度相等。这项任务看似相对简单,但事实上它们的来源不同。

Download link for data

  • 任何两张图片AB被认为代表相同的object,注册是为 A 中的每个像素/地标识别 B 中的等效像素/地标的行为。

  • 假设AB中的每个像素都可以嵌入坐标系中,配准通常需要变换 A使得经过变换后,A[中每个像素的坐标=105=] 与 B 中的等效像素重合(即 objective 是两个 object 在该坐标 space 中的重叠)

  • isometric 变换是 A 中任意两个像素之间的距离与B 中的等效两个像素在应用转换后不会改变。例如,space 中的旋转、反射(即镜像)和平移(即在特定方向上移动 object)都是等距变换。仅应用等距变换的配准算法被称为 rigid.

  • 仿射 变换类似于等距变换,除了可能还涉及 缩放(即 object 也可以 增大 缩小 大小。

  • 医学影像学如果AB是在不同的时间,极不可能 变换是简单的仿射变换或等距变换。例如,假设在扫描 A 期间,患者将手臂放在身体两侧,而在扫描 B 期间,患者将手臂举过头顶。没有 A 的严格配准会导致与 B 完美重叠,因为等效点之间的距离已经改变(例如 head-to-hand,和 hand-to-foot 在每种情况下)。因此,需要使用更精细的 non-rigid 注册算法。

  • 在您的案例中 AB 是在同一扫描过程中 获得的事实session in the same machine 意味着可以合理地假设转换将是一个简单的仿射转换。 IE。您可能只需要旋转和平移 object 一点;如果 A 的坐标系比 B 的 'denser',您可能还需要稍微扩大/缩小它。但仅此而已,不需要奇怪的 'warping' 来补偿扫描 AB 之间发生的 'movement' , 因为它们是同时发生的。

  • 一个 3D 向量,表示一个 'magnitude and direction' in 3D space 可以使用 3x3 转换矩阵 T[=105= 转换为另一个 3D 向量].例如,如果将变换 应用于向量 (使用矩阵乘法),则生成的向量 u 为 。换句话说,'new' x-coordinate 以转换矩阵指定的方式取决于旧的 x、y 和 z 坐标,新的 y 和新的 z 坐标也类似。

  • 如果同时对三个向量应用3x3变换T,你会得到三个转换后的向量。例如对于 v = [v1, v2, v3] 其中 v1 = [1; 2; 3], v2 = [2; 3; 4], v3 = [3; 4; 5],则 T*v 将 给你一个 3x3 的矩阵 u,其中每一列对应一个 x,y,z 坐标的变换向量。

  • 现在,考虑变换矩阵 T 是未知的,我们想要发现它。假设我们有一个已知点 并且我们知道在变换之后它变成了一个已知点 。我们有:

    考虑第一行;即使你知道 pp',也应该清楚你不能从一个点确定 a、b 和 c。你有三个未知数,只有一个方程。因此,要求解 a、b 和 c,您至少需要一个包含三个方程的系统。其他两行也是如此。因此,求变换矩阵T需要三个已知点(变换前后)

  • 在matlab中,您可以通过键入T = u/v来求解其中T*v = u这样的方程组。对于 3x3 变换矩阵 T,u 和 v 需要包含至少 3 个向量, 它们可以包含更多(即方程组过多)。您传入的向量越多,从数值角度来看,变换矩阵就越准确。但理论上你只需要三个。

  • 如果您的转换还涉及 translation 元素,那么您需要执行您发布的图片中描述的技巧。 IE。您将 3D 向量 [x,y,z] 表示为 homogeneous-coordinates 向量 [x,y,z,1]。这使您能够在转换矩阵中添加第 4 列,从而为每个点生成 'translation',即在新的 x'、y 中添加一个额外的值和 z' 系数,它与输入向量无关。由于平移系数也是未知的,您现在有 12 个而不是 9 个未知数,因此您需要 4 个点来求解这个系统。即

总结一下:

要将图像 A 转换为与 B 占据相同的 space,请将 A 的坐标解释为与B在同一个坐标系中,在两者中找到四个等价的界标,并通过使用/右矩阵除法算子求解该方程组,得到一个合适的变换矩阵,如上。然后你可以使用你找到的这个转换矩阵T,将A中的所有坐标(表示为齐次坐标)转换为新的