车牌识别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技术,将视频流或图片中的汽车牌照从复杂的应用场景中提取并识别出来, ...
随机推荐
- show engine innodb status\G
mysql> show engine innodb status\G *************************** 1. row *************************** ...
- [JAVA][RCP]Clean project之后报错:java.lang.RuntimeException: No application id has been found.
Clean了一下Project,然后就报了如下错误 !ENTRY com.release.nattable.well_analysis 2 0 2015-11-20 17:04:44.609 !MES ...
- mysql简单操作一
MySQL的一些简单管理: 启动MySQL服务: sudo start mysql 停止MySQL服务: sudo stop mysql 修改 MySQL 的管理员密码: sudo mysqladmi ...
- android实现可拖动按钮
功能:在Android中实现可拖动按钮,同时实现按钮的点击功能 相关问题: 按钮拖动的界限限定. 按钮单击和拖动之间的冲突. 在界面未显示之前,获得View的高/宽. 问题描述: 如果不为按钮的拖动范 ...
- 用例图 UseCase Diagram
从上面的用例图模型,我们可以大致了解用例图所描述的是什么.下面进行详细介绍. 用例图,即用来描述什么角色通过某某系统能做什么事情的图,用例图关注的是系统的外在表现,系统与人的交互,系统与其它系统的交互 ...
- Oracle 多行记录合并/连接/聚合字符串的几种方法
怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结.-什么是合并多行字符串(连接字符串)呢,例如: SQL&g ...
- eclipse 配置git ssh登录
实现需要安装git的插件,由于我使用的adt和eclipse for javaee版本两个,都已经安装了git插件,就不再演示了,网上都有. 这篇文章主要是介绍使用ssh进行认证的方式. 1.首先,配 ...
- Java多线程——<三>简单的线程执行:Executor
一.概述 按照<Java多线程——<一><二>>中所讲,我们要使用线程,目前都是显示的声明Thread,并调用其start()方法.多线程并行,明显我们需要声明多个 ...
- PAT-乙级-1049. 数列的片段和(20)
1049. 数列的片段和(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定一个正数数列,我们可以从中截 ...
- 【Asp.Net MVC】Avoid Mass Assignment in ASP.NET MVC
Mass Assignment Vulnerability in ASP.NET MVC: http://freshbrewedcode.com/joshbush/2012/03/05/mass-as ...