MATLAB中的图像翻译

时间:2012-07-17 16:27:23

标签: matlab image-processing

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(围绕center of mass旋转了15度),并且没有进行正确的转换。转换输出是:

Transform =

0.9676   -0.2557         0
0.2596    0.9694         0
32.7217  -25.5110    1.0000

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

Example of strange MATLAB registration

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

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

1 个答案:

答案 0 :(得分:1)

旋转矩阵的符号相反。