我正在研究车牌识别。问题是我必须消除二值图像中的字符倾斜,以提高模板匹配的准确性。
我已经做了很多预处理来删除图像中不必要的像素,并且我可以将字符分割出来。但不幸的是,它们是倾斜的。
从...转换为灰度到二进制
然后..预处理技术..
分割后..
从最后一张图像中可以看出,字符是倾斜的,这将导致执行识别目的的模板匹配不准确。
大多数研究人员都使用霍夫变换来执行去偏操作,但是有没有更简单的方法来做到这一点呢?
有一些方法可以解决这个问题。一些在匹配部分以避免unskew操作本身是这样的:
-
OCR 和字符相似度 https://stackoverflow.com/a/22879053/2521214
但你想要unskew so:
-
检测旋转角度/倾斜斜率
获取边界框,然后投射垂直扫描线并记住所有这些点的第一个击中点和最后一个回归线
-
通过它旋转/倾斜回来
所以要么使用atan2
获取角度或直接基于基向量(一是直线,二是其垂直向量)构造2D齐次3x3变换矩阵。欲了解更多信息,请参阅:
- 理解 4x4 齐次变换矩阵 https://stackoverflow.com/a/28084380/2521214
-
现在,旋转/未倾斜的图像仍将以低得多的速率倾斜花蕾
所以你可以申请#1,#2也在水平轴上,但这次你需要unskew仅(不使用旋转)。通常剩余偏斜率很小,因此这一步不是必需的。
[notes]
您可以通过过滤掉错误的点或仔细选择扫描线的起点来提高精度,以便它们击中字符的正确位置(您显然知道字符数)。
[编辑1] 小例子
这是图像输出的小示例(负数,因为我的函数需要白皮书和黑色字体):
正如您所看到的,旋转和倾斜要小得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)