《武汉工程大学学报》  2017年03期 273-280   出版日期:2017-06-24   ISSN:1674-2869   CN:42-1779/TQ
基于色彩纹理的车牌定位系统设计


随着社会经济的快速发展,汽车已经成为人们日常生活中必不可少的交通工具,但是随着汽车数量近些年呈几何增长的态势,汽车数量已经成为制约城市发展的一大难题,如何有效的管理数量巨大的汽车这一问题已经迫在眉睫. 传统人工管理车辆的办法已经无法满足现代追求高效的工作需求,而智能车辆管理系统以其准确高效的优势而越来越受到人们的青睐,因此作为智能停车管理系统的车牌识别技术将会进一步普及. 车牌识别大致分为车牌定位、车牌字符分割以及字符识别三个步骤. 车牌定位是汽车牌照识别算法的第一步,后面所有步骤都是在这一步的基础上进行的,本研究的车牌定位方法可应用于智能车辆管理系统中门禁的车牌识别. 车辆进入摄像头采集图像区域后触发摄像头采集图像,通常一张采集的图像中只会包含一个车牌的信息. 所以本研究中所提到的拍摄下来的图片都是只包含一个牌照信息的图片. 当前比较流行的两种车牌定位的方法:一种是利用字符纹理来对车牌定位,另一种是利用车牌的色彩来对车牌定位. 基于字符纹理的车牌定位系统的工作方式有以下缺点:对于车牌区域以外的其他汽车外观、部件等与文字相似的干扰信息会被认为有较多的竖向纹理;对于有些汽车上的车灯、车标、散热片等也有很丰富的竖向纹理,这些会对车牌的定位造成很大程度的干扰. 基于色彩信息对车牌进行定位的缺陷在于人们追求汽车颜色的个性化,什么样的颜色都可能出现,必然也有和车牌底色一样颜色的车体. 利用色彩信息也很容易受到外界光源变化的影响,所以仅仅利用车牌的色彩信息的车牌定位算法,识别率也很低. 基于色彩纹理的车牌定位方法是同时基于车牌区域的彩色信息、灰度图片的灰度值跳变以及车牌灰度图片的纵向纹理丰富等特点来实现的. 车牌区域较为显著的特点是在蓝色的牌照背景上白色的字符,虽然在蓝色车体上也有白色的字,但是字符组合以及字符间距没有固定的规律可循,而且牌照区域的文字整体纵向纹理丰富. 由上面的描述,基于色彩纹理的车牌定位方法是逐行扫描所拍摄的图片,并统计每行从蓝、白的像素跳变次数,然后根据跳变次数进行分析从而确定车牌区域. 车牌区域的最小像素跳变应为14次,且整个区域的色彩变化次数不会有巨大差异,最后找出符合要求的位置而得到车牌的位置. 1 车牌图像的预处理 车牌定位系统首先通过图像采集设备采集到RGB(Red Green Blue)彩色图像,获取到图像之后要对图像进行必要的预处理. 预处理第一步是需要对原始的采集图像分辨率进行调整,将图像调整到800×600,既能保证图像中的有用的车牌信息又能减少系统分析处理的速度. 对图像分辨率调整之后对图像的色彩模型进行转换,将RGB图像转换到HSV(Hue Saturation Valve)色彩空间,再对各通道图像进行中值滤波消除图像中噪声对分析带来的干扰. 图像滤波后开始对图像进行二值化处理,生成两幅二值化图像处理方法的优点在于既能突出车牌区域的有用信息又能消除其他区域干扰信息,而且对同一幅图像生成的两幅二值图像进行扫描分析比生成一幅二值化图像进行车牌区域分析而言,生成两幅二值化图像能最小化分析误差.一幅将车牌背景颜色设为白色其他颜色设为黑色(定义为图A),一幅将车牌字符颜色设为白色其他颜色设为黑色(定义为图B),通过扫描分析两幅二值图像来消除车牌中的干扰信息,并计算符合车牌色彩纹理特征的像素个数,并将个数存入h(y)中. 对h(y)统计结果进行分析,保留图像中符合车牌区域,去除图像中不符合车牌区域,最后得到精准的车牌区域图像。基于色彩纹理的车牌定位系统实现车牌定位全部步骤如图1所示.1.1 图像采集首先将采集到的并输入的彩色图片分辨率调整为800×600,经过大量的实践表明,分辨率过大会影响系统的响应速度,800×600的图片内已经有充分丰富的信息,足以满足实验要求. 因此不仅能减少系统分析所需的时间,还能减少图片的储存空间. 调整分辨率必须按图像原比例调整,防止图像内容被拉伸或压缩,不利于后面的分析步骤. 具体的可以先将图片裁剪成长宽比为4∶3的图片,再调整分辨率. 车牌字符所在的坐标一般都在整张图像中间,裁剪过程不会裁剪掉后面所需要车牌信息. 车牌彩色图如图2所示. 1.2  HSV空间模型图片由RGB的表示方式变化成HSV的表示方式. H(Hue)是色度,用来取得不同的色彩;S(Saturation)是饱和度,用来表示色彩的深浅,该数值低则色彩浅,数值高则色彩深;V(Value)是明度,用来表示色彩的明暗程度. HSV表示方法比较符合实际的情况,也更适用于基于色彩方面的图像处理. HSV空间锥形模型[1]如图3所示. 将图1变换后H、S、V三个通道灰度图像分别如图4所示. 1.3 图像中值滤波预处理的最后一步是将取得到的3个通道的灰度图片进行中值滤波处理,并根据定位的所需要求进行二值化[2]处理. 在彩色图像转换为灰度图像的时候无论用什么方法都会产生一些噪点,中值滤波的作用在于抑制图像转换色彩空间后产生的噪声,这样可以提高识别的准确度确保定位的有效性,尽量的消除各种干扰信息,并且很好保留了后面分析极其重要的边沿信息[3]. 将图3经过中值滤波处理之后得到图5~图7. 1.4 图像二值化经过上面三步之后图像的预处理之后开始对车牌图像进行二值化处理,将得到的H、S和V 3个通道的图像根据分析的要求进行二值化,以方便后续的分析. 二值化是将图片变换成黑白两色的图片,其中的白色颜色的部分设定为需要突出的颜色部分,黑色的部分设定为其它干扰色. 该算法主要是需要计算有效的蓝色像素点和有效的白色像素点,所以需要两幅二值化的图片[4]. 一幅是将蓝色设置为白色,其他颜色转换为黑色的二值化图片;另一幅是将白色设置为白色,其他干扰色彩设置为黑色的二值化图片. 获取蓝色的二值化图片,首先在图片的H通道图片中将蓝色的像素点的灰度值置成255,即在灰度图上使其显示成白色. 根据大量的实验车牌的蓝色像素点在H通道中取值范围由90到118之间是较为合适的,经过这一步之后得出的图如图8所示. 但是在HSV空间中,如果只对H通道图像某个范围内的颜色二值化,这个过程会忽略白色和黑色信息的干扰,使得二值化后的图片包含不需要的信息,所以如果只想二值化蓝色还需要配合S和V通道的信息来除去黑色和白色的信息. 把白色和色彩相对较淡的部分信息从图片中去除,结果如图9所示. 去除黑色和色彩很暗的部分信息如图10所示.将3幅图像的进行与运算得到最后结果为蓝色二值化图片,如图11所示. 取白色二值化图像的原理以及实现方法同样是利用上面的过程,只是要将需要处理信息的参数进行调整,而且每个H值都包含有白色的信息,所以取白色二值化图片时不需要H通道的信息,得到图12. 2 车牌定位2.1 统计车牌有效像素得到二值化图片数据之后,对两张图片中将符合车牌色彩纹理像素进行统计[5]. 这一步进行之前先定义了一个数组h(y),数据类型为整数型,逐行统计图片像素,将得到的结果保存在数组中,数组中的值为每一行有效像素个数,则数组中的y值为行的纵坐标值. 寻找符合车牌色彩纹理有效像素是通过扫描蓝色二值化图片(为了分析方便将该图定义为图像A)来实现的,如果检测到某个位置的像素值为255,则该位置在彩色图片上为蓝色的点,扫描对应白色二值化图片(将其定义为图像B)上相应的位置和图像A该点所在行后面的100个像素点,查找这100个像素点内是否存在图像A对应的像素值为0的点,而在图像B相应的位置上像素值为255的点,如果条件成立,对应行的h(y)的数值上加1并退出此次的扫描[6]. 如果对应图像A的数值为0则在彩色图片上对应的点的颜色不是蓝色,接下来检测图像B对应该点值是否为255,不是就跳出循环进入下一次循环,如果是的话,以该行对应点为起点,扫描图像A、B的起点后面的100个点,查找这100个位置内是否有存在图像B中对应的数值为0的点,图像A中对应的点为255,如果上面的条件满足,就将对应行的h(y)的数值上加1并退出此次的扫描. 车牌区域长度不会超过所采集的图像长度的一半,因此对应点扫描范围为100个像素点. 由实验初期的描述可知,采集图像大小为800×600,所以车牌区域长度不会超过400像素,车牌上大约有8个相等大小字符,每个字符的长度应为50个像素大小. 车牌上距离最大的两个字符应该是白点左右的两个字符,可以近似认为车牌字符之间的最大距离为100个像素[7],图13是统计有效像素具体流程. 2.2 车牌纵向定位流程图像中每一行的白色像素点越多,则说明有效像素个数越多. 车牌的区域可以基于以上步骤计算出来. 对于7个字符的车牌,扫描每个字符像素值跳变次数最小为2次,7个字符像素值跳变的次数最小应该为14次,也就是说最少有14个有效的像素点存在. 将有效像素个数小于14的行去除,然后寻找数值变化频率平稳且最大的连续区域[8],具体算法的流程如图14所示. 图14中用当前的值作为确定数组变化比较平缓的条件,大于前一个值的[13],因为在车牌区域内,有效像素的跳变次数从最大到最小不会超过这个范围[9]. 2.3 车牌区域定位结果上述计算可以得出车牌区域在整个图像中的纵坐标. 最后截出车牌区域图片,如图15所示. 上一步已经确定了较为精确的车牌纵向的图片,确定车牌区域的纵坐标与确定车牌区域横坐标所用的方法是同一方法,同样是先生成有效像素的直方图,并分析直方图从而得到车牌的区域,如图16所示. 从图16中上面的直方图中可以看出车牌区域的白色像素点比较多,每个字符都对应一个白色的像素块,每个字符之间的像素块之间都是不连接但是之间的间隔是比较接近的,其他干扰因素的像素块间隔是没规律的,而且间隔都比较远[10]. 对该信息进行分析就能寻找到车牌的精确位置. 根据上述的分析,车牌的字符所对应的像素块之间的间隔都比较近,而且仅仅包含车牌的图像区域是一个长宽比约为3∶1的长方形,精确定位的车牌区域是没有去除边框以后的,经过多次实验可近似将掉边框后仅剩车牌字符的图像区域长宽比例定为5∶1[11]. 上图14中的图片车牌区域确定纵坐标后的同时可以将车牌的宽度计算出来,依照长和宽的比例为5∶1,可以得到牌照的长度. 结合上面的信息,可以通过图15中的直方图来计算车牌大小的长方形区域,因为那个区域所包含的白色像素点最多,这个区域就包含车牌区域[12-13]. 只需要把图15中有规律的白色像素块的列作为起点和终点的长方形区域找到即可[14],具体程序流程如图17所示. 车牌选择的是5∶1的长宽比的比例,而实际上车牌长度比这个选择的比例长度稍长一些,这样完整的车牌的范围也会包含在内,如果车牌区域横向终点不是以白色像素的列作为结尾,那么说明该区域还不是完全精确的车牌区域,则需要将作为结尾的列数从右往左倒推一列,直到找到白色像素不为0的列作为车牌区域的结尾列[15]. 经过上面图17流程可以得出精确的牌照位置,最终定位结果如图18所示. 3 结 语本文以基于色彩纹理的车牌定位方法实现了对车牌的精确定位,整个设计思路明确,详细地通过实验对定位方法进行了阐述,通过对比两张二值化图像的有效像素和车牌区域有效像素跳变次数,确定车牌的位置,该方法能更好的应对各种个性化的车身颜色给车牌定位过程带来的干扰和误导,具有较好的稳定性和准确性.