基于MATLAB的车牌识别系统

目 录

一、车牌识别研究背景及现状分析: 2

二、设计原理: 2

三、设计步骤 3

(一)、预处理及边缘提取 3

(二)、牌照的定位和分割 6

(三)、字符的分割与归一化 8

(四)、字符的识别 9

三、设计结果及分析 11

四、总结 12

五、参考文献 12

内容摘要

本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。并用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照。

关键词汽车牌照 车牌提取 字符分割 字符识别

一.车牌识别的研究背景及现状分析

(一)研究背景

随着我国经济的发展,综合实力的增强和城市化进程的加快,国内各大城市交通管理能力将面临重大考验。近年来,各主要城市都将城市智能交通系统(ITS)的建设作为改善城市交通状况的重点,以缓解城市交通管理的压力,车牌识别系统作为智能交通系统的主要技术之一也得到了很大的发展。
   随着ITS在国内的大范围应用,其系统化的方向发展逐渐确立。ITS系统不再是简单的车辆处理系统,而是涵盖道路监控、车辆记录、违章处理、高/快速路管理、智能停车管理等多个方面的综合化系统。而随着各行业间边界的模糊化,跨行业项目的需求越来越多。在技术进步的过程中,“行业跨越”以及智能交通产品的“民用化”,将成为今后一段时间内ITS行业系统化的一个主要趋势。

(二)现状

目前,国内的ITS 产业仍然处于起步阶段,在产业链中,电子地图商、导航终端商、嵌入式操作系统均已经具备产业规模,而所欠缺的环节则是对实时交通信息的采集和处理系统。车牌识别系统是城市智能交通管理系统的一个重要组成部分,广泛用于是针对公路行驶的机动车辆进行实时监控的智能化交通系统,电子收费,交通违规管理,安全停车管理等重要领域。  

二、系统构成

车牌识是一辆汽车独一无二的信息,因此,对车辆牌照的识别技术可以作为辨识一样车最为有效地方法。车牌识别系统包括摄取的汽车图像,车牌号码的识别,车牌图像的采集和预处理,牌照区域的定位和提取,牌照字符的分割和识别等几个部分组成,如下图所示。

字符分割——归一化——输出结果——字符识别——车牌定位——预处理——输入图像

图1 车牌识别系统流程图

三、设计步骤

车牌识别过程大体可以分为4个步骤:图像预处理,车牌定位和分割、车牌字符的分割和车牌字符识别。

(一)、预处理及边缘提取

一般情况下,采集到的图像有由于光线过强,或者偏弱都会不理想的情况,这些都会对后续的图像处理产生影响。以及车速的不稳定等因素都会不同程度地影响图像效果,出现模糊、歪斜和缺损等严重缺陷,车牌字符边界模糊、细节不清、笔画断开、粗细不均等现象,从而影响车牌区域分割与字符识别的工作,所以识别前需要对原始图象进行预处理。

图2 预处理及边缘提取流程图

1、图象的采集与转换

现有牌照的字符与背景的颜色搭配一般有蓝底白字、黄底黑字、白底红字、绿底白字和黑底白字等几种,利用不同的色彩通道就可以将区域与背景明显地区分出来,例如,对蓝底白字这种最常见的牌照,采用蓝色B 通道时牌照区域为一亮的矩形,而牌照字符在区域中并不呈现。因为蓝色(255,0,0)与白色(255,255,255)在B 通道中并无区分,而在G、R 通道或是灰度图象中并无此便利。同理对白底黑字的牌照可用R 通道,绿底白字的牌照可以用G 通道就可以明显呈现出牌照区域的位置,便于后续处理。原图、灰度图及其直方图见图2与图3。对于将彩色图象转换成灰度图象时,图象灰度值可由下面的公式计算:

G=0.110B+0.588G+0.302R

图3 图4

2、边缘提取

边缘是指图像局部亮度变化显著的部分,是图像风、纹理特征提取和形状特征提取等图像分析的重要基础。所以在此我们要对图像进行边缘检测。图象增强处理对图象牌照的可辩认度的改善和简化后续的牌照字符定位和分割的难度都是很有必要的。增强图象对比度度的方法有:灰度线性变换、图象平滑处理等。

