我有不同位置的脸部图像。我想旋转它们,使连接眼睛的线始终是水平的。但我不知道如何在MATLAB中做到这一点。
如何计算旋转角度?
问题描述图:
答案 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
来扭曲运动图像。