根据两点的新旧位置计算图像旋转

时间:2014-03-11 09:59:34

标签: matlab face-recognition image-rotation

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

如何计算旋转角度?

问题描述图:

enter image description here

2 个答案:

答案 0 :(得分:3)

如果你已经拥有眼睛的位置,那么很容易:)这是一个大纲:

%//    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);

答案 1 :(得分:1)

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

cpselect(moving,fixed)

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