二进制图像中的偏斜字符

Won*_*ong 5 algorithm matlab image image-processing skew

我正在进行车牌识别.问题是我必须对二进制图像中的字符进行去偏斜以提高模板匹配的准确性.

我已经做了很多预处理来删除图像中不必要的像素,我可以将字符分割出来.但不幸的是,它们是扭曲的.

从...转换为灰度到二进制

在此输入图像描述

然后..预处理技术..

在此输入图像描述

分割后..

在此输入图像描述

如在最后一个图像中可以观察到的那样,字符是倾斜的,这将导致模板匹配的不准确性以执行识别目的.

大多数研究人员正在使用Hough变换来执行去偏移操作,但有更简单的方法吗?

Spe*_*tre 4

有一些方法可以解决这个问题。一些匹配部分以避免歪斜操作本身,如下所示:

但你想纠正这样的情况:

  1. 检测旋转角度/倾斜斜率

    获取边界框,然后投射垂直扫描线并记住所有这些点的第一个击中点和最后一个回归线

    算法概述

  2. 通过它旋转/倾斜回来

    因此,要么使用atan2获取角度,要么直接基于基向量(一个是直线,第二个是其垂直向量)构造 2D 齐次 3x3 变换矩阵。欲了解更多信息,请参阅:

  3. 现在,旋转/未倾斜的图像仍将以低得多的速率倾斜花蕾

    所以你也可以在水平轴上应用#1,#2 ,但这次你只需要取消倾斜(不要使用旋转)。通常剩余偏斜率很小,因此这一步不是必需的。

[笔记]

您可以通过过滤掉错误的点或仔细选择扫描线的起点来提高精度,以便它们击中字符的正确位置(您显然知道字符数)。

[编辑1] 小例子

这是图像输出的小示例(负数,因为我的函数需要白皮书和黑色字体):

例子

正如您所看到的,旋转和倾斜要小得多。