基于MATLAB BP神经网络的数字图像识别

基于MATLAB BP神经网络的数字图像识别

        

【摘要】 随着现代社会的发展,信息的形式和数量正在迅猛增长。其中很大一部分是图像,图像可以把事物生动的呈现在我们面前,让我们更直观地接受信息。同时,计算机已经作为一种人们普遍使用的工具为人们的生产生活服务。如今我们也可以把这些技术应用在交通领域。作为智能交通系统(InteUigent Traffic System,简称ITS)中的一个重要组成部分的车牌识别技术,当然就是其中的重点研究对象。车辆牌照识别(License P1ate Recognition,简称LPR),是一种关于计算机的包括图像处理、数学技术、数据库、信息技术以及智能技术于一体的综合技术。用MATLAB做车牌识别比用其他工具有许多优势,因为MATLAB在图像的灰度化、二值化、滤波等方面都有很大优势,所以,本次实验我们利用MATLAB的这些优点来对车牌进行识别。

【关键词】BP神经网络;图像识别;字符识别;特征提取;车牌;Matlab

  一 课题研究背景

(一) 图像识别的提出及应用

随着信息化时代的不断发展,人们越来越多地使用信息化的手段来解决各种问题——办公自动化、先进制造业、电子商务等利用计算机技术而产生的新兴行业正不断靠近我们的生活。在信息社会中,我们每天都接触大量的数据——工作数据、个人数据、无意间获得的数据等——在这些数据中,有些数据需要我们人工处理,而有些则可以利用计算机快速准确的完成——字符识别就是其中的一个范畴。

字符识别是一种图像识别技术,他的输入是一张带有某种字符的图片,而输出则是计算机中对于图片中字符的反应结果。所以,可以广泛的应用于各种领域:如,车牌检测、手写识别、自动阅读器、机器视觉……在生活生产的各个方面都起到了非常重要的作用。

(二)图像识别技术的发展趋势

虽然图像识别技术还不是非常成熟,但现其已经有了很多可喜的成果,比如图像模式识别图像文字识别。并且其还在飞速的发展着,图像识别的应用正朝着不同的领域渗透着,像计算机图像生成图像传输与图像通信,高清晰度电视机器人视觉及图像测量办公室自动化像跟踪及光学制导 医用图像处理与材料分析中的图像分析系统遥感图像处理和空间探测图像变形技术等等。从所列举的图像技术的多方面应用及其理论基础可以看出,它们无一不涉及高科技的前沿课题,充分说明了图像技术是前沿性与基础性的有机统一。

可以预21世纪,图像技术将经历一个飞跃发展的成熟阶段,为深入人民生活创造新的文化环境,成为提高生产的自动化、智能化水平的基础科学之一。图像技术的基础性研究,特别是结合人工智能与视觉处理的新算法,从更高水平提取图像信息的丰富内涵,成为人类运算量最大、直观性最强,与现实世界直接联系的视觉和“形象思维”这一智能的模拟和复现,是一个很难而重要的任务。“图像技术”这一上世纪后期诞生的高科技之花,其前途是不可限量的。

随着21世纪经济全球化和信息时代的发展,作为信息来源的自动检测、图像识别技术越来越受到人们的重视。近年来计算机的飞速发展和数字图像处理技术的日趋成熟,为传统的交通管理带来了巨大转变。图像处理技术发展相当快,而其中对汽车牌照等相关信息的自动采集和管理对于交通车辆管理、园区车辆管理、停车场管理、交警稽查等方面有着十分重要的意义,成为信息处理技术的一项重要研究课题。汽车牌照自动识别系统就是在这样的背景与目的下进行研究开发的。车辆牌照识别(License Plate Recognition,LPR)技术作为交通管理自动化的重要手段之一,其任务是分析、处理汽车监控图像,自动识别汽车牌照号码,并进行相关智能化数据库管理。

(三)图像识别的机理

