基于模板匹配的车牌识别及matlab实现

基于模板匹配的车牌识别及matlab实现
基于模板匹配的车牌识别及matlab实现

科类理工类编号(学号) 20082036

本科生毕业论文(设计)

基于模板匹配的车牌识别及matlab实现

License plate recognition based on template matching and matlab

implementation

伏绍鸫

指导教师:朱玲职称讲师

云南农业大学昆明黑龙潭650201

学院:基础与信息工程学院

专业:电子信息工程年级: 2008级

论文(设计)提交日期: 2012年5月答辩日期: 2012年5月

答辩委员会主任:杨林楠

云南农业大学

2012年05 月

目录

摘要 (1)

ABSTRACT (2)

1 前言 (3)

2 车牌识别系统分析 (4)

2.1 车牌识别的目的 (4)

2.2车牌识别现状分析 (4)

2.3车牌识别的意义 (4)

2.4 我国车牌分析 (6)

3 车牌识别系统的原理及方法 (6)

3.1车牌识别系统简述 (6)

3.2 车牌图像处理 (7)

3.2.1 图像灰度化 (7)

3.2.2 图像二值化 (8)

3.2.3边缘检测 (8)

3.2.4 图像闭运算 (9)

3.2.5图像滤波处理 (10)

3.4 车牌字符处理 (11)

3.4.1 阈值化分割原理 (11)

3.4.2 对车牌阈值化分割 (13)

3.4.3 字符归一化处理 (13)

3.5 字符识别 (13)

3.5.1 字符识别简述 (13)

3.5.2 字符识别的分类 (14)

3.5.3 基于模板匹配的字符识别 (15)

4 实验分析 (15)

4.1车牌定位过程及分析 (15)

4.2 车牌字符识别 (18)

4.3 车牌识别结果及分析 (21)

5 结论 (23)

参考文献 (24)

致谢 (24)

附录 (24)

基于模板匹配的车牌识别及matlab实现

伏绍鸫

(云南农业大学基础与信息工程学院,昆明650201)

摘要

随着我国经济、交通的的快速发展,车牌定位系统以及车牌字符自动识别技术也逐渐受到人们的重视。车牌识别是对采集的车牌图像进行灰度变换、边缘检测、腐蚀以及平滑处理,最后在取得的大对象中移除小对象,由此提出了一种基于车牌纹理特征的车牌定位算法,最终实现对车牌的定位。车牌字符分割是为了以便后续对车牌模板进行匹配从而对车牌进行识别,考虑到我国车牌的结构构成所采用的字符并不是很多,由此本文采用了模板匹配的方法,对输出的图像和模板库里的模板进行匹配,通过处理后得到的图片与模板字符相减,得到的0越多那么就越匹配,然后对其个数进行累计并找出数值最大的,即为识别出来的结果。

经实验分析验证,本文所提出的整体方案有效可行,基于模板匹配的车牌识别技术在其识别正确率、速度方面具有独特的优势,前景广阔。

关键词:字符识别;模式识别;车牌定位;模板匹配;边缘检测

License plate recognition based on template matching and matlab

implementation

Fu Shaodong

(Yunnan Agricultural University information engineering, Kunming, 650201)

ABSTRACT

With the rapid development of China's economic and transportation, license plate positioning and automatic license plate character recognition system has been paid more attention gradually. The license plate recognition is a technology that uses the collection plate image to grayscale converting, edge detecting. Corrosion and smoothed, finally remove the small objects from the image, then put forward a algorithm of license plate recognition based on texture features. Finally, positioning the plate. License plate character segment is in order to facilitate the follow-up license plate template matching and license plate recognition. Considering the characters of our country’s license plate are not so many, Thus this thesis used the methods of template to matching the outputting image, the outputting image was subtracted from the template characters, the more 0 we get the more matches, then add up its numbers and find the largest, so it’s the identified .result.

Through the experlimental analysis and testing, the project this thesis put forward is effective and feasible, the license plate recognition technology based on template matching has the advantages on accuracy and rapidity, it has the vast potential for future development.

Key words:character recognition; pattern recognition; license plate location; template matching; edge detection

基于模板匹配的车牌识别及matlab实现

1 前言

近年来随着社会经济的高速发展、汽车数量急剧增加,对交通管理的要求也日益提高,而相应的人工管理方式以不能满足实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理的效率。运用电子信息技术实现安全、高效的智能交通成为交通管理的主要发展方向。汽车牌照号码是车辆的唯一“身份”标识,通过智能的车牌定位及识别技术将对于维护交通安全和城市治安,防止交通堵塞,实现交通自动化管理有着现实的意义。

