我正在使用Matlab的imregtform()函数将两个3D MRI图像相互配准。我知道两个图像都是围绕图像中心旋转而关联的,并且正在使用“刚性”变换类型来执行配准。但是,生成的转换具有较小但非零(小于0.5像素)的平移分量。有什么方法可以指定转换应完全为零吗?如有必要,我愿意使用Matlab之外的其他工具。
答案 0 :(得分:0)
我认为转换是基于基准标记的,对吗?计算最小二乘刚性变换的过程如下:首先计算最小二乘旋转矩阵(R),然后使用R缩放因子(s),最后使用R和s转换向量(t)。> 令fid1和fid2为其各自MRI的基准标记的xy坐标。然后将翻译向量计算为:
t = mean(fid1) - s*R*mean(fid2)
请注意,选择基准标记的平移为零时,您必须具有绝对完美的准确性。
但是,由于R和s的估计不依赖于t,因此您可以自由地删除转换后的翻译。要删除翻译,请执行以下操作:
tform = imregtform(....)
% Set the last row except the last element of the transformation
% matrix to zero. This removes the translation.
tform.T(end,1:end-1) = 0;
% Register the two images
movingRegistered = imwarp(...,tform,...);
希望这会有所帮助