DICOM:如何重新采样具有不同来源的多模态数据?

时间:2017-03-07 19:33:59

标签: matlab image-processing dicom resampling image-registration

我有2套DICOM图像数据用于1个对象,包括同时拍摄的PET扫描和CT扫描。参考框架UID是不同的,我认为这意味着它们的参考起源是不同的。因此,“图像定位患者”#39;标签无法进行比较。

我想要做的是对两个图像进行重新采样,使其空间尺寸相等且像素​​尺寸相等。这项任务似乎相对简单,但因为它们的起源不同。

Link to sample image of data (most inferior slice in each case): Download link for data

1 个答案:

答案 0 :(得分:1)

  • 对于任何两个图像 A B 被视为代表相同的对象,注册是识别A中每个像素/地标的行为等效像素B中的/具有里程碑意义。

  • 假设 A B 中的每个像素都可以嵌入到坐标系中,注册通常需要转换 转换后, A 中每个像素的坐标与 B 中的等效像素的坐标一致(即目标是在坐标空间中重叠两个对象)

  • 等距转换是 A 中任意两个像素之间的距离,以及 B中等效的两个像素之间的距离不会更改。例如,空间旋转,反射(即镜像)和平移(即,使物体沿特定方向移动)都是等距变换。仅应用等距变换的注册算法被认为是刚性

  • 仿射转换类似于等距转换,但 scaling 也可能涉及(即对象也可以成长缩小的大小。)

  • 医疗影像中如果 A B 在不同时间获得,则非常不可能转型是简单的仿射或等距转换。例如,假设在扫描 A 期间,患者的手臂向下侧,并且在扫描 B 时,患者将手臂放在头上。没有严格的 A 注册会导致与 B 的完美重叠,因为等效点之间的距离已经改变(例如,头对手和手之间的距离)每种情况下的脚步)。因此,需要使用更精细的非刚性配准算法。

  • 在您的情况下 A B 在同一台计算机上的同一扫描会话中获得的事实意味着它& #39;一个合理的假设,即变换将是一个简单的仿射变换。即你可能只需要旋转并稍微翻译一下物体;如果A的坐标系是“密集的”。比B,你可能还需要增长/缩小一点。但那就是它,没有奇怪的翘曲'将有必要弥补运动'在扫描 A B 之间发生,因为它们同时发生。

  • 一个3D矢量,表示一个'幅度和方向'在3D空间中,可以使用3x3变换矩阵 T 将其转换为另一个3D矢量。例如,如果将变换][应用于向量][(使用矩阵乘法),则结果向量u为][。换句话说,' new' x坐标以变换矩阵指定的方式依赖于旧的x,y和z坐标,对于新的y和新的z坐标也是如此。

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

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

    ][

    考虑第一行;即使您知道 p p' ,也应该清楚您无法从单个点确定a,b和c。你有三个未知数,只有一个方程式。因此,要求a,b和c,至少需要一个由三个方程组成的系统。这同样适用于其他两行。因此,要找到变换矩阵T,您需要三个已知点(变换前后)。

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

  • 如果您的转换还涉及翻译元素,那么您需要执行您发布的图片中描述的技巧。即您将3D矢量[x,y,z]表示为齐次坐标向量[x,y,z,1]。这使您可以在转换矩阵中添加第4列,从而实现“翻译”。对于每个点,即在新的x',y'中添加额外的值。和z'系数,与输入矢量无关。由于平移系数也是未知的,你现在有12个而不是9个未知数,因此你需要4个点来解决这个系统。即][

总结:

要转换图像 A 以占据与 B 相同的空间,请将A的坐标解释为与B在同一坐标系中,找到4个等效坐标系两者中的地标,并通过使用A右矩阵除法算子求解该方程组,获得如上所述的合适的变换矩阵。然后,您可以使用此找到的变换矩阵T,将{{1}}中的所有坐标(表示为齐次坐标)转换为新坐标。