车牌识别技术(Vehicle License Plate Recognition,VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息进行处理的技术。车牌识别是现代智能交通系统中的重要组成部分之一,应用十分广泛。它以数字图像处理、模式识别、计算机视觉等技术为基础,对摄像机所拍摄的车辆图像或者视频序列进行分析,得到每一辆汽车唯一的车牌号码,从而完成识别过程。

车牌定位与字符识别技术是基于计算机图像处理、模式识别等技术为基础,通过对原图像的处理,以及边缘检测技术实现对车牌的定位,然后对车牌图像处理、归一化处理、分割以及保存,最后进行分割图像与模板库的模板进行匹配,最后输出匹配结果。车牌的智能定位以及识别是一个完整的系统,考虑到其应用的普遍性以及广泛性,就要求我们在设计过程中考虑到以下几方面:

(1)准确性:尽可能的避开其他外界造成的干扰,准确的识别车牌信息。

(2)实时性:考虑到车载行驶的过程中速度不一,对触发超速摄像的抓拍应当及时的对其进行识别并且储存,才能有效的提高工作效率。

(3)优化性:采用竟可能低的硬件要求,对其快速的做出的计算与识别。

本文采用的是选取不同的边缘算子检测,通过实验分析不同算子的效果,最终选取了canny算子进行车牌的边缘检测,更好的对其进行检测与识别,然后通过二值化等处

理进行分割,最终与模板库模板进行对比,达到车牌识别的目的。

2 车牌识别系统分析

2.1 车牌识别的目的

车牌识别(Vehicle License Plate Recognition,VLPR) 是现代智能交通系统中的重要组成部分之一,应用十分广泛,车牌识别技术通过对信息量较大的对象采集,然后经过一系列的处理提取了相对较小的信息量且有价值的一部分信息,仅仅提取识别车“身份”的车牌信息。对于维护交通安全和城市治安,防止交通堵塞,实现交通自动化管理有着现实的意义。

2.2车牌识别现状分析

模式识别[1]是一门以应用为基础的学科,目的是将对象进行分类,这些对象与应用领域有关,他们可以是图像,信号波形或者是任何可测量且需要分类的对像,在机器视觉中,模式识别是非常重要的,机器视觉系统通过照相机捕捉图像,然后通过分析生成图像的描述信息。车牌识别技术是计算机模式识别技术在智能交通领域的典型应用,是一个以特写目标为对象的专用计算机视觉系统[2]。简单地说,它使计算机能像人一样认识汽车牌照(包括车牌的汉字、字母、数字)。

车辆牌照识别技术推出以来,人们就对其进行了广泛的研究。从20世纪90年代初,国外就已经开始了对汽车牌照自动识别[3]的研究,其主要途径就是对车牌的图像进行分析,自动提取车牌信息,确定汽车牌号。国外己有不少相关的文章发表,有的己经非常成熟,投入实际使用。

我国车牌自动识别的研究起步较晚,大约发生在八十年代末。1988年戴营等利用常见的图像处理技术方法提出汉字识别的分类是在提取汉字特征的基础上进行的。根据汉字的投影直方图(ProjectionHIStogram),选取浮动阂值,进行量化处理后,形成一个变长链码,再用动态规划法,求出与标准模式链码的最小距离,实现细分类,完成汉字省名的自动识别。

目前我国市场上有二十几家企业从事车牌识别产品的开发和生产,其中比较成熟的有香港的ASiavisionTeChnologyLtd公司(亚洲视觉科技有限公司)、北京汉王、沈阳聚德、川大智胜、上海高德威、清华紫光、杭州友通、深圳科安信、利普视觉中智交通电子系统有限公司等企业。

2.3车牌识别的意义

结合我国的国情,由于我国地域广阔,车辆道路复杂,安装相应的检测设备或者人员配备投资巨大,且造成人力物力的浪费,因此我们急需对现有的检测设备优化,而车牌识别技术恰好能满足这一需求,通过车牌识别我们可以解决被纳入“黑名单”的通缉车辆,可以统计一定时间范围内进出各省的车辆,还能有效的对该车辆进行定位,对公安机关等相关部门有着很重要的作用,具体归结应用方式如下:

(1)监测报警

对于纳入“黑名单”的车辆,例如:被通缉或挂失的车辆、欠交费车辆、未年检车辆、肇事逃逸及违章车辆等,我们只需要把其牌照的信息输入系统,那么该车辆在通过装有全国联网系统的路口或者收费站等卡口时,信息采集设备将会对其进行采集并且与数据库对比,实现其定位。这种方式可以通过程序实现24小时工作,而且此过程保密性好,不会提醒黑名单车辆的死机。

(2)车辆出入自动登记及放行

在需要管制的小区或者办公场所门口装设车牌识别系统,那么汽车进出此场所时间,车牌牌照等信息将会被存储在相应的数据库中,通过修改相应的数据库,添加车牌信息,我们还能让自动门禁对相应的车辆进行自动放行,如遇到非数据库中的车辆则由保安进行相应的咨询,或批准后人为放行。这不仅提高物业管理的效益,同时自动比对进出车辆,防止偷盗事件的发生。

(3)违法违章管理

车牌识别技术结合测速设备可以用于车辆超速违章处罚,一般用于高速公路、容易肇事路段。还可以在红绿灯路口加上红外检测实现违规检测,对出现闯红灯的现象或者违规转弯的现象进行相应的数据采集。将其传送至相关部门,从而对其下发处罚通知书,实现对其处罚。

(4)交通流控制指标参量的测量

为达到交通流控制的目标,一些交通流指标的测量相当重要。车牌识别系统能够测量和统计很多交通流指标参数例如车流量,车流高峰时间段,平均车速,车辆密度等。这也为交通诱导系统提供必要的交通流信息。从而能够有效的采取措施预防堵车,排队,事故等交通异常现象。

(5)移动电子警察系统

随着我国公路基础建设的快速发展,公路的质量、里程都有了很大程度上的提高,但也出现了不交养路费等情况,给国家造成了巨大的经济损失。且丢失车辆稽查、车辆

是否合法、拦车路检等情况都需要公安人员对其进行相应的检查,由于人工判断工作效率很低且容易让正常车主及乘客造成误解,现在有了车牌自动识别技术之后将大大提高办公效率以及检查的准确性,很大程度上解决了以上的问题。

2.4我国车牌分析

汽车牌照具有统一格式、统一式样,由车辆管理机关经过申领牌照的汽车进行审核、检验、登记后,核发的带有注册登记编码的硬质号码牌。我国车牌号的第一个是汉字:代表该车户口所在省的简称:如云南就是云,北京就是京,重庆就是渝,上海就是沪……,第二个是英文:代表该车所在地的地市一级代码,规律一般是这样的,A是省会,B是该省第二大城市,C是该省第三大城市,依此类推。

目前国内汽车牌照有六种类型:①大型民用汽车所用的黄底黑字牌照;②小型民用汽车所用的蓝底白字牌照;③军队或武警专用汽车的白底红字、黑字牌照;④使、领馆外籍汽车的黑底白字牌照;⑤试车和临时牌照是白底红字,且数字前分别标有“试”和“临时”字标志;⑥汽车补用牌照是白底黑字。

从人的视觉特点出发,车牌目标区域具有如下特点:①车牌底色往往与车身颜色、字符颜色有较大差异;②车牌有一个连续或由于磨损而不连续的边框,车牌内字符有多个,基本呈水平排列,所以在牌照的矩形区域内存在较丰富的边缘,呈现出规则的纹理特征;③车牌内字符之间的间隔比较均匀,字符和牌照底色在灰度值上存在跳变,而字符本身与牌照底的内部都有较均匀灰度;④不同图像中牌照的具体大小、位置不确定,但其长度比变化有一定范围,存在一个最大和最小长度比。根据这些特点,可以在灰度图像的基础上提取相应的特征。

3车牌识别系统[4]的原理及方法

3.1车牌识别系统简述

车牌定位与字符识别技术是基于计算机图像处理、模式识别等技术为基础,通过对原图像的处理,以及边缘检测技术实现对车牌的定位,然后对车牌图像处理、归一化处理、分割以及保存,最后进行分割图像与模板库的模板进行匹配,最后输出匹配结果。流程如图3.1所示

图3.1 车辆牌照识别系统

Figure 3.1 Vehicle plate recognition system

汽车牌照自动识别关键技术包括车牌定位[5]、灰度(或彩色)图像二值化、字符切分及字符识别等。首先要求正确可靠地分割出车牌区域,为此提出了很多方法,如Hough 变换以检测直线来提取车牌边界区域、使用灰度分割及区域生长进行区域分割,或使用纹理特征分析技术等。Hough 变换方法对车牌区域变形或图像被污染时,失效的可能会急剧增加,而灰度分割则比直线检测的方法要稳定,但当图像中有许多与车牌的灰度非常相似的区域时,该方法也就无能为力。纹理分割在遇到与车牌纹理特征的其他干扰时,车牌定位正确率也会受到影响,因此单用一种方法难以达到实际应用的要求。

根据车牌底色等有关的知识,采用彩色像素点统计的方法分割出合理的车牌区域,本文以蓝底白字的普通小汽车为例说明彩色像素点统计的分割方法,CCD 摄像头的拍摄图像一般为RGB 彩色图像,确定车牌底色RGB 对应的各自灰度范围,然后在Y 方向统计在此颜色范围内的像素点数量,设定合理的阈值,确定车牌在Y 方向的合理区域,然后在分割出Y 方向区域内,统计X 方向的像素点数量,最终确定车牌的区域,实现定位。

对定位的车牌进行处理,并且把处理后的车牌看做连续的字符块,设定一个阈值,如果超过这个阈值则认为是有多个字符相连,从而对其切割,实现车牌的字符的分割,最后把分割的图片进行对比,选出最相似的结果输出,即为车牌信息。

3.2 车牌图像处理[6]

3.2.1 图像灰度化

由于现在的车牌采集一般用的是数码相机或者摄像机,采集的图片都是RGB [7]图像即为真彩图像,根据三基色原理,每一种颜色都是可以由红、绿、蓝三中颜色按不同的比例构成,所以它的每一个像素都是由3个数值来指定红、绿和蓝的颜色分量。灰度图像实际上是一个数据矩阵I ,该矩阵的每两个元素对应于图像的一个像素点,元素的数值代表一定范围内的灰度级,通常0代表黑色、255代表白色。矩阵I 可以是双精度;在MATLAB 中,一幅RGB 图像由一个uint8、uint16或者双精度类型的m*n*3数组来描述,其中m 和n 分别表示图像的宽度和高度,RGB 图像不使用调色板。 车牌图像采集 车牌图像进行处理 字符分割 字符识别 输出结果 对车牌定位

定位车牌图像处理

在RGB模型中,如果R=G=B,则颜色表示一种灰度颜色,其中R=G=B的值叫做灰度值.由彩色转换为灰度的过程叫做灰度化处理。灰度图像就是只有强度信息,而没有颜色信息的图像。

3.2.2图像二值化

灰度图像二值化[8]在图像处理的过程中有着很重要的作用,他不仅能使数据量再一次变小,而且还能突出需要的目标轮廓,从而进行图像的处理与分析。所谓的二值化处理就是将车牌图像上的像素点的灰度值设置为0或255,从而让整张图片变成黑白的效果,将灰度图片通过适当的阈值选取,从而将能在二值化图像获取可以反映图像特征的二值化图像。在图像处理中灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。

图像二值化是指整幅图像画面内仅黑、白二值的图像,每一个像素取两个离散数值(0或1),其中0代表黑色,1代表白色。在实际的图像处理系统中,进行图像二值变换的关键是要确定合适的阀值,使得字符与背景能够分割开来。不同的阈值设定方法对一幅图像进行处理会产生不同的二值化处理结果。二值化阈值设置过小易产生噪声;阈值设置过大会降低分辨率,使非噪声信号被视为噪声而滤掉二值变换的结果。

3.2.3边缘检测[9]

边缘是指图像局部亮度变化最显著的部分,边缘主要存在于目标与目标,目标与背景,区域与区域(包括不同的色彩之间),是图像分割,纹理特征提取和形状特征提取等图像分析的重要基础。在车牌识别系统中提取车牌位置有着很重要的低位。其中边缘检测的算子有很多,如Roberts、Sobel、Prewitt、Laplacian、log以及canny等算子方式。据试验分析在车牌的边缘检测中canny算子相对精确,所以本文采用了canny算子进行边缘检测。

坎尼(canny)算子在边缘检测中提出了三个准则分别是:

(1)信噪比准则

信噪比越大,提取的边缘质量越高。信噪比SNR定义为:

其中代表边缘函数,代表宽度为W的滤波器的脉冲响应,代表高斯噪声的均方

差。

(2)定位精度准则

边缘定位精度L如下定义:

其中分别是的导数。L越大表明定位精度越高。

(3)单边缘相应检测

为了保证单边缘只有一个响应,检测算子的脉冲响应导数的零交叉点平均距离应满足:

的二阶导数。

以上述指标和准则为基础,利用泛函求导的方法求导的方法可导出坎尼边缘检测器是信噪比与定位之乘积的最优逼近算子,表达式近似于高斯函数的一阶导数。将坎尼3个准则相结合可以获得最优的检测算子。坎尼算子的边缘检测算法步骤如下:(1)用高斯滤波器平滑图像;

(2)用一阶偏导的有限差分来计算梯度的幅值和方向;

(3)对梯度幅值进行非极大值抑制;

(4)用双阈值算法检测和连接边缘;

3.2.4 图像闭运算

数学形态学的基本运算有4个:膨胀(或扩张)、腐蚀(或侵蚀)、开启和闭合。二值形态学中的运算对象是集合,通常给出一个图像集合和一个结构元素集合,利用结构对图像进行操作。

膨胀运算符号为⊕,图像集合A,用结构元素B来膨胀,记作,其定义为:

其中 表示B 的映像,即与B 关于原点对称的集合。上式表明,用B 对A 进行膨胀的运算过程如下:首先作B 关于原点的映射,再将其映像平移x ,当A 与B 映像的交集不为空时,B 的原点就是膨胀集合的像素。

腐蚀运算的符号是,A 用B 来腐蚀记作,其定义为:

{}|()x A B x B A Θ=?

上式表明,A 用B 腐蚀的结果是所有满足将B 平移后,B 仍旧全部包含在A 中的X 的集合,从直观上看就是B 经过平移后全部包含在A 中的原点组成的集合。

腐蚀会去掉物体的边缘点,细小物体所有的点都会被认为是边缘点,因此会整个被删去。再做膨胀时,留下来的大物体会变回原来的大小,而被删除的小物体则永远消失了。

膨胀操作会使物体的边界向外扩张,如果物体内部存在小空洞的话,经过膨胀操作这些洞将被补上,因而不再是边界了。再进行腐蚀操作时,外部边界将变回原来的样子,而这些内部空洞则永远消失了

一般情况下,由于噪声的影响,图象在阈值化后所得到边界往往是很不平滑的,物体区域具有一些噪声孔,背景区域上散布着一些小的噪声物体。连续的开和闭运算可以有效地改善这种情况。有时需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。

3.2.5 图像滤波处理

滤波,即在尽量保留图像细节特征的条件下对目标像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接响到后续图像处理和分析的有效性和可靠性。

均值滤波也称为线性滤波,其采用的主要方法为领域平均法。线性滤波的基(x,y ),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y ),作为处理后图像在该点上的灰度个

