车牌识别LPR(八)-- 字符识别

​第八篇:字符识别

  车牌定位、车牌倾斜校正、车牌字符分割都是为车牌字符识别做的前提工作,这些前提工作直接关系到车牌识别系统的性能。车牌字符识别是车牌识别系统的核心部分,车牌字符识别的准确率是衡量车牌识别系统的一个很重要的指标。

  一般字符识别的方法就是采用模式识别方法,简单的来说模式识别就是先通过提取输入模板的特征,然后通过模板的特征对样本进行分类,从而识别出样本。模式识别主要包括:数据采集、预处理、特征提取、特征匹配,其结构框架如图:

  字符识别是模式识别的一个重要应用,首先提取待识别字符的特征;然后对提取出来的特征跟字符模板的特征匹配;最后根据准则判定该字符所属的类别。不同的训练方法,不同的特征提取, 不同的匹配规则,就相应的有不同的字符识别方法,基本上很多就是在这些地方做改进,或者是采用新的规则。但是万变不离其宗。

(1)模板匹配字符识别算法。

  模板匹配字符识别算法是图像识别中的经典算法之一,该算法的核心思想是:通过比较待识别字符图像的字符特征和标准模板的字符特征,计算两者之间的相似性,相似性最大的标准模板的字符即为待识别的字符。该方法首先要建立标准模板库,其中标准模板库中的字符的大小是一样的;然后将待识别的字符规格化,其大小应该和模板库中的字符一样;最后将待识别的字符和标准模板库中的所有字符进行匹配,计算相似度。模板匹配字符识别算法适用于印刷字体、字体规范的字符等,但是对字符变形、弯曲、字符旋转等情况的抗干扰能力差。

(2)神经网络字符识别算法

  主要思想是:通过神经网络学习大量字符样本,从而得到字符的样本特征。当对待识别的字符进行识别时,神经网络就会将待识别字符的特征和之前得到的样本特征匹配,从而识别出字符。该算法主要利用神经网络的学习和记忆功能。神经网络虽然有其优点,但是由于采用神经网络识别字符依赖于初始的样本的选择,并且容易陷入局部最优和收敛速度慢,因此采用神经网络识别字符的算法仍需要改进。

(3)支持向量机

  主要思想:同上,都是先得到样本特征,进行训练,然后再分类。SVM应该算是用的的最多的分类方法,一般大多适合于二分类问题,在这里就需要使用多分类器来构造。

字符识别步骤:

1、归一化

  主要包括位置归一化和大小归一化。由于本文处理的车牌字符都是标准的印刷体字符,且都进行过倾斜校正,所以不需要对其进行位置归一化。但由于摄像距离大小不一样,导致拍摄到的车辆图像中的车牌字符大小不一,为了达到更好的识别效果,就需要对分割出来的单个车牌字符进行大小归一化。常用的归一化方法有两种:一种是将字符图像的外边框按比例线性放大或缩小到规定尺寸;另一种是根据水平和垂直两个方向像素的分布进行大小归一化。一般用第一种。当映射到原图像的点的坐标不是整数,即位于几个像素之间,这就需要利用插值算法来决定该像素的值。使用常见的双线性插值法。将图像归一化为32*64的。

2、特征

根据上一篇的介绍,采用LBP特征来识别汉字,均匀网格特征来识别字母和数字。

3、分类器

  SVM作为分类器。支持向量机的原理,其所涉及到的数学知识比较复杂,自己编程实现的话有一定难度。采用现成的支持 SVM 的工具箱,公认做的比较好的是*大学林智仁(Chih-Jen Lin)教授开发的 LibSVM,支持 SVM 的各种算法,可以解决回归和分类识别问题。LibSVM 不但提供了 Windows 系统的可执行文件,还提供了 C 语言的源代码,方便科研工作者根据自己的需要进行改进,而且还提供了 Java、Matlab、C#、Ruthon 等语言的接口。当然可以直接调用opencv中的SVM工具。

  汉字的笔画很稠密,字符分辨率非常低:如果对车牌汉字字符进行二值化,将会丢失汉字的很多重要的结构信息,产生不必要的噪声,导致笔画断裂和笔画粘连等。

4、二次识别

  总的来说,单个字符的识别率比较高,容易识别错的主要是相近字符,解决这类问题的最佳办法就是二次识别。将相似字符中的一个识别出来后,便能确定其属于哪一类相近字符类别,利用区分相近字符的细节特征,将这个字符到专门识别这类相近字符的分类器中进行二次识别。车牌字符中相近字符主要有5类,分为为“0”、“D”、“Q”,“B”、“8”,“2”、"Z",“5”、"S"和“A”、“4”。

  (1) “0”、“D、“Q”

  从字符图像中可以看出,它们的区分在左侧和右下角,其中“D”的左边为直线,黑色像素点较多,而“0”和“Q”的左边均为弧线,黑色像素点相对较少;字符“Q”的右下角的笔画丰富,黑色像素较多。具体局部特征如图5.9:

车牌识别LPR(八)-- 字符识别

  (2)“B、8“

  它们的区别在字符的左侧,“8”的左侧为弧线,而“B”的左侧为直线。具体局部

车牌识别LPR(八)-- 字符识别

  (3) “2、Z"

  它们的区别在字符的上方,“2”的上方为弧线,“Z”的上方为直线,具体局部特征

车牌识别LPR(八)-- 字符识别

  (4)“5、S"

  它们的区别在字符的上半部分,“5”的上半部分中,上方和左侧均为直线,而"S”的上半部分为弧线。

车牌识别LPR(八)-- 字符识别

  (5)“A、4"

  由于存在倾斜等情况,仅仅通过基本特征会出现误识别,它们的区别在左下角。

车牌识别LPR(八)-- 字符识别

上一篇:Linux各主要发行版的包管理命令对照


下一篇:Lambda表达式的前世今生