检测图像的旋转度

时间:2014-08-08 18:32:00

标签: opencv image-processing image-rotation

我正在opencv中执行一个项目来检测用户填写表单中的手写字符。我已经使用Hough Line Transform制作了检测扫描图像的倾斜角度的算法。但是当图像旋转180度时它不起作用,因为通过霍夫线函数将0和180度视为相同。我的图像包含一些矩形来填充其中的数据和一些文本。那么如何检测扫描图像是否旋转180度?

由于我必须首先校正图像的倾斜角度,然后我只能使用前面提供的空模板形式的矩形坐标来确切地检测用户填充数据(我需要提取)的图像上的位置,没有答案使用chacater识别表示赞赏。

5 个答案:

答案 0 :(得分:3)

为了解除180度的模糊度,只有OCR可以告诉你:对去偏斜的文本执行两次读取,一次使用给定的角度,另一次使用角度+ 180°,并保持最成功的读取。

除非您有一些先验信息,否则这是唯一的方法,因为其他图像处理操作不了解字符。

更新:

有些字符串永远不明确,例如0689HINOSXZ< => ZXSONIH6890。

如果文本的布局是已知的(框)和非对称的,检查文本字符串与布局的匹配是相对容易的:选择一个框(如最顶部)和一个字符串(最顶部) ,并通过翻译对齐;然后查看其他框和字符串如何匹配(使用最近邻居规则)并建立对应关系。将结果与直线和翻转布局进行比较,并保持最佳的重叠区域。

为了可靠性,最好不要尝试一个起始框/字符串对,因为最顶层可能会有一些歧义(甚至可能会丢失)。

答案 1 :(得分:0)

你的问题不是更普遍吗?假设您检测到倾斜角度为+45度并将图像旋转-45度。然后它可能仍然是图像旋转180度,因为它没有旋转+45度而是-135反而。

无论如何,对于实际问题:我不是角色识别方面的专家,但我认为如果你在你的应用程序中使用它,你不能只为两个轮换尝试角色识别,然后选择一个得到更强响应的角色?

答案 2 :(得分:0)

如果您将模板中的矩形与倾斜校正图像的矩形相匹配,您将能够获得正确的方向(但只有在这些矩形的位置没有对称性时) 。为了匹配,您可以使用模板中的矩形作为遮罩,从偏斜校正后的图像中提取区域。

修改

假设您的模板和倾斜校正后的图像看起来像这样(在最好的情况下,纠正了偏斜中的位移):

enter image description here enter image description here

然后,您可以使用模板作为蒙版来复制偏斜校正后的图像。然后检查复制图像中包含模板中白色像素的哪一部分。对于180度旋转图像,此值将非常低。

但正如你所说,由于流离失所,这在实践中是行不通的。然后,您可以尝试使用模板图像作为模板的模板匹配(互相关)。最强峰的位置和强度会给你一些方向的指示。您可以以降低的分辨率执行模板匹配,以便更快地运行。

答案 3 :(得分:0)

您可以尝试匹配扫描图像和空模板中的关键点(Harris,Sift,...)。使用匹配的点,您可以轻松找到转换以将扫描图像与模板对齐。这可能适用于您的情况,但如果图像中有一些纹理徽标,则您更有可能成功,因为表格通常就是这种情况。

答案 4 :(得分:0)

你能简单地计算两个互相关吗?一个180转,一个没有?具有匹配矩形的那个应该给你一个更高的相关最大值(假设剩余页面的图像对比度不是太误导,但是一些预过滤在这里可以帮助。)