即 M 为该模板中包含当前像素在内的像素总个数。

采集数字图像过程中通常会会受到多种噪声的污染。另外,如果在过程中产生污染则会将要处理的图像上表现出一些较强的视觉效果孤立像素点和像素块。一般情况下,这些噪声在研究对象中一般都是无用的信息,而且还会对研究对象造成干扰,极大降低了图像质量,影响图像复原、分割、特征提取、图识别等后继工作的进行。为了有效的去除这些噪声,并且有效的保存研究对象的图像形状、大小及特定的几何和拓扑结构特征。

3.2.6车牌图像的闭运算

通过上述处理后,我们得到了滤波后的图像,为了提高其识别的准确率,我们还要将对其做闭运算,所谓的闭运算就是对研究对象进行膨胀后腐蚀的过程,如果遇到噪声点比较多的研究对象时,往往我们会通过对其重复做闭运算,从而减少噪声对其造成的影响。

对车牌图像腐蚀会去掉物体的边缘点,细小物体所有的点都会被认为是边缘点,因此会整个被删去。再做膨胀时,留下来的大物体会变回原来的大小,而被删除的小物体则永远消失了。膨胀操作会使物体的边界向外扩张,如果物体内部存在小空洞的话,经过膨胀操作这些洞将被补上,因而不再是边界了。再进行腐蚀操作时,外部边界将变回原来的样子,而这些内部空洞则永远消失了。