(1)灰度校正

由于牌照图象在拍摄时受到种种条件的限制和干扰,图象的灰度值往往与实际景物不完全匹配,这将直接影响到图象的后续处理。如果造成这种影响的原因主要是由于被摄物体的远近不同,使得图象中央区域和边缘区域的灰度失衡,或是由于摄像头在扫描时各点的灵敏度有较大的差异而产生图象灰度失真,或是由于曝光不足而使得图像的灰度变化范围很窄。这时就可以采用灰度校正的方法来处理,增强灰度的变化范围、丰富灰度层次,以达到增强图象的对比度和分辨率。我们发现车辆牌照图象的灰度取值范围大多局限在r=(50,200)之间,而且总体上灰度偏低,图象较暗。根据图象处理系统的条件,最好将灰度范围展开到s=(0,255)之间,为此我们对灰度值作如下的变换:

s = T(r) r=[r min,,r max]

使得S[Smin, Smax],其中,T为线性变换:

若 r(50,200)、s(0,255)则:

(4)

图6 灰度增强后的图像

(2)平滑处理

对于受噪声干扰严重的图象,由于噪声点多在频域中映射为高频分量,因此可以在通过低

4 3 2
5 i,j 1
6 7 8
2
3 i,j 1
4

通滤波器来滤除噪声,但实际中为了简化算法,也可以直接在空域中用求邻域平均值的方法来

削弱噪声的影响,这种方法称为图象平滑处理。例如,某一象素点的邻域S 有两种表示方法:

8邻域和4邻域分别对应的邻域平均值为, 图7 8 -邻域、4 -邻域模板

其中,M 为邻域中除中心象素点f(i,j) 之外包括的其它象素总数,对于4邻域M=4,8 邻域M=8。然而,邻域平均值的平滑处理会使得图象灰度急剧变化的地方,尤其是物体边缘区域和字符轮廓等部分产生模糊作用。为了克服这种平均化引起的图象模糊现象,我们给中心点象素值与其邻域平均值的差值设置一固定的阈值,只有大于该阈值的点才能替换为邻域平均值,而差值不大于阈值时,仍保留原来的值,从而减少由于平均化引起的图象模糊。边缘提取是较经典的算法,此处边缘的提取采用的是Roberts算子。

综上所述,结合MATLAB实验过程,得出不是每一种图像处理之初都适合滤波和边界增强。本次汽车车牌的识别,为了保存更多的有用信息,经过多次比较,选择图9作为后期处理的依据。

(二)、牌照的定位和分割

牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。由于牌照图象在原始图象中是很有特征的一个子区域,确切说是水平度较高的横向近似的长方形,它在原始图象中的相对位置比较集中,而且其灰度值与周边区域有明显的不同,因而在其边缘形成了灰度突变的边界,这样就便于通过边缘检测来对图象进行分割。

图10 牌照定位于分割流程图

1、牌照区域的定位

牌照图象经过了以上的处理后,牌照区域已经十分明显,而且其边缘得到了勾勒和加强。此时可进一步确定牌照在整幅图象中的准确位置。这里选用的是数学形态学的方法,其基本思想是用具有一定形态的机构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的。数学形态学的应用可以简化图像数据,保持它们基本的形态特征,并除去不相干的结构。在本程序中用到了膨胀和闭合这两个基本运算,最后还用了bwareaopen来去除对象中不相干的小对象。

图11 腐蚀后图像 图12 平滑图像的轮廓 图13 从对象中移除小对象后图像

2、牌照区域的分割

对车牌的分割可以有很多种方法,本程序是利用车牌的彩色信息的彩色分割方法。根据车牌底色等有关的先验知识,采用彩色像素点统计的方法分割出合理的车牌区域,确定车牌底色蓝色RGB对应的各自灰度范围,然后行方向统计在此颜色范围内的像素点数量,设定合理的阈值,确定车牌在行方向的合理区域。然后,在分割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。

图14 行方向区域和最终定位出来的车牌

3、车牌进一步处理