图像识别是人工智能的一个重要领域。为了编制模拟人类图像识别活动的计算机程序,人们提出了不同的图像识别模型。例如模板匹配模型。这种模型认为,识别某个图像,必须在过去的经验中有这个图像的记忆模式,又叫模板。当前的刺激如果能与大脑中的模板相匹配,这个图像也就被识别了。例如有一个字母A,如果在脑中有个A模板,字母A的大小、方位、形状都与这个A模板完全一致,字母A就被识别了。这个模型简单明了,也容易得到实际应用。但这种模型强调图像必须与脑中的模板完全符合才能加以识别,而事实上人不仅能识别与脑中的模板完全一致的图像,也能识别与模板不完全一致的图像。例如,人们不仅能识别某一个具体的字母A,也能识别印刷体的、手写体的、方向不正、大小不同的各种字母A。同时,人能识别的图像是大量的,如果所识别的每一个图像在脑中都有一个相应的模板,也是不可能的。为了解决模板匹配模型存在的问题,格式塔心理学家又提出了一个原型匹配模型。这种模型认为,在长时记忆中存储的并不是所要识别的无数个模板,而是图像的某些“相似性”。从图像中抽象出来的“相似性”就可作为原型,拿它来检验所要识别的图像。如果能找到一个相似的原型,这个图像也就被识别了。这种模型从神经上和记忆探寻的过程上来看,都比模板匹配模型更适宜,而且还能说明对一些不规则的,但某些方面与原型相似的图像的识别。但是,这种模型没有说明人是怎样对相似的“刺激进行辨别和加工的,它也难以在计算机程序中得到实现。因此又有人提出了一个更复杂的模型,即“泛魔”识别模型。

所谓泛魔,即这个模型把图像识别过程分为不同的层次,每一层次都有承担不同职责的特征分析机制称作一种"小魔鬼",由于有许许多多这样的机制在起作用,因此叫做“泛魔”识别模型。这一模型的特点在于它的层次的划分。

自20世纪60年代初期出现第一代产品开始,经过30多年的不断发展改进,字符识别技术的研究已经取得了令人瞩目的成果目前印刷体的识别技术已经达到较高水平。识别范围也从原来指定的印刷体数字、英文字母和部分符号,发展成为可以自动进行版面分析、表格识别,实现混合文字、多字体、多字号、横竖混排识别的强大的计算机信息快速录入工具。对印刷体汉字的识别率达到98%以上,即使对印刷质量较差的文字其识别率也达到95%以上。

(四)本文的研究内容

本文将以车牌作为研究对象,从数字、字母、汉字开始逐步提高识别的范围,针对图片中的字符提出一套切实可行的识别算法,并且在试验中不断改进。在开发期间,以功能强大的Matlab作为编程平台,利用一些行之有效的技术提高识别算法的性能,从而完成相应的识别软件。

二 算法分析与设计

 (一)特征分析

中国汽车牌照中使用的字符集包括59个汉字、25个大写英文字母(字母不包含I)10个阿拉伯数(0-9),三种类型共94个,且都是印刷体,结构固定、笔画规范。牌照在图像中占有的高度从20个像素到50个像素不等。对于国内牌照来说,一般的车辆正面牌照中水平排列着7个字符,其标准车牌样式XlX2·X3X4X5X6X7;X1是各省,直辖市的简称如“苏” 、“桂”,或者特种车辆类型如“警”;X2是英文字母,表示各省的不同地区;X3从是英文字母或阿拉伯数字; X3X4X5X6X7均是阿拉伯数字。

 (二)技术路线

   1 原理分析

    由于车辆牌照是机动车唯一的管理标识符号,在交通管理中具有不可替代的作用,因此车辆牌照识别系统应具有很高的识别正确率,对环境光照条件、拍摄位置和车辆行驶速度等因素的影响应有较大的容阈,并且要求满足实时性要求。

图2-1 牌照识别系统原理图