通过上述的处理,我们将能对其图像的噪声干扰进行很大程度的排除,从而提升对其研究的准确性

3.3 车牌定位原理

我们已经对车牌在图像中的位置作了初步的定位,移除小对象后基本就是车牌的位置了。根据车牌底色等有关知识,采用彩色像素点统计的方法分割出合理的车牌区域,由于考虑到大部分小汽车的牌照为蓝底白字,所以本文选用普通小汽车为例说明彩色像素点统计的分割方法,CCD摄像头的拍摄图像一般为RGB彩色图像,只要首先确定车牌底色RGB对应的各自灰度范围,然后在Y方向统计在此颜色范围内的像素点数量,设定合理的阈值,确定车牌在Y方向的合理区域,然后在分割出Y方向区域内,同理统计X方向的像素点数量,然后在从y方向合理区域的图中分割出x方向的合理区域,最终确定车牌的区域,实现定位。

3.4 车牌字符处理

3.4.1 阈值化分割原理

阈值化分割算法是图像分割中应用数量最多的一类。简单地说,对灰度图像的阈值

分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中各个像素的灰度值与这个阈值较,并根据比较的结果将对应的像素划分(分割)为两类:像素灰度大于阈值的一类,像素灰度值小于阈值的为另一类,灰度值等于阈值的像素可以归入这两类之一。分割后的两类像素一般分属图像的两个不同区域,所以对像素根据阈值分类达到了区域分割的目的。由此可见,阈值分割算法主要有两个步骤:

(1)确定需要分割的阈值;

(2)将分割阈值与像素点的灰度值比较,以分割图像的像素。

以上步骤中,确定阈值是分割的关键,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。在利用取阈值方法来分割灰度图像时一般对图像的灰度分布有一定的假设,或者说是基于一定的图像模型。最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素在灰庋值上有很大的差别。若一幅图像满足这些条件,它的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成的。而且如果这两个分布大小(数量)接近且均值相距足够远,两部分的均方差也足够小,则直方图应为较明显的双峰。类似地,如果图像中有多个单峰灰度分布的目标,则直方图有可能表现为较明显的多峰。对这类图像常可用取阈值方法来较好地分割。

图像中各种灰度的像素分成两个不同的类,需要确定一个阈值。如果要把图像中各种灰度的像素分成多个不同的类,那么需要选择一系列阈值以将每个像素分到合适的类别中去。如,果只用一个阈值分割称为单阈值分割方法,如果用多个阈值分割称为多阈值分割方法。单阈值分割可看作是多阈值分割的特例,许多单阈值分割算法可推广以进行多阈值分割。反之,有时也可将多阈值分割问题转化为一系列单阈值分割问题来解决。不管用何种方法选取阈值,一幅原始图像f(x,y)取单阈值T分割后的图像可定义为

