MRI画像のスタックにCT画像のスタックを登録しようとしたときに、この変換行列をitk-snapから取得しました。洞察itk画像変換行列をmatwabのimwarpで使用される形式に変換する方法
T =
2.0523 -0.0277 0.1518 0
0..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で使うはずのTに変換する方法です。プロパティを持つあなたが情報を必要とする場合には
、
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]
ありがとうございます!
MATLABが対応できない 'T'マトリックスの問題点は何ですか?あなたの質問ではあまり明確ではありません。 – Adriaan
元のT行列の変換値を見れば、つまり、 270,280、Matlabは画像空間でそれをやっているので、明らかにあなたはMatlabでそれほど画像をずらす必要はありません。私は誰かが異なる座標系やitkとmatlabで使用されるパイプラインに精通しているのだろうかと思います。 –