车牌识别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:
(2)“B、8“
它们的区别在字符的左侧,“8”的左侧为弧线,而“B”的左侧为直线。具体局部
(3) “2、Z"
它们的区别在字符的上方,“2”的上方为弧线,“Z”的上方为直线,具体局部特征
(4)“5、S"
它们的区别在字符的上半部分,“5”的上半部分中,上方和左侧均为直线,而"S”的上半部分为弧线。
(5)“A、4"
由于存在倾斜等情况,仅仅通过基本特征会出现误识别,它们的区别在左下角。
车牌识别LPR(八)-- 字符识别的更多相关文章
- 车牌识别LPR系统系列文章汇总
这里的LPR的的几篇文章是之前项目的一些相关资料的整理,涉及实验室内部的资料就没有放上来,希望能对想了解这方面的同学,有所帮助,那怕了解个大概也好.知道整体的思路就好.当初就是一个人瞎摸索,走了很多的 ...
- 车牌识别LPR(三)-- LPR系统整体结构
第三篇:系统的整体架构 LPR系统大体上可由图像采集系统,图像处理系统,数据库管理系统三个子系统组成.它综合了通讯.信息.控制.传感.计算机等各种先进技术,构成一个智能电子系统. 图像采集系统:图像采 ...
- 车牌识别LPR(一)-- 研究背景
在年尾用了几天的时间将2014年的所有工作都总结了一遍,将之前的文档综合了下. 以下是LPR系统,车牌识别的一些总结资料. 第一篇:LPR研究背景 汽车的出现改变了以往出行徒步和以马代步的时代,极大地 ...
- 车牌识别LPR(四)-- 车牌定位
第四篇:车牌定位 车牌定位就是采用一系列图像处理或者数学的方法从一幅图像中将车牌准确地定位出来.车牌定位提取出的车牌是整个车牌识别系统的数据来源,它的效果的好坏直接影响到整个系统的表现,只有准确地定位 ...
- 车牌识别LPR(二)-- 车牌特征及难点
第二篇:车牌的特征及难点 2.1 对我国车牌的认识 我国目前使用的汽车牌号标准是 2007 年开始实施的<中华人民共和国机动车号牌>GA36-2007(2010 年修订).根据 GA36 ...
- 车牌识别LPR(七)-- 字符特征
第七篇:字符特征 选择的字符特征应该满足以下条件: (1)选取的字符特征具有较强的鲁棒性,不受字符变形.弯曲等影响. (2)两个字符的字符特征不能完全相同,但部分相同是允许的,即选择的字符特征是唯一的 ...
- 车牌识别LPR(六)-- 字符分割
第六篇:字符分割 在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割.一般最容易想到的方法就是根据车牌投影.像素统计特征对车牌图像进行字符分割的方法.是一种最常用的.最基本的.最简单的车牌字 ...
- 车牌识别LPR(五)-- 一种车牌定位法
该方法是某个文章中看到的,有点忘了是那一篇了,看的太多也太久了. Step1.把采集到的RGB图像转换为HSI图像. HSI模型能反映人对色彩的感知和鉴别能力,非常适合基于色彩的图像的相似比较,故采用 ...
- 车牌识别OCR—易泊时代智慧城市解决方案模块
牌识别(License Plate Recognition,LPR) 是视频图像识别技术在智能交通领域中的一个模块.车牌识别运用OCR技术,将视频流或图片中的汽车牌照从复杂的应用场景中提取并识别出来, ...
随机推荐
- ngnix 下配置多域名跳转 配置方法
自己申请了多个域名,统一使用 http://goipc.cn/ 格式访问网站 server_name goipc.cn ; server_name www.goipc.cn ; server_name ...
- How To Fix – Mcrypt PHP extension required in Laravel on Mac OS X (No MAMP)
Laravel PHP web framework requires certain libraries to function properly. One of these libraries is ...
- OC的类方法、对象方法和函数
OC语言中的方法和函数是有区别的:类内部叫方法,单独定义的叫函数,定义的格式也不同 类方法:+ (void) 方法名.对象方法:- (void) 方法名.函数:void 函数名(参数列表) #impo ...
- Careercup - Facebook面试题 - 4909367207919616
2014-05-01 01:23 题目链接 原题: WAP to modify the array such that arr[I] = arr[arr[I]]. Do this in place i ...
- HDU 4587 TWO NODES 割点
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意: 删除两个点,使连通块的数目最大化 题解: 枚举删除第一个点,然后对删除了第一个点的图跑 ...
- 【转载】Spring中DispatcherServlet与ContextLoaderListener的区别
昨天在写springmvc的时候,在web.xml中配置了DispatcherServlet,如下: <servlet> <servlet-name>DispatcherSer ...
- 【转载】Spring加载resource时classpath*:与classpath:的区别
免责声明: 本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除. 原文作者:kyfxbl 原文地址: spring配置中classpath和cla ...
- Eclipse 安装热部署JRebel
开发环境 sts-3.7.2.RELEASE 安装步骤 1.打开应市场 2.搜索JRebel并进行下载 3.下载完成后点击JReble Configuation进入
- 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- 【BZOJ】【1026】【SCOI2009】Windy数
数位DP cxlove基础数位DP第三题 = =预处理是个很有用的东西!然后就是分类讨论! /***************************************************** ...