经过上述方法分割出来的车牌图像中存在目标物体、背景还有噪声,要想从图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群,即对图像二值化。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。再用模板中的全体像素的平均值来代替原来像素值。

图15 裁剪出来的车牌的进一步处理过程图

(三)、字符的分割与归一化

图16 字符分割与归一化流程图

1、字符分割

在汽车牌照自动识别过程中,字符分割有承前启后的作用。它在前期牌照定位的基础上进行字符的分割,然后再利用分割的结果进行字符识别。字符识别的算法很多,因为车牌字符间间隔较大,不会出现字符粘连情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割。

图17 分割出来的七个字符图像

2、字符归一化

一般分割出来的字符要进行进一步的处理,以满足下一步字符识别的需要。但是对于车牌的识别,并不需要太多的处理就已经可以达到正确识别的目的。在此只进行了归一化处理,然后进行后期处理。

图18 归一化处理后的七个字符图像

(四)、字符的识别

字符的识别目前用于车牌字符识别(OCR)中的算法主要有基于模板匹配的OCR算法以及基于人工神经网络的OCR算法。基于模板匹配的OCR的基本过程是:首先对待识别字符进行二值化并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。用人工神经网络进行字符识别主要有两种方法:一种方法是先对待识别字符进行特征提取,然后用所获得的特征来训练神经网络分类器。识别效果与字符特征的提取有关,而字符特征提取往往比较耗时。因此,字符特征的提取就成为研究的关键。另一种方法则充分利用神经网络的特点,直接把待处理图像输入网络,由网络自动实现特征提取直至识别。

模板匹配的主要特点是实现简单,当字符较规整时对字符图像的缺损、污迹干扰适应力强且识别率相当高。综合模板匹配的这些优点我们将其用为车牌字符识别的主要方法。

模板匹配是图象识别方法中最具代表性的基本方法之一,它是将从待识别的图象或图象区域f(i,j)中提取的若干特征量与模板T(i,j)相应的特征量逐个进行比较,计算它们之间规格化的互相关量,其中互相关量最大的一个就表示期间相似程度最高,可将图象归于相应的类。也可以计算图象与模板特征量之间的距离,用最小距离法判定所属类。然而,通常情况下用于匹配的图象各自的成像条件存在差异,产生较大的噪声干扰,或图象经预处理和规格化处理后,使得图象的灰度或像素点的位置发生改变。在实际设计模板的时候,是根据各区域形状固有的特点,突出各类似区域之间的差别,并将容易由处理过程引起的噪声和位移等因素都考虑进去,按照一些基于图象不变特性所设计的特征量来构建模板,就可以避免上述问题。

图19 字符识别流程图

此处采用相减的方法来求得字符与模板中哪一个字符最相似,然后找到相似度最大的输出。汽车牌照的字符一般有七个,大部分车牌第一位是汉字,通常代表车辆所属省份,或是军种、警别等有特定含义的字符简称;紧接其后的为字母与数字。车牌字符识别与一般文字识别在于它的字符数有限,汉字共约50多个,大写英文字母26个,数字10个。所以建立字符模板库也极为方便。为了实验方便,结合本次设计所选汽车牌照的特点,只建立了4个数字26个字母与10个数字的模板。其他模板设计的方法与此相同。

首先取字符模板,接着依次取待识别字符与模板进行匹配,将其与模板字符相减,得到的0越多那么就越匹配。把每一幅相减后的图的0值个数保存,然后找数值最大的,即为识别出来的结果。

图20 识别结果

三、设计结果及分析

原始图像: 预处理后:

车牌定位和提取: 字符的分割:

图像识别:

通过以上我们可以看出,该方法对图像进行检测具有较好的识别效果。整个过程用MATLAB 语言编程实现,无时间滞后感,可以满足实时检出的要求。但是在设计的过程中发现,使用另一幅图像后,识别效果始终没有那么理想。需要做一定的设置后才能识别出相应的字符。对于识别错误情况的分析可知,主要原因:一是牌照自身的污渍等影响了图象的质量;二是牌照字符的分割失败导致的识别错误;再就是部分字符的形状相似性,比如,B 和8;A 和4 等字符识别结果可能发生混淆的情况。在车牌识别的过程中数字库的建立也很重要,只有数字库的准确才能保证检测出来的数据正确。切割出来的数据要与数据库的数据作比较,所以数据库的数据尤为重要。

