我正在研究车牌识别。问题是我必须对二进制图像中的字符进行校正以提高模板匹配的准确性。
我已经做了很多预处理来去除图像中不必要的像素,并且我可以将字符分割出来。但不幸的是,它们是有偏差的。
从...转换到灰度到二进制
然后..预处理技术..
分割后..
正如在最后一张图片中所观察到的,字符是倾斜的,这将导致模板匹配执行识别目的时不准确。
大多数研究人员都使用霍夫变换来执行去偏斜操作,但是有没有更简单的方法来做到这一点?
最佳答案
有很多方法可以解决这个问题。一些在匹配部分避免像这样的 unskew 操作本身:
但是你想歪斜这样:
检测旋转角度/倾斜斜率
获取边界框,然后转换垂直扫描线并记住穿过所有边界框的第一个命中点和最后一个回归线
旋转/向后倾斜
所以要么使用
atan2
获取角度,要么直接基于基向量(一个是直线,第二个是它的垂直向量)构造二维齐次3x3变换矩阵。有关详细信息,请参阅:现在旋转/反倾斜图像仍会以低得多的速率倾斜芽
所以您也可以在水平轴上应用#1,#2,但这次您只需要倾斜(不要使用旋转)。通常剩余偏斜率很小,因此不需要此步骤。
[注释]
您可以通过过滤掉错误的点或通过仔细选择扫描线的起点使它们命中字符的正确位置来提高精度(您显然知道字符数)。
[edit1] 小例子
这里是你的图片输出的小例子(负面的,因为我的功能需要白纸和黑色字体):
如您所见,旋转和倾斜要小得多。
关于image - 二值图像中的去偏斜字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273251/