image - 二值图像中的去偏斜字符

标签 image algorithm matlab image-processing skew

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

我已经做了很多预处理来去除图像中不必要的像素,并且我可以将字符分割出来。但不幸的是,它们是有偏差的。

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

enter image description here

然后..预处理技术..

enter image description here

分割后..

enter image description here

正如在最后一张图片中所观察到的,字符是倾斜的,这将导致模板匹配执行识别目的时不准确。

大多数研究人员都使用霍夫变换来执行去偏斜操作,但是有没有更简单的方法来做到这一点?

最佳答案

有很多方法可以解决这个问题。一些在匹配部分避免像这样的 unskew 操作本身:

但是你想歪斜这样:

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

    获取边界框,然后转换垂直扫描线并记住穿过所有边界框的第一个命中点和最后一个回归线

    algo overview

  2. 旋转/向后倾斜

    所以要么使用atan2获取角度,要么直接基于基向量(一个是直线,第二个是它的垂直向量)构造二维齐次3x3变换矩阵。有关详细信息,请参阅:

  3. 现在旋转/反倾斜图像仍会以低得多的速率倾斜芽

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

[注释]

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

[edit1] 小例子

这里是你的图片输出的小例子(负面的,因为我的功能需要白纸和黑色字体):

example

如您所见,旋转和倾斜要小得多。

关于image - 二值图像中的去偏斜字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273251/

相关文章:

python - 在 numpy 中对大型 3D 图像进行下采样

c# - 如何使用 PictureBox 打开/关闭相机

matlab - 在 Matlab 轴中,如何在保持所有轴属性的同时只更新数据?

arrays - 正向替换打包数组

image - 如何使用 PIL 保存大图像?

javascript - 获取图像的来源并在单击时在新窗口中打开

python - 将动态c lib.so集成到python

在小屏幕上查看大容器的算法

java - 查找一周登录两次的用户

arrays - 在 MATLAB 中使用矩阵进行矩阵索引