APP下载

基于车牌定位的汽车挡风镜定位分割方法研究

2016-11-02傅诗袁颖泉沈小军潘舟

电脑知识与技术 2016年18期
关键词:智能交通系统

傅诗 袁颖泉 沈小军 潘舟

摘要:针对目前智能交通系统中车脸定位识别技术相对空白的状况,本文提出了一种车辆挡风镜区域定位分割的方法,并用C#进行了系统实现。此方法结合目前比较成熟的车牌定位技术,通过缩小目标区域和图像扫描统计的方法,对二值化后的车辆图像进行了挡风镜区域的定位与分割。经对不同光照、不同车型的车辆图像测试,该算法具有快速、精确、鲁棒性强、自适应性好的优点,为进一步车内人脸定位与识别提供了一定理论与技术基础。本方介绍的识别方法有一定的新颖性,已获得相关发明专利授权。

关键词:智能交通系统;车牌定位;挡风镜区域;统计扫描;定位分割

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)18-0208-03

在智能交通系统中,车牌识别、车标识别、车色彩识别技术都日趋完善,其中以车牌识别技术最为成熟。但在车脸识别技术上,却存在很大空白与不完善之处。车脸识别技术指分析、处理车辆图像正面及挡风镜区域,进而达到车内人脸识别、车内景象分析的目的。在未来的智能交通系统中有着重要的应用价值。本文提出的方法是基于车牌定位技术的[1,2],运用图像扫描统计的方法,定位分割车辆挡风镜区域。图1为本文方法的处理流程。首先根据车牌定位的结果完成挡风镜区域的粗定位,再通过扫描图像特定区域,统计白点,完成挡风镜区域精确定位,最后从原图像中分割出挡风镜区域。

1 车辆图像预处理

对采集车辆图片预处理是车脸识别过程一个重要环节,预处理效果的好坏会影响车牌及挡风镜区域定位的成功率。本文使用均由CCD摄像机采集、以jpg格式存储的车辆图像,处理时将jpg图像封装在C# Bitmap位图对象中。预处理包括灰度化、灰度拉伸、图像平滑、中值滤波[3]、锐化[3]等过程。上述这些过程除灰度化外都不是必需的,仅针对存在缺陷的图像或某些特定处理效果,才实施其他预处理过程。

图2为车辆原始图像,在后续章节中,均以该图片作为示例进行处理。

2 车牌定位

车辆挡风镜区域定位方法是基于车牌定位的,通常情况下,车辆的车牌位置都处于挡风镜区域的正下方,且车牌两侧纵向边缘的延长线穿过挡风镜区域,如图3。通过向两侧适当扩展这两条延长线,可以粗略定位挡风镜区域的纵向边界。与车牌定位技术要求的车牌边缘高精度定位不同,挡风镜区域定位并不必须精确定位车牌边缘。我们只希望获取车牌在整张图片中粗略的位置信息,并在这一基础上去寻找挡风镜的位置。

2.1基于Sobel算子的车牌边缘检测方法

本文采用目前比较成熟的Sobel算子[4,5,6]对车牌边缘进行检测,Sobel算子能根据像素上下、左右相邻像素点灰度加权差在边缘处达到极值这一特征检测目标区域边缘。Sobel算子对于图像里的噪声还具有平滑作用,提供较为精确的边缘方向信息,在不同环境的图像中有着稳定的车牌定位成功率。Sobel算子的水平方向算子Sx和垂直方向算子Sy[1,4]定义如下:

预处理后的车辆图像中的每个像素点都要与这两个核做卷积,Sx对水平边缘响应最大,Sy对垂直边缘响应最大。两个卷积的最大值作为这一个点上的输出,运算结果为边缘幅度图像。对该图像进行二值化、去噪处理。通过模板矩阵寻找车牌四边。每次检测到车牌的一个边缘,记录坐标,并在该位置上添加红色辅助线,直至标记出车牌的四边边缘,如图3所示。

3 挡风镜区域定位与分割

3.1挡风镜区域垂直定位

由图3知,车牌左右边缘延长线l、r垂直穿过了挡风镜区域正中的位置。结合日常经验不难发现,小型机动车挡风镜下延ab宽度约为车牌宽度的3倍。若认为直线l、r将挡风镜区域垂直分割成三部分,则中间部分的上下边缘即线段hg、ef等长,左右两部分的上边缘长度约为下边缘长度的2/3,即dh = 2/3ae、gc = 2/3fb。在实现的软件系统中进行大量测试后,绝大部分小型轿车和面包车均符合这一特点,大型车则有一定偏差。所以,上述方法可以较好的应用在小型车辆挡风镜区域垂直定位上,大型车可以分开另作处理。

