如何在Matlab中自动旋转图像?

时间:2013-10-24 09:30:03

标签: matlab image-processing rotation

目前,我正在进行离线签名验证。所以,我现在要做的是找到特定签名图像的特定旋转值。在这种情况下,我想将签名的基线与水平轴一起标准化:

我试过做一些编码,

v1(1) = column2 - column1;
v1(2) = row2 - row1;
v2(1) = column2 - column1;
v2(2) = row1 - row1;
x1 = v1(1);
y1 = v1(2);
x2 = v2(1);
y2 = v2(2);

dotproduct = (x1*x2 + y1*y2);

v1mag = sqrt(x1*x1 + y1*y1);
v2mag = sqrt(x2*x2 + y2*y2);

costheta = dotproduct/(v1mag*v2mag);
angle = acos(costheta);

angleDeg = rad2deg(angle);
angleDeg = uint8(angleDeg);
angleDeg

%B = imrotate(invImg,-(angleDeg),'bilinear');

从编码中可以看出,变量'angleDeg'保存旋转角度的值。以前,我使用过imrotate()MATLAB,但问题是我必须手动输入角度值而不是调用'angleDeg'变量。有没有其他方法/算法通过调用保存imrotate()旁边的角度值的变量来旋转图像?

1 个答案:

答案 0 :(得分:0)

为什么需要手动输入角度?为什么要将angleDeg投射到uint8?

顺便说一下,函数regionprops可以给出二进制图像中连通分量的“方向”,即。即组件主轴与水平轴之间的角度。