这样得到的是一幅二值图像。

在一般的多阈值分割情况下,取阈值分割的图像可表示为:

其中是一系列分割阈值,k表示赋予分割后图像各个区域的不同标号。

需要指出,无论是单阈值分割或多阈值分割,分割结果中都有可能出现不同区域具有相同一标号或区域值的情况。这是因为取阈值分割时只考虑了像素本身的值,未考虑像素的空间位置。所以根据像素值划分到同一类的像素有可能分属于图像中不相连通的区域。这时往往需要借助一些对场景的先验知识来进一步确定目标区域。

3.4.2 对车牌阈值化分割

车牌图像的分割即把车牌的整体区域分割成单字符区域,以便后续进行识别。车牌分割的难点在于噪声合字符粘连,断裂对字符的影响。要想从图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群,即对图像二值化。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素。再用模板中的全体像素的平均值来代替原来像素值。

3.4.3 字符归一化处理

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。在多种计算中都经常用到这种方法。

3.5 字符识别

3.5.1 字符识别简述

本文选择的是基于模板匹配的方式,基于模板匹配的OCR的基本过程是:首先我们要建立自动识别的代码,然后把归一化的图像与模板中的字符对比,由于我国的普通小汽车车牌第一位字符是汉字,分别代表各个省的简称,然后第二位是A~Z的字母,接下来的后五位则是数字和字母的混合搭配。所以我们在对比的时候为了提高效率和准确性,我们分别对第一位和第二位还有后五位分别识别。最后识别完成后输出识别的车牌的结果,流程图如图3.5.1所示。

建立自动识别的代码表

读取分割且归一化的出来的字符

切割字符保存,并与模板库

进行模板匹配

待识别字符与模板字符相减,值越小相似度

越大,找到最小的一个即为匹配的最好的

识别完成,输出此模板对应值

图3.5.1车牌识别系统流程图

License plate recognition system flow chart

3.5.2 字符识别的分类

车牌字符识别方法基于模式识别理论,主要有以下几类:

(1)结构识别;

他由识别及分析两部分组成,识别部分主要组成是:预处理、基元抽取(包括基元和子图像之间的关系)和结构分析。分析部分包括基元选择及结构推理。

(2)统计识别;

统计模式识别的目的在于确定已知样本所属的类别。它以数学上的决策理论为依据,并根据此理论建立了统计学识别模型。其基本模型是在对研究的图像进行大量的统计分析,找出规律性认识,抽出反应图像本质特点进行识别。

(3)基于BP神经网络的字符识别;

通常所说的BP神经网络模型,即误差后向传播神经网络,是神经网络中使用最广泛的一类,网络分为三层分别是输入层,隐层还有输入层,层与层之间多采用全互联方式同一层单元之间不存在互连连接。

(4)基于模板匹配的字符识别;

模板匹配是数字图像处理的重要组成部分之一。是把根据已知模式到另外一幅图中寻找相应模式的处理方法就叫做模板匹配。

3.5.3 基于模板匹配的字符识别[10]

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

4 实验分析

4.1车牌定位过程及分析

我们首先将通过MATLAB将原始图片通过函数imread读入并且输出如图4-1(a)所示,然后对读入的图像通过rgb2gray进行灰度处理如图4-1(b)所示。

在车牌识别系统中,将一幅图像装换为另一种类型是非常有用的,因为如果采用原始采集的彩色图像,它里面则包含的大量的无用信息,从而对识别的过程中造成干扰,会造成存储的浪费以及在车牌识别系统中拖慢识别的速度,而且投入使用中将大大的提高硬件的要求,从而造成了经济成本的上升,所以我们将要对原始采集的对象通过代码进行灰度化处理,将其变成灰度图像。

图4-1(a) 车辆牌照原始图像

Figure 1 (a) the license plates of the original image

图4-1(b)灰度图像及直方图

Figure 4-1 (b) Gray image and histogram

边缘检测选用不同的额算子或者阈值都会对结果造成很大的影响,经过反复试验,我们选取了canny算子,并且选用0.19的阈值进行边缘检测,通过代码I2=edge(I1,'canny',0.19,'both');就能得到边缘检测的图像如图4-1(c)所示

图4-1(c)边缘检测图像

Figure 4-1 (c) image edge detection

本文通过对图像进行腐蚀、膨胀,对其实现闭运算,最后还用了bwareaopen来去除对象中不相干的小对象。由此得到车牌图像的初步定位,通过函数输出图像如图4-1(d)所示。

图4-1(d)图像闭运算及处理

Figure 4-1 (d) image closed operation and processing

经过上述过程,我们只要确定车牌底色RGB对应的各自灰度范围,然后在行方向统计在此颜色范围内的像素点数量,设定合理的阈值,确定车牌在行方向的合理区域,然后在分割出行方向区域内,同理统计Y方向的像素点数量,然后在从Y方向合理区域的图中分割出行方向的合理区域,最终确定车牌的区域,实现定位。如图4-1(e)所示。

图4-1(e)车牌定位图像

Figure 4-1 (e) license plate localization image

4.2 车牌字符识别

上述过程完成车牌定位以后,我们将对分割出来的车牌图像进一步的车牌处理[11],实验过程中我们队截取的车牌做了灰度化如图图4-2(a)所示、二值化[12]如图图4-2(b)所示、滤波处理图4-2(c)及闭运算图4-2(d)。

图4-2(a)车牌灰度图像

Figure 4-2 (a) license plate gray image

基于MATLAB的车牌识别