总之,尽管目前牌照字符的识别率还不理想,但是只要在分割出的字符的大小、位置的归一化,以及尝试提取分类识别能力更好的特征值和设计分类器等环节上再完善,进一步提高识别率也是可行的。

四、总结

实验对车牌识别系统的软件部分进行了研究,分别从图像预处理、车牌定位、字符分割以及字符识别等方面进行了系统的分析。在车辆牌照字符识别系统的研究领域,近几年出现了许多切实可行的识别技术和方法,从这些新技术和方法中可以看到两个明显的趋势:一是单一的预处理和识别技术都无法达到理想的结果,多种方法的有机结合才能使系统有效识别能力提高。在本系统的设计时,也汲取了以上一些算法的思想,结合实际,反复比较,综合分析;二是在有效性和实用的原则下,结合神经网络和人工智能的新技术的应用是研究的一个方向。再者根据车牌特点,一般采用的车牌定位算法有边缘检测定位算法,水平方向灰度变化方法,基于彩色特征的车牌定位方法,形态滤波,神经网络法等。这里我采用的是边缘检测的方法实现定位的。本设计虽然只对蓝底白字车牌进行分割识别,对黑底白字车牌原则上整个算法可直接适用,对白底黑字车牌、黄底黑字车牌,需要对车牌定位算法进行调整,并将图像反转(0变1、1变0),而车牌字符的分割算法仍然行之有效。但是系统本身还存在许多不足,距离具体实用的要求仍有很大差距,但我们却在这次课程设计中学到了很多知识。

五、参考文献

[1] 陈桂明、张明照、戚红雨.应用MATLAB语言处理数字信号与数字图像。科学出版社,2000

[2] 霍宏涛.数字图像处理.机械工业出版社,2003.5

[3] 郁梅等,基于视觉的车辆牌照检测,计算机应用研究,1999(5),P65~67

[4] 叶晨洲,廖金周,一种基于纹理的牌照图象二值化方法,微型电脑应用,1999(6),P28~29

[5] 周妮娜、王敏、黄心汉、吕雪峰、万国红.车牌字符识别的预处理算法.计算机工程与应用,2003(15)

[6] 杨万山等,基于BP 神经网络的工程图纸图形符号的识别,微型电脑应用,Vol.16,No.2,2000

[7] 王年、李婕、任彬、汪炳权.多层次汽车车牌照定位分割方法. 安徽大学学报,1999(6)Vol.23.No.2

[8] 崔 江、王友仁.车牌自动识别方法中的关键技术研究.计算机测量与控制,2003.11(4)

[9] 许志影、李晋平.MATLAB极其在图像处理中的应用.计算机与现代化,2004(4)

