将图像旋转回原始状态

时间:2012-05-01 04:52:09

标签: java image image-processing trigonometry image-rotation

我有一个程序,需要拍摄7x10网格的iphone(或任何类型的相机)拍摄的照片,边缘周围有厚黑色边框。这个图像可以向右或向左旋转接收(不需要担心歪斜)。我已经有一个原始状态的网格图像,但是我需要获取我正在拍摄的图像并将其旋转到“完美/原始”状态。

创意1:表现不佳/不良结果

阈值我收到的图片和我已经拥有的完美网格图像。比较每个像素0轮,获得总分,然后保存。这样做会将增量图像旋转1到359.最低分是我们将图像恢复到原始状态所需的旋转。

理念2:仍不确定如何执行此操作

阈值我收到的图片和我已经拥有的完美网格图像。垂直和水平地在图片中心画一条线。根据垂直和水平线通过的黑色像素数查找旋转。这需要某种三角函数,我不会理解这一点。

有没有人有任何其他想法让这个工作?

非常感谢帮助我指明正确方向的任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:2)

而不是绘制一条水平线和一条垂直线,而是绘制两条水平线(比如每条水平线的三分之一)。只查看这些行的左半部分,并计算每个行的路径上有多少个黑色像素(a1a2)。您还必须跟踪两条红线之间的距离,因此像素数d

Diagram of the problem, as I understand it

使用上图中的这种表示法,您想要的角度是:

alpha=atan2((a2-a1),d)

并且alpha的逆时针旋转将使图片的白色部分正确对齐。