liccode=char(['0':'9' 'A':'Z' '京津沪渝冀晋辽吉黑苏浙皖闽赣鲁豫鄂湘粤琼川贵云陕甘蒙新青藏桂宁港']); %建立自动识别字符代码表 l=1; [m2,n2]=size(subcol); for k=findmax-4:findmax+3 cleft=markcol5(k)-maxwidth/2; cright=markcol5(k)+maxwidth/2-2; if cleft<1 cleft=1; cright=maxwidth; end if cright>n2 cright=n2; cleft=n2-maxwidth; end SegBw1=sbw(rowtop:rowbot,cleft:cright); SegBw2 = imresize(SegBw1,[32 16]); %变换为32行*16列标准子图 if l==1 %第一位汉字识别 kmin=37; kmax=68; elseif l==2 %第二位A~Z 字母识别 kmin=11; kmax=36; elseif l>=3 & l<=5 %第三、四位0~9 A~Z字母和数字识别 kmin=1; kmax=36; else %第五~七位0~9 数字识别 kmin=1; kmax=10; end for k2=kmin:kmax fname=strcat('D:\sample\',liccode(k2),'.bmp'); SamBw2 = imread(fname,'bmp'); SubBw2 = SamBw2-SegBw2; Dmax=0; for k1=1:32 for l1=1:16 if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 ) Dmax=Dmax+1; end end end Error(k2)=Dmax;

车牌识别地matlab程序

( 附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 " figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 ¥ figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型 level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22); %Step4 对得到二值图像作开闭操作进行滤波 、 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界

基于MATLAB的车牌识别系统研究

上海交通大学 硕士学位论文 基于MATLAB的车牌识别系统研究 姓名:王璐 申请学位级别:硕士 专业:电工理论与新技术 指导教师:陈洪亮 20090101

基于MATLAB的车牌识别系统研究 摘 要 近几年,车牌识别系统作为智能交通的一个重要方向越来越受到重视。车牌识别系统可以应用于停车场管理系统、高速公路超速管理系统、城市十字路口的“电子警察”、小区车辆管理系统等各个领域,对国家的安全发展有很大的作用。虽然目前已有一些车牌识别系统相关产品出现,但是对其算法的研究发展从没有停止,仍有许多学者在做着进一步的研究改进。 本文首先对车牌识别系统的现状和已有的技术进行了深入的研究,在研究的基础上开发出一个基于MATLAB的车牌识别系统。确定了整体设计方案,其中软件部分包括车牌定位、车牌字符切分及车牌字符识别三个模块。车牌定位模块中提出了基于小波变换的车牌边缘提取的算法,以及车牌二次定位的算法,提高了系统在光照条件较差的情况下的定位准确率,该算法对于各种底色的车牌具有良好的适应性;车牌的二值化采用了改进的Otus算法,重新划分了其两维直方图的区域,改进后的算法大大减少了运行时间,对于各种类型的车牌都能达到较好的二值化效果;针对BP神经网络字符识别算法,采用有动量的梯度下降法训练网络,减小了神经网络学习过程的振荡趋势,使得BP网络能够较快的达到收敛,完成车牌字符的识别。对模板匹配算法和BP网络算法进行对比,证明了BP网络算法要优于模板匹配算法。 根据上述算法搭建了一个测试平台。整个测试平台的软件部分采用MATLAB的M语言编写。通过测试平台,对353幅卡口汽车照片进行车牌识别,测试系统的性能。测试结果表明,本课题设计的车牌识别系统可有效地实现车牌识别,为今后的产品化奠定了很好的技术基础。 关键词:车牌识别,小波变换,Otsu算法,模板匹配,BP网络,MATLAB I

基于matlab的车牌号码识别程序代码

基于matlab的汽车牌照识别程序 摘要:本次作业的任务是设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处理,车牌定位,字符分割,然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取车牌中的字母和数字,给出文本形式的车牌号码。 关键词:车牌识别,matlab,神经网络 1 引言 随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehicle license plate recognition system,简称LPR)对于交通管理、治安处罚等工作的智能化起着十分重要的作用。它可广泛应用于交通流量检测,交通控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。由于牌照是机动车辆管理的唯一标识符号,因此,车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。 2 车辆牌照识别系统工作原理 车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。 3 车辆牌照识别系统组成 (1)图像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。 (2)车牌定位:从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。 (3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 分院(系)信息科学与工程专业 学生姓名学号 设计题目车牌识别系统设计 内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生 分析问题和解决问题的能力,还能培养一定的科研能力。 1.牌照识别系统应包括车辆检测、图像采集、牌照识别等几 部分。 2.当车辆检测部分检测到车辆到达时,触发图像采集单元,采 集当前的视频图像。 3.牌照识别单元对图像进行处理,定位出牌照位置,再将牌 照中的字符分割出来进行识别,然后组成牌照号码输出。 进度安排: 19周:Matlab环境熟悉与基础知识学习 19周:课程设计选题与题目分析 20周:程序设计编程实现 20周:课程设计验收与答辩 指导教师(签字): 年月日学院院长(签字): 年月日 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置;

matlab车牌识别课程设计报告(附源代码)

Matlab程序设计任务书 目录

一.课程设计目的 (3) 二.设计原理 (3) 三.详细设计步骤 (3) 四. 设计结果及分析 (18) 五. 总结 (19) 六. 设计体会 (20) 七. 参考文献 (21) 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。 流程图: 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。 基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小, 然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照条件,使采集到的图像最利于识别。 clear ; close all;

matlab车牌识别程序代码

% 车牌识别程序主体 clc; close all; clear all; %========================================================== %说明: % % %=========================================================== % ==============测定算法执行的时间,开始计时================= tic %%%%%记录程序运行时间 %=====================读入图片================================ [fn,pn,fi]=uigetfile('*.jpg','选择图片'); I=imread([pn fn]); figure; imshow(I); title('原始图像');%显示原始图像 chepailujing=[pn fn] I_bai=I; [PY2,PY1,PX2,PX1]=caitu_fenge(I); % I=rgb2hsv(I); % [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai);%用HSI模型识别蓝色,用rgb模型识别白色 %================分割车牌区域================================= %===============车牌区域根据面积二次修正====================== [PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1); %==============更新图片============================= Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu %==============考虑用腐蚀解决蓝色车问题============= bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像 %==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686.jpg bw=rgb2gray(bw);figure,imshow(bw);title('灰度图像'); %================倾斜校正====================== qingxiejiao=rando_bianhuan(bw) bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);title('倾斜校正');%取值为负值向右旋转 %============================================== bw=im2bw(bw,graythresh(bw));%figure,imshow(bw); bw=bwmorph(bw,'hbreak',inf);%figure,imshow(bw); bw=bwmorph(bw,'spur',inf);%figure,imshow(bw);title('擦除之前');

车牌识别的matlab程序

附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('3.jpg');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22); %Step4 对得到二值图像作开闭操作进行滤波 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界 figure,imshow(grd);title('图像边缘提取');%输出图像边缘 bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算 figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算