通过2.2节中获取的车牌边界坐标yL、yR、xD、xU,可以计算出车牌在水平方向上的长度HD(HorizontalDistance) = yR - yL,车牌在垂直方向上的宽度VD(VerticalDistance) = xD - xU。根据上述规律,将挡风镜下边缘中部线段L2向水平左、右两个方向各扩展长度HD,将挡风镜上沿中部线段L1像两侧各扩展长度2/3HD,记录Y方向的4个纵坐标ULM、DLM、URM、DRM,并以绿线进行标记,如图3。

3.2基于扫描统计方法的挡风镜区域水平定位

图3中车牌垂直边缘的延长线L1、L2并没有提供有关挡风镜区域水平方向的信息,所以仅通过车牌定位完成挡风镜区域的水平定位有较大困难。本文设计了一种基于扫描图像局部区域进行白点统计的水平定位算法。经前几步处理后的车辆图像已经是二值化图像,只包含白色与黑色信息,其中黑色表示背景颜色,白色表示车辆及其他物体边缘,挡风镜上下水平边缘处聚集了大量白色像素信息,且红、绿辅助线的颜色均为固定值,可以轻易剔除。所以,对图像自上向下进行水平扫描,统计图像中每行白色像素点的数目,当扫描至挡风镜上下边缘区域时,统计结果必定会出现白点数目的峰值,由此即可获取上下边缘的坐标。

3.2.1缩小扫描范围

考虑到图像中的其他物体(例如散热栅、车道线、路缘)同样含有大量白色像素(干扰信息)。与噪声不同,这些干扰信息通常是大块连续的白点,若直接对整张图像进行扫描,这些干扰信息会对挡风镜水平边缘的检测造成很大干扰。因此,在进行图像扫描之前需要缩小待扫描区域,尽可能将这些干扰信息排除在扫描区域之外。

在垂直方向上,只需在车牌宽度范围内进行扫描操作,即图3中直线l、r之间的范围。原因有二,其一是车辆边缘以及车辆两侧道路上的物体包含大量白色干扰像素,上述扫描范围可以在最大程度上排除这些干扰信息;其二是扫描过程统计的是每行白色像素点的数目,挡风镜上下边缘的白色像素点在直线l~r范围内最为连续和集中。

在水平方向上,一类干扰信息来源于同样含有大量白色信息的车牌与散热栅区域。考虑到散热栅通常位于车牌正上方,且与车牌宽度相当,根据3.1节计算出的车牌宽度VD,将车牌沿X轴负方向垂直平移3~4个VD距离,使其上边缘移至图3中线段的位置,将作为扫描时的水平下边界。经过大量测试,移动这一长度可以将散热栅、车牌等干扰信息排除在扫描范围之外。

另一类干扰信息来源于车辆尾部边缘(如图3中线段AB上方的白色边缘),这块区域会影响挡风镜上边缘的检测,所以先进行第一次图像扫描检测车尾边缘。扫描的纵向范围即为前文确定的直线l~r之间,由于图像上方的噪声多为离散分布,且预处理时已对主要噪声进行了抑制,所以在扫描至车尾边缘之前,不会存在某一行出现连续大量白点,而车尾处聚集的大量连续白色信息则会成为扫描结果中的第一个峰值,称为突变。

扫描过程算法描述:

10 for (int h = 0; h < 图像高度; h++) {

20 for(int w = 扫描左边界; w <= 扫描右边界; w++)

30 If(该点是白点) statistics[h] ++;

40 If(statistics[h] >= 临界值) {

50 保存当前行索引;

60 break;

70 }

80 }

以图3中直线l为左边界、直线r为右边界、E为起点向Y轴正方向进行自上向下扫描。设置一个退出扫描临界值,该值大小可通过实际测试得到。按上述规则扫描,用数组statistics记录每行白点数目,数组下标表示当前扫描行索引。当扫描至某一行,其白点数目第一次超过临界值时,认为发生突变,终止扫描并记录该行索引h,即为车尾边缘在X方向的坐标。将h适当减小△h,得到一个新的高度,使其在图3中越过车尾边缘,即为待扫描区域的水平上边界,如图3中线段AB。本文使用的所有图片均为尺寸1360×1024的jpg图片,经过大量测试,临界值选取130较为合适,选取30为宜。