该系统是计算机图像处理与字符识别技术在智能化交通管理系统中的应用,它主要由牌照图像的采集和预处理、牌照区域的定位和提取、牌照字符的分割和识别等几个部分组成,如图1所示。其基本工作过程如下:

1)当行驶的车辆经过时,触发埋设在固定位置的传感器,系统被唤醒处于工作状态;一旦连接摄像头光快门的光电传感器被触发,设置在车辆前方、后方和侧面的相机同时拍摄下车辆图像;

2)由摄像机或CCD摄像头拍摄的含有车辆牌照的图像通视频卡输入计算机进行预处理,图像预处理包括图像转换、图像增强、滤波和水平矫正等;

3)由检索模块进行牌照搜索与检测,定位并分割出包含牌照字符号码的矩形区域;

4)对牌照字符进行二值化并分割出单个字符,经归一化后输入字符识别系统进行识别。

2 总体设计方案

车辆牌照识别整个系统主要是由车牌定位和字符识别两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符识别可以分为字符分割与特征提取和单个字符识别两个模块。

为了用于牌照的分割和牌照字符的识别,原始图像应具有适当的亮度,较大的对比度和清晰可辩的牌照图像。但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的距离和角度以及车辆行驶速度等因素的影响,牌照图像可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图像进行识别前的预处理。

牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图像预处理后的原始灰度图像中确定牌照的具体位置,并将包含牌照字符的一块子图像从整个图像中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。

由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。因此,需要对字符在识别之前再进行一次针对性的处理。

车牌识别的最终目的就是对车牌上的文字进行识别。主要应用的为模板匹配方法。

因为系统运行的过程中,主要进行的都是图像处理,在这个过程中要进行大量的数据处理,所以处理器和内存要求比较高,CPU要求主频在600HZ及以上,内存在128MB及以上。系统可以运行于Windows98、Windows2000或者Windows XP操作系统下,程序调试时使用matlab。

三 具体技术路线

(1)图像预处理及边缘提取

在车牌自动识别系统中,车辆图像是通过图像采集卡将运动的车辆图像抓拍下来,并以位图的格式存放到系统内存中,这时的车辆数字图像虽然没有被人为损伤过,但在实际道路上行驶的车辆常会因为各种各样的原因使得所拍摄的车辆图像效果不理想,如外界光线对车牌的不均匀反射、极强阳光形成的车牌处阴影、摄像机快门值设置过大而引起的车辆图像拖影、摄像头聚焦或后背焦没有调整到位而形成的车辆图像不清晰、由于视频传输线而引起的图像质量下降、所拍摄图像中存在的噪声干扰、所安装的车牌不规范或车辆行驶变形等,这些都给车牌的模糊识别增加了难度。图像预处理技术可最大限度提高车牌正确识别率,这些图像预处理包括图像灰度化、平滑、倾斜校正、灰度修正等。

                   

                    图3-1 预处理及边缘提取流程图 

1、图像的采集与转换

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

 

                    (3-1)                                                                             

(3-2)

                   图 3-2 原图和它的灰度图以及灰度直方图

2、边缘提取

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

1)灰度校正

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

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

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

灰度线性变换

        (3-4)                                    

            图3-3 线性图

(3) r(50,200)s(0255) 则:

                    

                       (3-5)                                (4)

                              图3-4 灰度增强后的图像

2)平滑处理

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

通滤波器来滤除噪声,但实际中为了简化算法,也可以直接在空域中用求邻域平均值的方法来削弱噪声的影响,这种方法称为图象平滑处理。例如,某一象素点的邻域S有两种表示方法:8邻域和4邻域分别对应的邻域平均值为        

                      (3-6)      

2

3

i,j

1

4

4

3

2

5

i,j

1

6

7

8

图 3-5 邻域及其邻域模板                                                   (5)

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

          图3-6 平滑处理后的图像

