【问题标题】:How to know rotation degree in matlab for a rotated image?如何在matlab中知道旋转图像的旋转度?
【发布时间】:2013-09-09 17:45:51
【问题描述】:

我想:

  • 步骤 1) 使用此代码 rotatedImage = imrotate(originalImage, 20); 将图像旋转 20 度。

  • 第 2 步)计算第 1 步中使用的旋转度数,如果可能,仅基于旋转后的图像或基于旋转后的图像和原始图像。

matlab 中是否有任何函数可以执行第 2 步或执行此操作的命题?

【问题讨论】:

标签: matlab image-processing octave


【解决方案1】:

此示例显示了执行第 2 步的一种方法:

A = 'peppers.jpg';
img = im2double(imread(A));
img_r=imrotate(img,20,'nearest','crop');   % <-- this is the distorted image
                                           %     rotated 20 deg

xopt = fminsearch(@(x) imr(x,img_r,img), 10);  % <-- start with 10 deg as guess

imr 是函数

function obj= imr(x,img1,img2);
img1_r = imrotate(img1,x,'nearest','crop');
obj = sum((img2(:)-img1_r(:)).^2);

函数包装imrotate,生成一个目标函数以最小化,以便fminsearch可以使用。

这显示了原始、扭曲和反转的图像(角度如上确定):

注意限制:旋转图像被裁剪,以便在计算目标函数期间可以进行逐点比较。 这可能不是绝对最好的方法,因为我想有一些形态算法旨在以更一般的方式回答您的特定问题。仍然有效。

【讨论】:

    【解决方案2】:

    您可能想查看this。我曾使用傅立叶-梅林变换来检索旋转。它的精确度高达 1 度。我认为您将不得不投入一些时间 + 不要忘记查看有关 Fourier-Mellin 变换的一些论文

    【讨论】:

      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 2017-03-07
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      相关资源
      最近更新 更多