【问题标题】:Calculate image rotation based on old and new positions of two points根据两点的新旧位置计算图像旋转
【发布时间】:2014-04-14 20:39:19
【问题描述】:

我有不同位置的面孔图像。我想旋转它们,使连接眼睛的线始终是水平的。但我不知道如何在 MATLAB 中做到这一点。

我如何计算旋转角度?

问题描述图:

【问题讨论】:

  • 自动化?还是你只有几个案例,点一下眼睛就可以了?
  • 你有图片处理工具箱吗?
  • 我有大约.. 200 张图片。我手动点击所有图像的眼睛,并将这些信息保存在一个结构中。所以现在,有了眼睛位置的信息,我必须旋转图像,使其全部处于水平状态。是的,我有处理工具箱^^

标签: matlab face-recognition image-rotation


【解决方案1】:

由于您似乎拥有图像处理工具箱,因此您还可以查看内置的基于地标的注册函数(特别是如果您的变换不限于纯旋转),特别是 cpselect,其语法如下:

cpselect(moving,fixed)

然后用fitgeotrans构造几何变换,用imwarp扭曲运动图像。

【讨论】:

    【解决方案2】:

    如果你已经有了眼睛的位置,那就很简单了:)这是一个大纲:

    %//    left eye - right eye
    pos = [  30          90    %// X
             80          40];  %// Y 
    
    %// The angle equals the arctangent of dy/dx
    angle = atan2(diff(pos(2,:)), diff(pos(1,:)));
    
    %// Rotate in the opposite direction 
    img = imrotate(img, -angle);
    

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 2014-11-18
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      相关资源
      最近更新 更多