图像中车辆牌照是具有比较显著特征的一块图像区域,这此特征表现在:近似水平的矩形区域;其中字符串都是按水平方向排列的;在整体图像中的位置较为固定。正是由于牌照图像的这些特点,再经过适当的图象变换,它在整幅中可以明显地呈现出其边缘。边缘提取是较经典的算法,此处边缘的提取采用的是Roberts算子。

           图3-7未滤波直接提取出的边缘,经灰度校正后提取的边缘以及经平滑处理后提取的边缘

    对比以上几幅图片,图8的边缘已经模糊掉了。图7中包含的噪声太多,图9未经滤波直接提取出的边缘图像最清晰,所包含的有用信息最多。分析这种情况产生的原因,归纳起来主要有以下方面:

  1、原始图像清晰度比较高,从而简化了预处理

  2、图像的平滑处理会使图像的边缘信息受到损失,图像变得模糊

  3、图像的锐化可以增强图像中物体的边缘轮廓,但同时也使一些噪声得到了增强

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

2 车牌的定位与分割

    车牌定位对车牌识别系统来说至关重要,目前已经提出了很多车牌定位的方法,这些方法都具有一个共同的出发点,即通过牌照区域的特征来判断牌照。根据不同的实现方法,大致可以把现有的定位方法分为直接法和间接法两类。

    1)直接法。直接分析图像的特征,如基于线模板的二值化图像中的角检测算法,该算法利用车牌的边框角点,检测车牌的四个角点,并以此来定位车牌。基于直线边缘识别的图像区域定位算法,并且利用该算法定位车牌的边框线,以此定位车牌。利用车牌的尺寸、字符间距、字符特征等纹理特征定位车牌。利用车牌部分垂直高频丰富的特点先利用小波提取图像的垂直高频信息,然后利用数学形态学方法对小波分解后的细节图像进行一系列的形态运算,进一步消除无用的信息和噪声,以定位车牌。

    2)间接法。主要是指利用神经网络法或者遗传算法定位车牌的方法。利用神经网络和遗传算法等柔性方法进行计算是当前研究热点之一。利用遗传算法对图像进行优化搜索,结合区域特征矢量构造的适应度函数,最终寻找到车牌的牌照区域的最佳定位参量。

目前较为常用的方法是先提取车辆图像的边缘,然后结合车辆牌照的几何特征,分析二值化边缘图像像素在水平和垂直方向的投影,判断出车辆牌照的位置。

                           

                        图3-8 牌照定位于分割流程图

(1)牌照区域的定位

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

              图 3-9 腐蚀后图像,平滑图像的轮廓以及从对象中移除小对象后图像

(2)牌照区域的分割

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

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

(3)车牌进一步处理

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

         图 3-11 裁剪出来的车牌的进一步处理过程

3 字符的分割与归一化

                               图 3-12 字符分割与归一化流程图

(1)字符分割

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

                        图 3-13 分割出来的七个字符图像

(2)字符归一化

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

           

             

           

        

                           图 3-14 归一化处理后的七个字符图像

4 字符的识别

    目前,字符识别方法主要有基于模板匹配算法和基于人工神经网络算法。基于模板匹配算法首先把待识别字符二值化并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。由于这种匹配算法稳定性较差、时间花费也较大,因此,在此基础上提出了基于关键点的匹配算法。此算法先对识别字符进行关键点提取,然后对关键点去噪,最后再确定字符的分类。这种匹配算法只利用了字符的关键点进行匹配,因此,提高了识别速度又具有较高的识别率。基于人工神经网络的算法主要有两种:一种是先对待识别字符进行特征提取,然后用所获得的特征来训练神经网络分类器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。前一种方法识别结果与特征提取有关,而特征提取比较耗时,因此,特征提取是关键。后一种方法无须特征提取和模板匹配,随着相关技术的进步,这种方法更实用。