综上所述,图3中用绿线标出的矩形区域ABCD即为挡风镜水平定位的待扫描区域。

3.2.2挡风镜区域水平定位

在待扫描区域ABCD中,以线段AD为左边界、BC为右边界、AB为上边界、CD为下边界、A点为起点、C为终点进行自左向右、自上向下扫描。同样以数组statistics记录每一行白色像素点的数目。在区域ABCD内,统计结果中应出现两个白点数目的峰值,对应挡风镜上下边缘。在实现的软件系统中,每次横向定位均取出当次扫描统计结果中白点最多的一行,故横向定位至少进行两次。记上边缘横坐标为TM、下边缘横坐标为IM,并以水平绿线进行标记,如图3所示。每次标记水平绿线时将其之上10行与之下10行的像素均设为黑色,因为横向定位取到的都是当次白点数目的峰值,峰值附近若干行内白点数目较多,将这些行置为黑色即可保证下次定位到的行不在上一次峰值行附近,从而快速找到还未定位的边缘。

扫面过程算法描述:

10 for (int h = 扫描上边界; h <= 扫描下边界; h++)

20 for (int w = 扫描左边界; w <= 扫描右边界; w++)

30 If (该点是白点) statistics[h] ++;

40 获取数组statistics中最大值的索引Index,保存Index值;

50 将图像中第Index行上下10行RGB值设为(0, 0, 0);

60 if (找到挡风镜上边界 && 找到挡风镜下边界) 退出;

70 else 转到步骤10, 继续;

须注意的是,由于数组长度n = Length(AD) = Length(BC),当前扫描行在图像中的坐标h不再等于数组下标i,正确的坐标应为:h = i + Length(EA)。

3.3提取挡风镜区域图像

根据3.1和3.2.2我们获取了挡风镜区域EFGH四个顶点的全部坐标:E(TM, ULM)、F(TM, URM)、G(IM, DRM)、H(IM, DLM),如图4所示。利用C#中Bitmap类的Clone()函数复制挡风镜的矩形区域,并利用C#中Graphics类的画图功能在该矩形区域上用红线完成对挡风镜梯形区域边界的分割,如图5所示。至此,挡风镜区域的定位与分割完成。

4 实验结果与结论

在Window7操作系统下,用C#实现了车辆挡风镜区域定位分割系统。对采集到的273张不同车型、包含完整车身与车牌的图像应用本文所述的基于Sobel算子的车牌定位算法进行车牌定位测试,成功率达到了90%左右。对于车牌定位成功的图像应用本文的挡风镜定位分割方法进行测试,成功率达到了98%。本文介绍的挡风镜区域定位分割方法的优点是逻辑性强,无需复杂的数学计算,完全将图像作为一个二维矩阵进行处理,充分利用了车牌定位技术、图像扫描原理与统计方法。在车牌定位成功的情况下,挡风镜定位成功率极高。基于Sobel算子的车牌定位算法具有适应性强的特点,在复杂环境下有着稳定的车牌定位成功率。因此,基于车牌定位与扫描统计的车辆挡风镜定位分割方法在智能交通领域具有一定的应用价值。

参考文献:

[1]Wenjing Jia,Huaifeng Zhang, Xiangjian He.and Massimo Piccardi,“Mean shift for accurate license plate localization”,Intelligent Transportation Systems, 2005:566-571.

[2]S.Kim, D.Kim, Y.Ryu.and G.Kim,“A robust license-plate extraction method under complex image condition”, Pattern Recognition, Proceedings. 16th International Conference on, 2002,l(3):216-219.

[3] 赵春江.C#数字图像处理算法典型实例[M].北京:人民邮电出版社,2009:134-144.

[4] 孙洪淋,廖继旺.基于Sobel算子的图像边缘检测及其实现[J].人工智能识别技术,2004, 15(2): 87-94.

[5] 靳鹏飞.一种改进的Sobel图像边缘检测算法[J].应用光学,2008,7(4):779-783.

[6] 吴国伟,谢金法,郭志强.基于Sobel算子的车辆轮廓边缘检测算法[J].河南科技大学学报.2009,30(6):38-41.

猜你喜欢

智能交通系统
一种快速车流量检测算法