1

MATLAB (R2010a) 中注册两个图像(Image1 和 Image2)后,我似乎无法弄清楚如何正确翻译。该算法已经过测试并可以与其他程序一起使用。以下是一些相关的片段。

TForm = maketform('affine', Transform);

info = imfinfo('Image1.bmp');

Reg = imtransform(Image1, TForm,...
           'XData', [1 (size(Image1,2)+Transform(3,1))],...
           'YData', [1 (size(Image1,1)+Transform(3,2))],...
           'FillValues', 255);

figure('Name', 'Reg'),...
imshow(Reg, 'InitialMagnification', 250);

imwrite(Reg, 'Reg.bmp', 'bmp');

hold on

H = imshow(Image2, gray(256));
set(H, 'AlphaData', 0.6)

当我将 Image1 注册到 Image1 时,不会发生这种情况,只有当我尝试将 Image1 注册到 Image2 时(或相反)。我用 C 编写的相同代码似乎工作正常。我相信这与我的imtransform功能有关。

好吧,我相信它必须与应用转换的方式有关。我用 Image1 直接注册到 Image1 (绕质心旋转 15 度),它没有做正确的转换。转换输出为:

Transform =

0.9676   -0.2557         0
0.2596    0.9694         0
32.7217  -25.5110    1.0000

如果我将它输入到图像注册程序中,它就可以正常工作。这是我刚刚做的示例图像,

奇怪的MATLAB注册示例

A = 原始图像,B = 旋转的原始图像,C = 变换的原始图像。

再次转换是正确的(使用 FMRIB's-FLIRT 注册软件测试)。MATLAB 在将其应用于图像时必须做一些不同的事情。

4

1 回答 1

1

旋转矩阵的符号相反。

于 2012-07-20T19:00:25.257 回答