车牌识别的matlab程序(程序-讲解-模板)

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像

for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角 x1=first_point(1)+4; %坐标值修正 x2=last_point(1)-4; y1=first_point(2)+4;

基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统 一、对车辆图像进行预处理 1.载入车牌图像: function [d]=main(jpg) [filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'}); if(filename == 0), return, end global FILENAME %定义全局变量 FILENAME = [pathname filename]; I=imread(FILENAME); figure(1),imshow(I);title('原图像');%将车牌的原图显示出来结果如下:

2.将彩图转换为灰度图并绘制直方图: I1=rgb2gray(I);%将彩图转换为灰度图 figure(2),subplot(1,2,1),imshow(I1);title('灰度图像'); figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');%绘制灰度图的直方图结果如下所示: 3. 用roberts算子进行边缘检测: I2=edge(I1,'roberts',0.18,'both');%选择阈值0.18,用roberts算子进行边缘检测 figure(3),imshow(I2);title('roberts 算子边缘检测图像'); 结果如下:

4.图像实施腐蚀操作: se=[1;1;1]; I3=imerode(I2,se);%对图像实施腐蚀操作,即膨胀的反操作figure(4),imshow(I3);title('腐蚀后图像'); 5.平滑图像 se=strel('rectangle',[25,25]);%构造结构元素以正方形构造一个se

基于Matlab的车牌识别实现源码

function[]=main(jpg) close all clc tic %测定算法执行的时间 [fn,pn]=uigetfile('timg1,jpg','选择图片') %读入图片 I=imread([pn,fn]); figure,imshow(I);title('原始图像'); %显示原始图像 Im1=rgb2gray(I); figure(2), subplot(1,2,1), imshow(Im1); title('灰度图'); figure(2), subplot(1,2,2), imhist(Im1); title('灰度图的直方图'); %显示图像的直方图 Tiao=imadjust(Im1,[0.19,0.78],[0,1]); %调整图片 figure(3), subplot(1,2,1), imshow(Tiao);title('增强灰度图'); figure(3), subplot(1,2,2), imhist(Tiao); title('增强灰度图的直方图'); Im2=edge(Tiao,'Roberts','both'); %使用sobel算子进行边缘检测figure(4), imshow(Im2); title('sobel算子实现边缘检测') se=[1;1;1]; Im3=imerode(Im2,se); figure(5), imshow(Im3);

se=strel('square',40);%'rectangle',[25,25]/'diamond',25/ Im4=imclose(Im3,se); figure(6), imshow(Im4); title('平滑图像的轮廓'); Im5=bwareaopen(Im4,1500); figure(7), imshow(Im5); title('移除小对象'); [y,x,z]=size(Im5); %返回Im5各维的尺寸,并存储在变量y、x、z中 Im6=double(Im5); %将Im5换成双精度数值 %开始横向扫描 tic %tic计时开始,toc结束,计算tic与toc之间程序的运行时间 Blue_y=zeros(y,1); %产生y*1的全0矩阵 for i=1:y %逐行扫描 for j=1:x if(Im6(i,j,1)==1)%如果Im6图像中坐标为(i,j)的点值为1,即为移除小对象的白色区域, Blue_y(i,1)= Blue_y(i,1)+1;%则y*1列矩阵的相应像素点的元素值加1, end end end [temp MaxY]=max(Blue_y);%temp为向量Blue_y的矩阵中的最大值,MaxY为该值的索引(最大值在向量中的位置) %返回包含最大元素的列,即白色区域最宽的列 %Y方向车牌区域确定 figure(8),subplot(1,2,1), plot(0:y-1,Blue_y),title('行方向白色像素点累计'),xlabel('行数'),ylabel('个数'); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2

基于Matlab的车牌识别算法

基于Matlab的车牌识别算法 摘要 车牌系统是计算机视觉和模式识别技术在智能交通领域的重要应用课题之一。车牌识别系统是以特定目标为对象的专用计算机系统,该系统主要包括三个内容:车牌定位、字符分割和字符识别。其中车牌定位的目的就是从所拍摄的汽车图像中确定车牌的位置,从而便于后续的字符分割和字符识别工作。目前常用的方法有:基于模板匹配的方法、基于特征的方法和神经网络法等。 本设计采用基于模板匹配算法和基于人工神经网络算法对车牌进行定位识别,此算法只对蓝底白字车牌进行分割识别,对黑底白字车牌原则上整个算法可直接适用,。此算法分割出的图像像素值和模板图像达到了一致,由此便避免了切割出的图像像素值不一致所带来的问题。但对白底黑字车牌、黄底黑字车牌,需要对车牌定位算法进行调整,并将图像反转(0变1、1变0)。 关键词:车牌识别系统;字符分割;车牌定位

LICENSE PLATE RECOGNITION ALGORITHM BASED ON MATLAB ABSTRACT License plate system is a computer vision and pattern recognition technology in one of the important application research topic in the field of intelligent transportation. License plate recognition system based on specific goals of a special computer system, the system mainly includes three contents: license plate locating, character segmentation and character recognition. One of the purpose of license plate location is taken from the auto locate the license plate in the image, so as to facilitate the subsequent work character segmentation and character recognition. Now commonly used methods are: based on template matching method, based on the characteristics of the method and neural network, etc. This design USES based on template matching algorithm and based on artificial neural network algorithm to locate license plate recognition, the algorithm is only for blue white license plate segmentation recognition, the algorithm can be directly applicable in principle to the black white plate,. This algorithm to segment the image pixel values and template image, thus to avoid the cut out in the process of image pixel values are not consistent. But black on white background and black text plate, yellow bottom plate, adjustments need to license plate localization algorithm, and the image inversion of (0, 1, 1, 0). Key words: license plate recognition system; Character segmentation; License plate location

基于matlab的车牌定位源程序及运行结果 (1)

I=imread('E:\毕业设计\基于matlab的车牌定位的源程\车牌识别程序 \Car1.jpg') [y,x,z]=size(I); myI=double(I); tic Blue_y=zeros(y,1); for i=1:y for j=1:x if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3) <=142)&&(myI(i,j,3)>=119))) Blue_y(i,1)= Blue_y(i,1)+1; end end end [temp MaxY]=max(Blue_y); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2=10))&&((myI(i,j,3) <=65)&&(myI(i,j,3)>=40))) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1PX1)) PX2=PX2-1; end PX1=PX1-2; PX2=PX2+2; Plate=I(PY1:PY2,PX1-2:PX2,:); t=toc figure,imshow(I); figure,plot(Blue_y);grid

