DIY编程器网

标题: 智能交通之汽车车牌定位识别设计与实现,软硬件协同 [打印本页]

作者: admin    时间: 2015-4-27 19:33
标题: 智能交通之汽车车牌定位识别设计与实现,软硬件协同
车牌识别的应用前景
          基于计算机图象处理和字符识别技术的车牌自动识别技术,有着极其广阔的推广应用前景。
           
          1、车牌识别技术在地方上的应用
          基于计算机数字识别技术的车牌自动识别技术,在收费站、停车场、加油站和居民小区、高级宾馆、饭店出入口等场所,有着极其广阔的推广应用前景,可以实现车辆的自动监控、自动登记、自动查询等功能,也可以用于集装箱,货运列车的自动抄号等。
           
          用于高速公路收费管理:一旦车牌自动识别技术到了实用阶段,它可以首先推广应用到高速公路收费站管理。它可以使高速公路行驶的车辆不必停车而实现收费管理。
           
          用于城市交通车辆管理:车牌自动识别技术还可以与汽车的外形、颜色等参数结合起来使用,有其可以适用于城市机动车辆的档案管理工作、特殊的交通管理工作,能有效地提高交通流量,加强安全保卫工作,如帮助交管部门自动捕捉违章汽车牌照号码,自动捕获违章车辆;帮助公安部门自动监测在逃车辆、寻找罪犯汽车,解决通缉车辆、套牌车辆和被盗汽车的自动稽查问题,可以自动告警,通知执勤人员拦查,克服了人工拦查工作量大、漏报率高、工作危险性大等问题。
           
          停车场管理:在停车场出、入口处,设有车牌自动识别系统,对进出停车场的车辆自动识别,并根据数据库中的车牌数据判断是否是已买(或租)车位的车辆,对已买(或租)的车辆放行,并自动记录其出入停车场时间,以便出现车辆被盗等情况时查询,对进入停车场的已买(或租)车位的车辆自动将其车位处的挡车器打开,以便车辆停放;对其它车辆,将自动记录其出入停车场的时间,以便计时收费,对进入停车场的其他车辆自动分配车位并将其车位处的挡车器打开,以便车辆停放。
           
          2、车牌识别技术在部队的应用
           车牌自动识别技术作为车辆识别的先迸技术手段,在部队可以用于以下几个方面:
          军事禁区车辆出、入识别:对某部军车进行登记,其车牌及外贸、颜色等信息记录在计算机数据库中,在该军事禁区大门处,设置车牌自动识别系统,对进出车辆自动识别,并根据数据中的车牌数据和外貌、颜色等特征参数,判断是否时该部军车,对该部军车自动放行,使其能够不停车甚至不减速通过,这种快速通行能力会为军事行动赢得宝贵的时间;同时,自动实施记录军车出入大门的时间,以便及时准确地掌握出车情况,实现对车辆的精确管理,如有车辆未按时归队,该系统能自动报警;对该部对外车辆,自动识别并禁止通行,按有关规定要求登记、审批后,方可允许其进入。
           
          动车场(库)车辆出、入管理:在车场(库)出入口设置车牌自动识别系统,对进出车辆自动进行识别并实时记录车辆出入大门的时间,以便及时准确地掌握出车情况,实现对车辆的精确管理,如有车辆未按时返回,该系统能自动报警。
           
          哨所(关卡)车辆通行管理:在哨所(关卡)设置车牌自动识别系统,准许通行车辆的车牌信息输入计算机数据库中,可被自动识别并放行,往返一次后,数据库中的车牌信息随即删除;其余车辆自动识别后一律禁止通行并自动报警,通知警卫人员拦查、等级后移交保卫部门处理。
           
          三、车牌识别的技术难点
          车牌识别系统发展迅速,各国公司都相继推出是何本国车牌特征的LPR系统,LPR研究由于受到多方面的限制,其技术还存在着一些不足。目前车牌识别技术存在的最大的问题是不确定性引起的识别率的问题,特别是针对不同条件LPR系统的满足适应性条件下的识别率问题。
           
          从采用车牌识别技术的高速公路管理部门反馈的信息来看,目前这种技术能够达到的最大精度只有95%,还有5%的车辆系统识别不出车牌。影响识别率的原因较多,大致归结于车牌本身的特征和外界特征两大方面:
           
          (1) 车牌的外形设计、制造等多方面因素使得车牌识别系统的复杂性提高, 不确定性增大。这些情况包括:
           
          (a)   车牌缺乏统一的标准。根据中华人民和国公共安全行业标准对机动车辆牌的有关规定,车牌的规格、颜色和适用范围各不相同。例如:小汽车牌用的是蓝底白字;大型汽车所用的黄底黑字;军用或警用的是白底黑字、红字。缺乏统一的标准,使得车牌识别过程中字符分割难度较大,缺乏统一的模式规则的指 导作用。
          (b)   车牌的质量无法保证。有些车牌比较脏或已污损,有些车牌的字符模糊不清,对光线的散射性不好。这些不确定性都极大的影响车牌识别的准确率。
          (c)   车牌附近环境恶劣,有较复杂的外形或挡车器等,不利于车牌定位分割。   
                                 
          (2)   外界环境特征也是增加车牌识别系统不确定性,影响识别率的重要因素之一。这些情况包括:
          (a)   外界光照条件各不相同,白天和晚上光照不同。光照对图象质量的影响较大。不同光照的角度,对车牌反光的不均匀度影响也较大。不同时间,不同的其后条件,以及背景光、车牌反光程度最终决定了车牌区域的亮度特征。从实验过程可以看出这些外界条件对车牌的粗定位和精确定位影响较大。
          (b)   外界背景的复杂度也影响着车牌的定位率。背景中也车牌区域特征相似区域的大小反映了背景的噪声程度。如与车牌字符相似的背景远处的广告牌易影响车牌的粗定位 。
        四、车牌定位的FPGA硬件实现顶层电路结构
          本设计使用Atlys Spartan?-6 FPGA 开发套件硬件平台,利用其上的Xilinx  Spartan?-6 XC6LX16-CS324的大容量逻辑资源完成车牌定位的FPAG全硬件设计。车牌定位电路应用的FPGA型号为XC6LX16-CS324,此FPGA具有 2278个slice,32个DSP48A1,Block RAM blocks最大是576kb,2个CMT(4个DCM,2个PLL)。
           
          对于本设计的车牌定位电路是一个图像处理的电路,因此对存储器资源要求的比较大。在Atlys Spartan?-6 FPGA 开发套件硬件平台上有48Mbytes 的外部存储器资源可用。
           
          系统整体框图如下:
           
       

         图1. 车牌定位的FPGA硬件实现顶层电路结构

         

          五、车牌定位的FPGA实现的各个子模块
          5.1车牌图像的预处理
          图像预处理的作用是突出图像中的有用信息,不同的图像预处理对应于不同的图像分割以获得最佳的车牌特征。车牌定位预处理目标是突出车牌区域的特征,抑制其它无用的特征。图像的预处理包括图像灰度化、平滑滤波、锐化等内容。
           
          5.1.1 图像的灰度化
          灰度图的特征是:只有亮度信息,没有颜色信息。彩色位图结构复杂,难以处理,灰度图较简单,易于处理。灰度图的亮度信息,已经足以判断对车牌进行定位了,所以选择较容易处理的灰度图。灰度图是只含亮度信息不含色彩信息的图像,其中亮度值量化为256级。灰度图进行算法处理比较方便,并且更为重要的是可以在FPGA处理时大大的节省存储空间。
           
          首先RGB值一样,且图像数据就是调色板索引值,也就是实际的RGB的亮度值,又因调色板是256色的,所以图像数据中一个字节代表一个。如果是彩色的256色图,则经过图像处理算法后,可能会产生不属于这256种颜色的新颜色,而真彩色RGB图像必须用三个与图像尺寸相同的矩阵来存储,这样计算代价过大。所以,一般采用256级灰度图来进行处理。由于采集的图像是彩色图像,所以要把彩色图像转化为灰度图像。灰度变换有时又被称为图像的对比度增强或对比度拉伸。假定输入图像中的一个像素的灰度级为Z,经过T(Z)函数变换后输出图像对应的灰度级为Z,其中要求Z和Z都要在图像的灰度范围之内。根据T()形式,可以将灰度变换分为线性变换和非线性变换。具体应用中采用何种T(),需要根据变换的要求而定。灰度变换的具体方法是:首先将原始图像从RGB空间转化为YCbCr空间,Y分量包含亮度信息,Cb和Cr分量包含色度和饱和度信息,然后仅提取Y分量生成灰度图。彩色图像由RGB空间变换为YCbCr空间的转换关系为: 彩色图像由YCbCr空间变换为RGB空间的转换关系为:
           
          所以,最终我们得到RGB颜色和灰度值的转换关系:
           
        Gray=0.229R+0.587G+0.114B

         

          在本设计中,我们将0.299用10位定点小数表示:
           
        0.299=10’h132,

        0.587=10’h259,

          0.114=10’h074;
          RGB转灰度图的系统框图如下:
       

                     图2 .RGB转灰度图的系统框图

         
        5.1.2 图像平滑

          图像平滑主要是为了消除噪声。噪声并不限于人眼所能看的见的失真和变形,有些噪声只有在进行图像处理时才可以发现。图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。图像中的噪声往往和信号交织在一起,尤其是乘性噪声,如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,如何既平滑掉噪声有尽量保持图像细节,是图像平滑主要研究的任务。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时系统中所要提取的汽车边缘信息也主要集中在其高频部分,因此,如何去掉高频干扰又同时保持边缘信息,是我们研究的内容。为了去除噪声,有必要对图像进行平滑,可以采用低通滤波的方法去除高频干扰。图像平滑包括空域法和频域法两大类,在空域法中,图像平滑的常用方法是采用均值滤波或中值滤波,对于均值滤波,它是用一个有奇数点的滑动窗口在图像上滑动,将窗口中心点对应的图像像素点的灰度值用窗口内的各个点的灰度值的平均值代替,如果滑动窗口规定了在取均值过程中窗口各个像素点所占的权重,也就是各个像素点的系数,这时候就称为加权均值滤波;对于中值滤波,它对一个滑动窗口内的诸像素灰度值排序,用其中间值代替窗口中心的像素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护图像尖锐的边缘,少受模糊。本设计采用的是中值滤波的方法。
           
          中值滤波器的FPGA设计。中值滤波器主要由3部分组成:滤波窗口生成模块,行列计数器模块,滤波算法模块。
           
          5.1.2.1 滤波窗口生成模块的FPGA设计
          图像预处理算法往往针对邻域像素操作。以3×3的窗口为例,利用2个FIFO和6个寄存器对图像的行、列数据进行存储,设计滤波窗口如图1所示。
           
       

         图3 .3×3滤波窗口的FPGA设计框图

         

          本方案将这些存储器进行级联,按照流水线操作,在对第n行数据存入内部存储器的同时,由于存储器之间的级联,可将先进入存储器的第n-1行,第n-2行……第1行顺次存储到下一级存储器,这样在一个时钟周期内,虽然处理器只从外部存储器中读取一个数据,却可以实现数据并行输出,从而形成图像窗口。
           
          本设计方案中使用的FIFO(Fillst In Fillst out)称为先进先出存储器, FlFO在xilinx提供的ISE可以通过IP核生成器定制,FIFO主要应用参数有需要存储的数据深度和数据宽度。数据深度表示 FIFO可以存储的数据量的大小,数据宽度表示每一个数据的位数。因此在此图像处理系统中FIFO的数据深度必须为一帧图像中一行的像素数,使得FIFO内正好储存一行的数据;数据宽度为像素亮度位数——8位。
           
          FIFO1中的数据为图像的第n行像素的亮度值,FlFO1的输入是FIFO2的输出, FIFO2中的数据为视频图像的第n+1行像素的亮度值,第n+2行视频像素亮度值通过3个移位寄存器后输入到FIFO2,q31、q32、q33与FlFO2的三个输出值q21、q22、q23 以及FlF01的三个输出值q11、q12、q13分别对应了3x3窗口的第n+2行,第n+1行和 第n行的输入。为了形成正确的滤波窗口,即要保证q11、q21、q31;q12、q22、q32; q13、q23、q33处在同列不同行的位置。由下图可以看到,此时所形成的数据q11,q12,q13,q21,q22,q23,q31,q32,q33就是滤波所要求的3×3窗口。中心象素点 是q22。
           
       

        图4. 滤波器窗口

         

          5.1.2.2  行列计数器设计
          当窗口中心移动到图像的边缘时,此时,窗口是无效的。但是通常图像的边缘不包含重要的信息,所以当窗口移动到边缘时,可以直接将输出置为0。
        5.1.2.3 滤波算法设计
          对于3×3窗口的中值滤波,采用图3所示的5级比较电路输出中值,其输入数据为图2所示的滤波掩膜所在的图像数据。第一级比较电路由3个三输入比较器C组成,每个比较器每个比较器的输出数据依序排列(参见图示)。将3组比较结果中最小的3个数放在一起、中间的3个数放在一起、最大的3个数放在一起,参加第二级比较。第二级比较电路的原理与第一级类似,输出out1和out9,分别是输入数据中的最大值和最小值, 这2个数据将被舍去不参加下一级比较。参加第三级比较的有 7个数据,其原理类似于前两级比较电路,输出out2和out8分别是该7个数据的最大值和最小值,并且被舍去,仅留下5个数据参加第四级比较。剩下的几级比较电路以类似于先前的原理进行比较。如此,经过5级比较后即可得到9个数据的标准中值滤波输出值mid9。此外,为了保证流水线操作过程中数据的同步性,在第三级和第四级比较电路中需要插入数据寄存器R缓存当前该级中不参与比较的数据。
           
       

        图5. 中值滤波器算法模块

           
          5.2灰度拉伸改善图像质量
          为了增强车辆图像和牌照图像(提取自车辆图像)的对比度,使其明暗鲜明,有利于车牌识别,需要对它们进行灰度拉伸,来改善图像质量。
           
          灰度拉伸是将灰度进行分段线性变换,它将输入图像中某点(x,y)的灰度f(x,y),通过映射函数T,映射成输出图像中的灰度g(x,y),即:g(x,y)=T[f(x,y)]灰度拉伸变换原理图如下图所示,函数表达式为:
           
       

         

          其中,对于256级图像来说,Mg = 255。同时当a = 25, b = 35时灰度拉伸可取得较好效果。  
           
          5.3 图像的边缘测试——求梯度
          对车牌区域检测需要运用车牌区域所特有的属性。按照模式识别原理,应找到车牌区域图像的固有的且与图像其它区域不易混淆的属性,并且所使用的属性在各种环境下摄取的图像具有稳定性。通过分析可知,在各种条件下车牌所在的图像区域稳定可靠的信息是它具有丰富的边缘,因此本文设计了以对边缘信息分析为基础的算法。车牌背景色和字符色之间的对比度比较明显,而且在车牌中几个字符连续出现,在水平方向上形成一系列明暗交替的模式,利用这一特征就可以在图像中对车牌所在的区域进行定位。为了提取这种特征,本文设计并改进了一个水平方向的一维梯度算子:
       

          其中式中R,d的选取与图像中车牌的大小有关。R,d的选取可以根据输入图像的实际情况进行调整,只要保证R/2+d大于车牌中字符笔画的宽度既可起到加强车牌区域边缘特征的作用。在本设计中R暂时取经验值4,d取经验值 2。这种方法是将图像中每一行中R个连续的水平方向梯度值相加,而梯度值则是由水平方向相隔2d-1个点的象素点的灰度的差值。
           
          求梯度的系统框图如下:
           
       

           
        图6. 求梯度的系统框图

         

        5.4 梯度图像的二值化

          为了方便后续的工作,需要对灰度图像进行二值化。根据下式对经过第4步求出的梯度图像进行二值化。根据下式获得阈值。
       

          其中,G(i,j)为梯度处理后的灰度图像的像素值。 根据得到的阈值对灰度图像进行图像的二值化。其二值化的电路框图如下:
           
       

        图7.梯度图像二值化的电路结构

         
        5.5 数学形态学处理

          数学形态学(Mathematical Morphology)是分析几何形状和结构的数学方法,是建立在集合代数基础上,用集合论方法定量描述几何结构的科学吲。数学形态学是由一组形态学的代数算子组成的。最基本的形态学算子有:腐蚀、膨胀、开和闭。对于后两个,开是先腐蚀后膨胀,闭是先膨胀后腐蚀。
           
          腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点;膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。
           
          开运算是先腐蚀后膨胀的过程,可以消除图像上细小的噪声,并平滑物体边界。
           
          闭运算时先膨胀后腐蚀的过程,可以填充物体内细小的空洞,并平滑物体边界。
           
          本设计中,对于先前得到的二值化图像,先用一次膨胀,使车牌区域合并到一起,然后再对其进行一次闭运算,即先膨胀后腐蚀。去掉一些细小的干扰和粘连。
           
          因为本设计中,需要加强的水平和垂直方向的边缘,所以选择如下表所示的结构元素。
           
                                                                         0
                       
                                                                         1
                       
                                                                         0
                       
                                                                         1
                       
                                                                         1
                       
                                                                         1
                       
                                                                         0
                       
                                                                         1
                       
                                                                         0
                       
         图 数学形态学所用的结构元素

         

          数学形态学的FPGA设计,在本设计中,所用的3×3的结构元素,需要一个3×3的窗口,此窗口的设计和中值滤波器中所设计的窗口完全相同。
           
          结构元素的运算单元的设计:
          腐蚀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个非0像素与其覆盖的像素做“与”操作,如果都为1,则该像素为1,否则为0。
           
          膨胀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个非0像素与其覆盖的像素做“与”操作,如果都为0,则该像素为0,否则为1。
           
       

        图8. 数学形态学——腐蚀的FPGA实现框图

         

       

        图9. 数学形态学——膨胀的FPGA实现框图

        5.6 用“投影法”来实现车牌定位
          对数学形态学处理后的二值化的车牌图像沿水平方向进行投影,以确定车牌所在区域。投影值为每一行的白色像素点的累加值。对投影值进行分析,如果投影值大过阈值R时,认为可能是车牌所在区域。如果从该行起连续10行的投影值都大于阐值R,则认为是车牌的可能所在区域,并将其标出。
           
          定位出的车牌可能区域有几个,需要对其进行再次的定位,以确定出车牌所在区域条。本设计中从下往上,对每一个车牌可能区域进行垂直方向的投影,投影值为白色像素点的累加值。然后从左往右查找累加值不为零的投影点。找到后从该点开始,找第一个为零的投影点。根据这两点得到两点间的距离,如果此距离大于预设的经验阈值P,则认定此区域为车牌所在区域,然后将车牌的区域的4个顶点坐标输出。
           
          投影法的FPGA设计框图如下:
       

        图10. 投影法的FPGA设计





欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2