【发布时间】:2012-07-17 16:27:23
【问题描述】:
在MATLAB (R2010a)(Image1 和 Image2)中注册两个图像后,我似乎无法弄清楚如何正确翻译。该算法已经过测试并可以与其他程序一起使用。以下是一些相关的 sn-ps。
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
如果我将它输入到图像注册程序中,它就可以正常工作。这是我刚刚做的示例图像,
A = 原始图像,B = 旋转的原始图像,C = 变换的原始图像。
再次转换是正确的(使用 FMRIB's-FLIRT 注册软件测试)。 MATLAB 在将其应用于图像时必须做一些不同的事情。
【问题讨论】:
-
我认为您需要更准确地指定您的问题是什么。翻译有什么问题?也许您可以提供一些示例图像。目前我真的不明白问题是什么,这很难帮助你。
-
这可能是一个愚蠢的问题,但是如何将图片上传到线程中?我似乎无法弄清楚这一点。
-
编辑问题时,只需按文本框上方的图像图标,或按“ctrl + G”。
-
啊,我想通了,我的旋转矩阵的符号颠倒了。多么愚蠢的问题,但非常感谢您的投入和时间,我很感激。
-
呵呵,愚蠢的错误往往是最难找到的。