(1)神经网络

    人工神经网络(ANNs)也称为神经网络或连接模型,是对人脑或自然神经网络若干基本特性的抽象和模拟。但是人工神经网络是近现代才提出来的一种新型技术,所以还有一些缺点,不过它的优点却是非常明显的:①它可以充分逼近任意复杂的非线性关系。②所有定量或定性的信息都等势分布于网络内的各神经元,故有很强的鲁棒性和容错性;采用并行分布的处理方法,使得快速地进行大量运算成为可能。③可学习和自适应不知道或不确定的系统。④能够同时处理定量、定性知识。⑤具有联想和存储功能。⑥具有高速寻找优化解的能力。它能够处理一些环境信息十分复杂、背景不清晰、有磨损、残缺等方面的问题的情况。

(2) BP神经网络

BP神经网络(Back Propagation Neural Network,简称BP神经网络)即反向传输神经网络。BP神经网络可以应付各种数据和能够模拟一种复杂的决定系统。BP神经网络主要是通过一种模拟的方式对对象进行识别,它可以像人认识事物过程一样,逐渐地认清事物从而去模拟实现它。

BP神经网络由1024个输入节点、20个隐层节点、6个输出节点组成。每个节点的激活函数采用O1函数,输出节点的输出值为01二值。训练以后,节点权值保存在配置文件中。在MATLAB工具箱中已经有了BP神经识别的函数,这里使用newlin函数adapt函数,使用这些函数需要输入预期的待学目标的输入范围,指定一个延迟输入信号和一个有延迟输入信号以及学习速度的参数,这样字符就能很好地在MATLAB中得到识别。

BP网络结构:

    基于BP算法的多层前馈型网络将神经元按功能和顺序的不同分为输出层、中间层(隐层)、输出层。输层各神经元负责接收来自外界的输入信息,并传给中间各隐层神经元;隐层是神经网络的内部信息处理层,负责信息变换。根据需要可设计为一层或多层;最后一个隐层将信息传递给输出层神经元经进一步处理后向外界输出信息处理结果同层节点中没有任何耦合,每一层节点的输出只影响下一层节点的输出。网络的学习过程由正向和反向传播两部分组成。反向传播其节点单元特征通常为Sigmoid型{f(X)=1/[1+exp(一Bx)],B>0}。在网络训练阶段用准备好的样本数据依次通过输入层、隐层和输出层。比较输出结果和期望值,若没有达到要求的误差程度或者训练次数,即经过输出层、隐层和输入层,来调节权值,以便使网络成为一定适应能力的模型。

    用matlab 神经网络工具箱,用BP神经网络生成网络函数,部分程序如下:net=newff(pr,[25 1],{'logsig' 'purelin'}, 'traingdx', 'learngdm');

net.trainParam.epochs=3000;

net.trainParam.goal=0.001;

net.trainParam.show=10;

net.trainParam.lr=0.05;

net=train(net,p,t)

即创建和训练神经网络。其中权值函数为“logsig”,学习函数为:“purelin”.运行后,可在matlab上得到:

LOADING......

ans =

LOAD OK.

TRAINGDX, Epoch 0/3000, MSE 18.0267/0.001, Gradient 19.9528/1e-006

TRAINGDX, Epoch 10/3000, MSE 6.55309/0.001, Gradient 1.92177/1e-006

TRAINGDX, Epoch 20/3000, MSE 5.08303/0.001, Gradient 1.59205/1e-006

TRAINGDX, Epoch 30/3000, MSE 3.32551/0.001, Gradient 1.35881/1e-006

TRAINGDX, Epoch 40/3000, MSE 1.70977/0.001, Gradient 0.830963/1e-006

TRAINGDX, Epoch 50/3000, MSE 0.808399/0.001, Gradient 0.588341/1e-006

TRAINGDX, Epoch 60/3000, MSE 0.255181/0.001, Gradient 0.301763/1e-006

TRAINGDX, Epoch 70/3000, MSE 0.0629529/0.001, Gradient 0.146848/1e-006

TRAINGDX, Epoch 80/3000, MSE 0.0175261/0.001, Gradient 0.0906425/1e-006

