我正在使用图像注册工具箱来注册两个 3D 图像。我将运动图像注册到固定图像。我使用“imregtform”来保存 tform。
tform = imregtform(moving,fixed,transformType,optimizer,metric)
例如,这是我的“tform”:
1.0235 0.0022 -0.0607 0
-0.0276 1.0002 0.0089 0
-0.0170 -0.0141 1.1685 0
12.8777 5.0311 -70.0325 1.0000
然后我使用“Imwarp”将运动图像转换为固定图像。在我的代码中,
nii=load_untouch_nii(['mypath image.nii' ]);
I = nii.img;
dii=nii.hdr.dime.pixdim(2:4);
Rfixed=imref3d(size(I),dii(2),dii(1),dii(3));
timg= imwarp(I, Rfixed, tform, 'OutputView', Rfixed);
'timg' 是源图像的传输图像。我检查了它,它工作正常,但我现在需要这个变换的控制点或位移场。换句话说,我需要知道每个体素(3d 像素)移动到哪个位置。如果我知道这一点,我可以绘制矢量场。在NiftyReg 包等可变形图像注册方法中,提供了控制点命令以方便用户使用,但我不知道如何在 Matlab 中的简单 3d 仿射中做到这一点。任何帮助将不胜感激