0

因此,当我尝试将一堆 CT 图像配准到一堆 MRI 图像时,我从 itk-snap 得到了这个变换矩阵。

T =

2.0523   -0.0277    0.1518         0
0.0123    2.0405    0.3059         0
-0.1249   -0.2292    1.5095         0
270.7916  280.5018  148.7597    1.0000

现在我想在 Matlab 中使用 imwarp 进行注册,就像这样

Tform = affine3d(T);
CT_stack_warp= imwarp(CT_stack,Rmoving,Tform,'OutputView',Rfixed);

但问题是,一旦您向 Matlab 提供像素大小和切片厚度的信息,您就不需要按照 T 矩阵中的规定进行缩放或平移。我的问题是如何将原始 T 转换为应该在 Matlab 中使用的 TI。

如果您需要这些信息,

Rmoving = 

imref3d 具有以下属性:

       XWorldLimits: [0.2441 250.2441]
       YWorldLimits: [0.2441 250.2441]
       ZWorldLimits: [0.5000 185.5000]
          ImageSize: [512 512 185]
PixelExtentInWorldX: 0.4883
PixelExtentInWorldY: 0.4883
PixelExtentInWorldZ: 1
ImageExtentInWorldX: 250
ImageExtentInWorldY: 250
ImageExtentInWorldZ: 185
   XIntrinsicLimits: [0.5000 512.5000]
   YIntrinsicLimits: [0.5000 512.5000]
   ZIntrinsicLimits: [0.5000 185.5000]

Rfixed = 

imref3d 具有以下属性:

       XWorldLimits: [0.4063 260.4063]
       YWorldLimits: [0.4063 260.4063]
       ZWorldLimits: [0.7500 192.7500]
          ImageSize: [320 320 128]
PixelExtentInWorldX: 0.8125
PixelExtentInWorldY: 0.8125
PixelExtentInWorldZ: 1.5000
ImageExtentInWorldX: 260
ImageExtentInWorldY: 260
ImageExtentInWorldZ: 192
   XIntrinsicLimits: [0.5000 320.5000]
   YIntrinsicLimits: [0.5000 320.5000]
   ZIntrinsicLimits: [0.5000 128.5000]

谢谢!

4

1 回答 1

0

当前 ITK 索引到世界变换,以及它背后的一些背景。医学成像中使用的坐标系的补充说明。

WorldLimitsMatlab 中的判断来看,我猜想world origin在将图像读入 Matlab 时会忽略它。这使得由 ITK-SNAP(或其他正常运行的软件)计算的变换矩阵实际上毫无用处。

于 2016-11-30T14:06:35.450 回答