2

我正在使用 Matlab 的 imregtform() 函数将两个 3D MRI 图像相互配准。我知道这两个图像都通过围绕图像中心的旋转相关联,并且正在使用“刚性”变换类型来执行配准。但是,生成的变换具有很小但非零(小于 0.5 像素)的平移分量。有没有办法指定翻译应该完全为零?如有必要,我愿意使用Matlab之外的其他工具。

4

1 回答 1

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,...);

希望这可以帮助

于 2018-08-30T22:36:15.153 回答