TRAINGDX, Epoch 90/3000, MSE 0.0146519/0.001, Gradient 0.364925/1e-006

TRAINGDX, Epoch 100/3000, MSE 0.0122441/0.001, Gradient 0.238192/1e-006

TRAINGDX, Epoch 110/3000, MSE 0.010538/0.001, Gradient 0.158065/1e-006

TRAINGDX, Epoch 120/3000, MSE 0.00900871/0.001, Gradient 0.0498804/1e-006

TRAINGDX, Epoch 130/3000, MSE 0.00778895/0.001, Gradient 0.0471643/1e-006

TRAINGDX, Epoch 140/3000, MSE 0.00642256/0.001, Gradient 0.0267898/1e-006

TRAINGDX, Epoch 150/3000, MSE 0.00506427/0.001, Gradient 0.0207391/1e-006

TRAINGDX, Epoch 160/3000, MSE 0.00378743/0.001, Gradient 0.0155848/1e-006

TRAINGDX, Epoch 170/3000, MSE 0.00259925/0.001, Gradient 0.012315/1e-006

TRAINGDX, Epoch 180/3000, MSE 0.00149217/0.001, Gradient 0.0137463/1e-006

TRAINGDX, Epoch 190/3000, MSE 0.00134022/0.001, Gradient 0.0518653/1e-006

TRAINGDX, Epoch 200/3000, MSE 0.00132563/0.001, Gradient 0.0549096/1e-006

TRAINGDX, Epoch 210/3000, MSE 0.00125472/0.001, Gradient 0.0293791/1e-006

TRAINGDX, Epoch 220/3000, MSE 0.00120414/0.001, Gradient 0.0082813/1e-006

TRAINGDX, Epoch 230/3000, MSE 0.00115466/0.001, Gradient 0.00760885/1e-006

TRAINGDX, Epoch 240/3000, MSE 0.00108049/0.001, Gradient 0.00798138/1e-006

TRAINGDX, Epoch 248/3000, MSE 0.000995008/0.001, Gradient 0.00708329/1e-006

TRAINGDX, Performance goal met.

即神经网络训练过程。误差曲线即测试样例经训练后的实际输出结果和期望输出的差值情况。其变化如图21,图22。

         

                         图 3-15 训练过程中误差曲线变化

     图 3-16 训练结束时误差曲线

    可见,当神经网络训练完成后,其样本得出的输出结果和期望输出结果完全相同,即误差为零。下面就图23所示测试样例进行测试。

                        

                            图 3 -17  测试样例

识别结果如下:

FileName:D: est

a =     3

答案正确。其识别图形如图24。

                        图 3-18 识别结果图形

训练后神经网络以及权重结果信息为:

net =

    Neural Network object:

    architecture:

         numInputs: 1

         numLayers: 2

       biasConnect: [1; 1]

      inputConnect: [1; 0]

      layerConnect: [0 0; 1 0]

     outputConnect: [0 1]

     targetConnect: [0 1]

        numOutputs: 1  (read-only)

        numTargets: 1  (read-only)

    numInputDelays: 0  (read-only)

    numLayerDelays: 0  (read-only)

    subobject structures:

            inputs: {1x1 cell} of inputs

            layers: {2x1 cell} of layers

           outputs: {1x2 cell} containing 1 output

           targets: {1x2 cell} containing 1 target

            biases: {2x1 cell} containing 2 biases

      inputWeights: {2x1 cell} containing 1 input weight

      layerWeights: {2x2 cell} containing 1 layer weight

    functions:

          adaptFcn: 'trains'

           initFcn: 'initlay'

        performFcn: 'mse'

          trainFcn: 'traingdx'

    parameters:

        adaptParam: .passes

         initParam: (none)

      performParam: (none)

        trainParam: .epochs, .goal, .lr, .lr_dec,

                    .lr_inc, .max_fail, .max_perf_inc, .mc,

                    .min_grad, .show, .time

    weight and bias values:

                IW: {2x1 cell} containing 1 input weight matrix

                LW: {2x2 cell} containing 1 layer weight matrix

                 b: {2x1 cell} containing 2 bias vectors

    other:

          userdata: (user stuff)

    由此可见,程序可满足期望要求。当然,也经常有识别错误的情况发生。对于识别错误情况的分析可知,主要原因:一是牌照自身的污渍等影响了图像的质量;二是牌照字符的分割失败导致的识别错误;再就是部分字符的形状相似性,比如,B 8A 4 等字符识别结果可能发生混淆的情况。

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