基于MATLAB的车牌识别系统相关推荐

  1. 基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

    基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位.字符分割和字符识别三个主要部分.本文首先确定车辆 ...

  2. 基于Matlab的车牌识别系统完整版课论文分享 快看

    基于Matlab的车牌识别系统 一.设计原理 车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索.检测.定位,并分割出包 ...

  3. matlab车牌识别系统论文,基于Matlab的车牌识别系统.doc

    摘 要: 车牌识别系统研究在这个信息化的时代是一项重大发展,也是在智能交通范围的一项课题.车牌识别可以获取交通信息,在交通车辆管理.交通车辆监控.交通车流量检测等方面应用普遍,受到相关学者的高度关注. ...

  4. matlab车牌识别毕设论文,MATLAB小白一个,毕设做一个基于MATLAB的车牌识别系统,出现索引超出矩阵维度的错误。主函数和自定义函数都写出来了(书上找的),希望大神帮助...

    [fn,pn,fi]=uigetfile('AD.jpg','选择图片'); I=imread([pn fn]); figure, imshow(I); title('原始图像'); Im1=rgb2 ...

  5. 车牌识别与计算机编程,基于MATLAB的车牌识别程序详解.ppt

    基于MATLAB的车牌识别程序详解 自定义一个字符函数,用来从车牌区域中提取出7个字符,其中利用切割函数来进行切割. 程序:function [word,result]=getword(d) word ...

  6. 基于MATLAB的车牌识别研究

    基于MATLAB的车牌识别研究 一.课题背景 随着我国公路事业的发展,人工管理方式已经不能满足如今实际的需要.车牌识别技术是计算机视频图像识别技术在车辆牌照识别中的一种应用,是现代智能交通系统(Int ...

  7. 基于matlab的车牌识别系统设计错误,基于MATLAB的车牌识别系统设计

    在图像处理领域,数字图像处理技术取得了飞速发展,并在国民经济的各个领域得到广泛应用.尤其在智能交通管理中汽车牌照识别技术方面具有重要的理论意义和实用价值.汽车牌照识别技术主要任务是实现对汽车监控视频所 ...

  8. 基于matlab的车牌识别系统设计,基于MATLAB的车牌识别系统设计

    在图像处理领域,数字图像处理技术取得了飞速发展,并在国民经济的各个领域得到广泛应用.尤其在智能交通管理中汽车牌照识别技术方面具有重要的理论意义和实用价值.汽车牌照识别技术主要任务是实现对汽车监控视频所 ...

  9. matlab车牌匹配时读取,基于Matlab的车牌识别(完整版)详解.doc

    基于Matlab的车牌识别(完整版)详解.doc 基于Matlab的车牌识别 摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展.本文从预处理.边缘检测.车牌定位.字符分割.字符 ...

  10. 基于matlab的人脸五官边缘检测方法,基于MATLAB的人脸识别系统的设计

    基于MATLAB的人脸识别系统的设计(论文12000字,外文翻译,参考程序) 摘要:本文基于MATLAB平台设计了一款简单的人脸识别系统,通过USB摄像头来采集图像,经过肤色方法进行人脸检测与定位,然 ...

最新文章

  1. mixin机制 vue_读?VuePress(四)插件机制
  2. php实现 求int型数据在内存中存储时1的个数(函数都可自己实现)
  3. [转]TCP(HTTP)长连接和短连接区别和怎样维护长连接
  4. destroy 方法_线程方法destroy()和stop(Throwable)在JDK 11中删除
  5. jquery 实现智能炫酷的翻页相册效果
  6. LeetCode 907. 子数组的最小值之和(单调栈)
  7. 基于Scrapy框架的Python新闻爬虫
  8. JavaScript是什么
  9. 工作没做好,别人指出时最好装聋作哑
  10. c语言程序设计数字电位器,可编程数字电位器在AVR单片机中的应用
  11. 杀戮尖塔 地图生成器参考
  12. VBA字典(详解,示例)
  13. 无盘服务器架设之一:编译iPXE,用于网络,ISO,USB等无盘启动
  14. Excel 2010 SQL应用078 DATEPART函数与TRANSFROM函数
  15. 计算机病毒计算机软件系统故障,简要区分计算机病毒与软硬件故障问题
  16. 第十四届蓝桥杯省赛C/C++研究生组试题及答案分享
  17. 【18/M/python】4Sum
  18. Unity 游戏保护“大练兵”,一文读懂游戏事前防御
  19. HyperLedger-fabric V0.6 for CentOS7.2开发环境搭建
  20. NFT行业名词、用语篇

热门文章

  1. uni-app 微信小程序 getuserinfo 获取用户信息 拼音转中文
  2. 前端工程师是什么?前端工程师工资怎么样?有没有前景
  3. python求方程的根_python计算方程式根的方法
  4. Java代码常见错误写法
  5. 【Pytorch官方教程】从零开始自己搭建RNN1 - 字母级RNN的生成任务
  6. 2021-06-01
  7. c语言函数使用的三个步骤,sqrt函数怎么使用 C语言中的sqrt函数使用方法介绍
  8. android 内存清理命令,安卓手机内存怎么清理 安卓手机内存清理方法【图文】
  9. 【霸指拓客】抖音自动引流脚本源码终端开发
  10. mysql索引左倾_MySQL索引学习