【问题标题】:Image translation in MATLABMATLAB 中的图像翻译
【发布时间】: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”。
  • 啊,我想通了,我的旋转矩阵的符号颠倒了。多么愚蠢的问题,但非常感谢您的投入和时间,我很感激。
  • 呵呵,愚蠢的错误往往是最难找到的。

标签: matlab image-processing


【解决方案1】:

旋转矩阵的符号颠倒了。

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多