四 总结

(一)课题小结

    在车辆牌照字符识别系统的研究领域,近几年出现了许多切实可行的识别技术和方法,从这些新技术和方法中可以看到两个明显的趋势:一是单一的预处理和识别技术都无法达到理想的结果,多种方法的有机结合才能使系统有效识别能力提高。在此次实验中,也汲取了以上一些算法的思想,结合实际,反复比较,综合分析;二是在有效性和实用的原则下,结合神经网络和人工智能的新技术的应用是研究的一个方向。

    根据车牌特点,一般采用的车牌定位算法有:1.边缘检测定位算法;2.利用哈夫变换进行车牌定位;3.色彩分割提取车牌等。这里我采用的是边缘检测的方法实现定位的。

字符分割的方法也有多种:1. 基于聚类分析的字符分割;2. 投影分割的方法;3.基于模板匹配的字符分割等。最常用的是投影分割,主要是针对在车牌定位,图像预处理后比较规则的车牌图像。优点是程序逻辑设计简单,循环执行功能单一,便于设计和操作,程序执行时间短。

字符识别的基本方法通常又三类:1.结构特征分析方法;2.模板匹配法;3.神经网络法。此处采用的是模板匹配的方法,即是将要识别的字符与事先构造好的模板进行比对,根据与模板的相似度的大小来确定最终的识别结果。

但是系统本身还存在许多不足,距离具体实用的要求仍有很大差距。

(二)体会

本次实验不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。这次USRP让我学到了很多东西,在这整个过程中我们查阅了大量的资料,涉及到方方面面的知识。同时在这期间我们遇到了很多困难,但我们知道做什么开始都不容易,只要定下心来,一步一个脚印的踏踏实实的去做,一定会成功。当然,理论只有应用到实际中才能学着更有意义。学习是一个长期积累的过程,在后的工作、生活中都应该不断的学习,努力提高自己综合素质。此外,我们总结出:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。在整个实验中我懂得了许多东西,也培养了合作的能力,树立了信心,发扬了吃苦耐劳的精神,相信会对今后的学习工作生活有非常重要的影响。同样此次USRP也大大提高了我们的动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个实验做的并非对车牌都合适,但是在设计过程中所学到的学习方法最大收获和财富,相信定会使我受益终身。

参考文献

[1] 夏庆观,盛党红,温秀兰,基于MATLAB GUI的零件图像识别200812月 中国制造业信息化 第37卷 第23

[2] 尹芳, 王卫兵, 陈德运,印刷体英文文档识别系统的设计与实现哈尔滨理工大学学报第13卷第6200812

[3] 汪益民,梅林,张义超,基于OCR技术的书写文字识别系统设计 甘肃科技第23卷第8期2007年8月

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

[5] 朱学芳等,一种自适应细化方法,模式识别与人工智能,Vol.10No.21997(6)

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

[7] 袁志伟,潘晓露.车辆牌照定位的算法研究[J].昆明理工大学学报,2001,26(2)

[8] 刘阳,伊铁源等.数字图象处理应用于车辆牌照的识别.辽宁大学学报.2004

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

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

[11] 梁玮罗剑锋贾云得.一种复杂背景下的多车牌图像分割与识别方法[D]. 2003.

[12]  引,潘云鹤,面向车辆牌照字符识别的预处理算法,计算机应用研究,1999(7)