最新车牌识别系统MATLAB源代码完整解析

clc; clear all; close all; [filename, pathname, filterindex] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';... '*.*','All Files' }, '选择待处理图像', ... 'images\01.jpg'); file = fullfile(pathname, filename);%文件路径和文件名创建合成完整文件名 id = Get_Id(file);%得到file中的所有对象 Img = imread(file);%根据路径和文件名读取图片到Img [Plate, bw, Loc] = Pre_Process(Img); % 车牌区域预处理 result = Plate_Process(Plate, id); % 车牌区域二值化处理 % 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割bw = Segmation(result); words = Main_Process(bw); % 主流程处理 Write_Mask(words, id); % 写出到模板库 str = Pattern_Recognition(words); % 识别 function id = Get_Id(file) % 获取图像id信息 % 输入参数: % file——图像路径 % 输出参数: % id——图像id信息 info = imfinfo(file); FS = [422227 354169 293184 235413 214202 ... 130938 490061 120297 98686 137193 ... 80558 46208 69947 58110 62115 ... 59072 52168 60457 53979 50223]; id = find(FS == info.FileSize); if isempty(id) warndlg('未建立该图像模板库,可能运行出错!', '警告'); id = 1; end function R = Cubic_Spline(P) % 三次样条插值 % 输入参数: % P——节点矩阵 % 输出参数: % R——样条节点矩阵

基于Matlab的车牌识别(完整版)

基于Matlab的车牌识别 摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。 一、设计原理 车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。 二、设计步骤 总体步骤为: 车辆→图像采集→图像预处理→车牌定位

→字符分割→字符定位→输出结果 基本的步骤: a.车牌定位,定位图片中的车牌位置; b.车牌字符分割,把车牌中的字符分割出来; c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。 车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。 (1)车牌定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。 流程图: (2)车牌字符分割 : 完成车牌区域的定位后,再将车牌区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足车牌的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 导入原始图像 图像预处理增强效果图像 边缘提取 车牌定位 对图像开闭运算

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像'); I_final=bwareaopen(I_close,2000); %去除聚团灰度值小于2000的部分 subplot(3,2,6),imshow(I_final),title('形态滤波后图像'); %========================== 车牌分割============================= I_new=zeros(size(I_final,1),size(I_final,2)); location_of_1=[]; for i=1:size(I_final,1) %寻找二值图像中白的点的位置 for j=1:size(I_final,2) if I_final(i,j)==1; newlocation=[i,j]; location_of_1=[location_of_1;newlocation]; end end end mini=inf;maxi=0; for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角

基于MATLAB的车牌识别课程设计

MATLAB课程设计报告书 课题名称基于MATLAB的车牌识别课程设计 姓名 学号 学院 专业 指导教师 2016年6月21日

基于MATLAB的车牌识别课程设计 目录 一.课程设计目的……………………………………………二.设计原理…………………………………………………三.详细设计步骤…………………………………………… 四. 设计结果及分析………………………………………… 五. 总结……………………………………………………… 六. 设计体会………………………………………………… 七. 参考文献…………………………………………………

一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤:

1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。 牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合

车牌识别matlab程序[1]

[, pathname] = uigetfile({'*.jpg', 'JPEG文件(*.jpg)';'*.bmp','BMP文件(*.bmp)';}); if( == 0), return, end global %声明全局变量 = [pathname ]; I=imread(); imshow(I); %显示图像I I1=rgb2gray(I);%RGB图转化为灰度图 figure,imshow(I1); w1=medfilt2(I1); figure,imshow(w1); s1=histeq(w1,256); figure,imshow(s1); t1=imadjust(s1); figure,imshow(t1); I2=edge(t1,'robert',0.15,'both'); %用ROBERT算子提取图像边缘 figure,imshow(I2); se=[1;1;1]; I3=imerode(I2,se); %弱化二进制图像I2的边缘 figure,imshow(I3);%为定位车牌,将白色区域膨胀,腐蚀去无关的小物件,包括车牌字符(下面两句) se=strel('rectangle',[25,20]); %用来腐蚀的形状为矩形,面积20*25 I4=imclose(I3,se); figure,imshow(I4); I5=bwareaopen(I4,2000); %去除图像中面积过小的,可以肯定不是车牌的区域。 figure,imshow(I5); [y,x,z]=size(I5); %z=1。y,x分别为I5图像的高和宽 myI=double(I5) %myI=I5; tic %begin横向扫描 white_y=zeros(y,1); %white_y为y行1列的零矩阵 for i=1:y for j=1:x if(myI(i,j,1)==1) %如果myI(i,j,1)即myI图像中坐标为(i,j)的点为白色 %则white_y的相应行的元素white_y(i,1)值加1 white_y(i,1)= white_y(i,1)+1; end end end [temp MaxY]=max(white_y); %temp为向量white_y的元素中的最大值,MaxY为该值的索引(在向量中的位置)

相关文档
最新文档