《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于低功耗嵌入式系统的车牌定位算法
基于低功耗嵌入式系统的车牌定位算法
2017年微型机与应用第3期
李震,唐莉萍
东华大学 信息科学与技术学院,上海 201620
摘要: 文章给出了自行设计的在低功耗嵌入式平台上实现车牌定位检测的算法。首先通过Sobel水平算子对车牌图像进行垂直边缘检测,运用形态学方法对边缘图像进行闭运算得到连通图块。然后根据连通区域轮廓确定最小外接矩形,解决车牌位置断节问题,得到车牌候选区域。最后根据车牌特征对提取出的车牌候选区域进行筛选实现准确的车牌定位。实验结果证明了该算法的有效性,而且在复杂背景下也具有较好的鲁棒性和自适应性。
Abstract:
Key words :

  李震,唐莉萍

  (东华大学 信息科学与技术学院,上海 201620)

       摘要:文章给出了自行设计的在低功耗嵌入式平台上实现车牌定位检测的算法。首先通过Sobel水平算子对车牌图像进行垂直边缘检测,运用形态学方法对边缘图像进行闭运算得到连通图块。然后根据连通区域轮廓确定最小外接矩形,解决车牌位置断节问题,得到车牌候选区域。最后根据车牌特征对提取出的车牌候选区域进行筛选实现准确的车牌定位。实验结果证明了该算法的有效性,而且在复杂背景下也具有较好的鲁棒性和自适应性。

  关键词:车牌定位;Sobel算子;形态学;闭运算

  中图分类号:TP391.41文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.03.014

  引用格式:李震,唐莉萍.基于低功耗嵌入式系统的车牌定位算法[J].微型机与应用,2017,36(3):45-48,58.

0引言

  在大型停车场的出入口和停车智能收费场所都装有摄像头,对进出场所的车辆进行图像拍摄,以获取车辆的车牌号。对含有车辆的图像进行车牌识别是车辆收费管理系统的一个重要环节。在车牌识别中,要实现字符的正确分割和识别,首先需要完成对车辆车牌的精确定位。车牌定位的精度直接影响监控系统的性能[1]。多数收费管理系统采用的方案是摄像头加PC,由摄像头采集图像,由PC通过图像处理算法得到车牌号。这种方法不易实现活动场所的车牌识别。因此基于嵌入式平台的移动车牌识别成为一个新的研究热点。目前主流的嵌入式平台有三种:ARM平台、DSP平台和FPGA平台。

  基于ARM平台主要使用ARM9、ARM11或者CortexA8处理器,例如文献[2]用三星的ARM9芯片读取CMOS摄像头采集的车辆图像进行车牌区域判断;文献[3]将CortexA8芯片运行于Linux操作系统,并借助于OpenCV图形图像处理库中成熟的函数实现车牌的定位;张海霞选择ARM11开发板(S3C6410为微处理器核心)作为嵌入式车牌识别系统的核心硬件电路[4]。基于DSP平台的主流处理器是德州仪器TMS系列,例如左宗鹏等人采用TMS320DM642读取SAA7113采集的图像数据,通过改进的BP神经网络算法实现车牌定位和识别[5]。基于FPGA平台的内核是定制的软核处理器,如郑存芳等人用FPGA通过定制的Nios Ⅱ软核调用接口读取CCD摄像头的图像数据,运用边缘检测方法进行车牌定位[6];郑存芳对比基于PC或DSP的车牌识别系统,提出了基于FPGA的车牌识别系统研究与实现方案[7]。还有研究人员将FPGA和DSP结合在一起实现车牌识别[8]。

  以上文献给出的嵌入式平台,硬件平台采用的处理器大多为中高端产品,产品的投入成本较高。在软件方面有的需要运行在特定的操作系统,有些需要借助特殊的图形图像处理软件,将会引起处理器内存开销过大,影响系统的运行速度。本文研究将低端、低功耗嵌入式处理器引入移动车牌识别系统,无需操作系统,通过对相关图像处理算法进行改进,直接在硬件电路中完成车牌定位,为后续字符的正确分割和识别提供保障。

1系统组成

  本系统采用Aptina公司的MT9P031 CMOS传感器作为图像采集器件,这种传感器具有高分辨率、高帧率、与处理器接口简单的特点。图像有效像素为500万,在全分辨率条件下帧率为14帧/s,在640×480像素下的帧率可达50帧/s,与处理器连接仅需要两线串行接口。主控处理器选用意法半导体公司的STM32F429ZGT6,其内核为CortexM4,最高主频达180 MHz,内存容量为256 KB,自带8~14位并行Camera接口,传输速率为54 Mb/s。系统要在硬件中直接对图像进行各种处理,需要足够的内存交换数据,因此增加64 KB外部存储器件SDRAM。为了能保存历史数据,硬件部分预留了SD卡接口。根据移动车牌识别的特点,系统与上位机采用WiFi通信模式。系统采用锂电池供电,当检测的图像不变时,系统自动进入休眠状态,每200 ms自动唤醒一次。若检测到图像有变化时,立即执行图像处理算法,这样可以有效降低移动车牌识别的系统功耗。硬件系统框图如图1所示。 

001.jpg

2定位算法

  车牌定位是从一张拍摄到的图像中定位出车牌的位置,并提取出车牌图像。由于CortexM4的硬件资源有限,要求算法的复杂度不能太高。为了保证定位算法的实时性,需要对CMOS传感器采集到的图像进行截取,在含有车辆运动的全景图像中,截取640×480像素的车辆目标图像作为目标车辆的最佳区域,再在该区域进行车牌定位。定位算法包括以下几个步骤:

  (1)图像二值化处理;

  (2)二值化图像快速边缘检测;

  (3)确定车牌候选区域;

  (4)候选车牌区的外接矩形划定;

  (5)对候选车牌区筛选确定最终车牌区域。

  2.1快速边缘检测的实现

  我国车牌的颜色特征主要分为4类:蓝底白字(蓝牌),黄底黑字(黄牌),白底黑字(白牌),黑底白字(黑牌)。车牌颜色虽然不一,但是它们具有共同的特点:(1)都有矩形线段围成的边框;(2)边框内的字符呈水平排列,并且分布间隔较均匀;(3)均表现为丰富的纹理特征,很容易捕捉到边缘信息;(4)车牌具有统一的标准尺寸。针对以上特点,可以运用边缘检测算法对图像进行初步处理。

  图像处理算法中常用的边缘检测算子包括Laplacian算子、Canny算子和Sobel算子。Laplacian算子是一种求图像的二阶导数算子,它将在图像边缘处产生一个陡峭的交叉。在通常情况下,Laplacian算子也能检测出边缘,但是其检测方向不分水平和垂直,算法的复杂度高。Canny边缘检测算子具有很好的边缘检测性能,在图像处理中得到了广泛的应用。但是Canny边缘检测需要完成对图像的高斯滤波去噪,从原始灰度图中求出水平、垂直两个方向的梯度图,以及综合梯度图,再对3种梯度图进行非极大抑制,进行边缘连接等步骤,在PC中都非常难以保证算法的实时性。Sobel算子原理是对图像求一阶的水平与垂直方向导数,根据导数值的大小判断是否是边缘。Sobel算子分为垂直边缘算子和水平边缘算子,其卷积模版为:

  6V)KJVNDY8P}I7I{DW9O3[O.png

  3种边缘检测算法得到的结果如图2所示。对比边缘检测结果,Canny检测获得的边缘最清晰,Sobel边缘检测的清晰度结果介于Canny检测和Laplacian之间。虽然Canny检测获得的边缘最清晰,从车牌定位的目的考虑,边缘检测的最终目的并不是要刻画出图像清晰的边缘,而只是要确定车牌的一个具体区域。并且Canny边缘检测算法的复杂度远高于Sobel算子,不仅无法满足处理器实时处理的要求,还会消耗处理器的大量内存,在硬件电路中无法实现,因此边缘检测算法选用Sobel算子。

002.jpg

  由于嵌入式系统要求执行的图像处理算法必须运算量小,占用RAM少,所以采用以块代点的方法,将图像分成大小为64×48的100个小块,因车辆是左右对称结构,按照从图像底部往上寻找的方式找对称块,这是因为大多数车牌的位置离图像的底部较近。经实验数据测定和分析,当找到15对对称的图像小块后,车牌就能快速锁定在这30个区域块中。然后对找到的30个区域块进行Sobel算子边缘检测。

  由于汽车的车牌边框是有规则的边缘,并且车牌的字符是有规律的排列,因此相对于水平边缘车牌的垂直边缘更为丰富。而汽车的车身却有丰富的水平边缘,垂直边缘不明显。根据车牌和车辆边缘特征的不同,本文仅使用Sobel算子对找到的30个区域块进行水平方向求导,这样可以大大减小处理器的内存开销,降低算法的复杂度,提高处理器的运算速度,在硬件电路上实现边缘检测。作为对比,对图像进行了垂直方向和水平垂直两个方向同时求导,结果如图3所示。从检测结果可以看到汽车的前端车牌附近有很多的水平边缘,这是由车头位置的排气孔、汽车厂家标志等产生的。这些多余的水平边缘很容易干扰车牌定位的结果,导致最终搜索不到真正的车牌位置。因此本文采用Sobel水平算子实现快速边缘检测。 

003.jpg

  2.2确定车牌候选区域

  在提取车牌图像中垂直方向的边缘后,需要得到的二值边缘图像进行数学形态学运算,将车牌区域连通为一个闭合的区域。图像处理中常用的数学形态学运算分别为开运算和闭运算。开运算是对图像先腐蚀再膨胀,能够使得图像的轮廓变得更加光滑,并且可以断开狭窄的间断以及消除细小的突出。闭运算是对图像先膨胀再腐蚀,与开运算相反的是,闭运算通常能够弥补狭窄的间断以及细长的鸿沟,并且能够消除细小的空洞,填补轮廓线中的断裂。针对2.1节Sobel水平求导得到的边缘图像进行开、闭两种运算操作,结果如图4所示。

004.jpg

  对比图4可以发现由于腐蚀的效果太强,导致开运算膨胀没有效果,图像中几乎没有有用信息。而闭运算则将图像中车牌区域附近的一些边缘连成图块,包括车牌中的字符也被连成图块,这些连接成块的区域形状不一,组成了车牌的候选区域,如图4(a)所示。

  由图4结果对比可知,对得到的二值边缘图像只需要进行闭运算,就可以完成对候选区域的确定。这样可以进一步减少运算量,提高车牌定位的实时性。

  2.3字符外接矩形断节处理

  我国标准车辆的车牌是由一个省份汉字、一个城市字母和5个字母或阿拉伯数字组成的字符序列。每个字符的宽度为45 mm,高度为90 mm,间隔符的宽度为10 mm,除了第二个和第三个字符之间的间距为 34 mm 外,字符之间的间隔宽度为12 mm,如图5(b)车牌沪F C0439。

  图5(b)中字符F和字符C的距离大于其他相邻字符的距离。这个距离越大,字符区域轮廓就越大,需要的字符外接矩形也就越大。当字符外接矩形设置较小时,导致沪F和C0439分隔开,这样就只能选中距离较近的字符,如图5(b)。由于车牌中间的字符断开,必将影响车牌的准确定位。经过反复实验,在保证相邻字符距离最大时,车牌字符之间不发生断节现象,取字符外接矩形的宽度为29个像素点,高度为9个像素点。

005.jpg

  3车牌定位区筛选

  经过以上步骤处理后的图像,能够定位出几个车牌的候选区域。这些候选区域中,除了真正的车牌以外,其余的是汽车标志、车灯或者排气孔等,如图6所示。

006.jpg

  图6车牌候选区为了在候选区域中正确定位车牌位置,可以根据我国车牌的特点以及安装特征进行判断。实际车牌的长宽比为定值约为2.85~3.33,图像中车牌的像素比也应该在此范围;车牌一般安装在车辆的正中心偏下位置,外接矩形的角度应该小于10度;外接矩形的中心应该位于图像中心线附近。根据这三个条件可设置一个车牌判别公式:

  f(A,R,CX)=Σλixi

  其中,A为外接矩形的角度,R为车牌的长宽比,CX为外接矩形的中心横坐标,λi为3个条件的权重,xi为限制条件。将候选区外接矩形的3个参数代入这个公式,满足f(A,R,CX)>0.9时就能准确找到车牌的位置。

4实验结果

  将本文的车牌定位算法在本设计中的硬件平台上进行车牌定位检测。使用的嵌入式处理器为STM32F429,芯片运行主频为180 MHz。图7给出了该算法在实际应用中检测的部分图片的效果。

007.jpg

  为了验证算法的效率和准确率,本文对不同时间段的照片进行了实验,白天照片测试了65张,傍晚的照片测试了60张,夜晚的照片测试了62张,实验结果如表1所示。

008.jpg

  从实验结果分析,白天定位准确率较低,原因是阳光的光线照射对车牌边缘检测存在干扰,而且更多的边缘信息导致每张照片定位的平均耗时也相对较长。傍晚的阳光没有那么强烈,摄像头能够捕获到相对柔和的照片,光线对边缘信息的干扰会相对减少,因此准确率上升的同时耗时也有所下降。夜晚时,光线明显不足,导致车牌边缘信息存在一定的丢失,导致检测耗时下降和准确率下降。

5结束语

  本文提出一种基于低功耗嵌入式系统的车牌定位检测算法。首先使用Sobel水平算子对车牌图像进行垂直边缘检测,运用形态学方法对边缘图像进行闭运算得到连通图块。再根据连通区域轮廓确定最小外接矩形,解决车牌位置断节问题,从而得到车牌候选区域,最后根据车牌结构特征对提取出的车牌候选区域进行筛选,得到准确的车牌定位。实验结果表明该方法有效,而且在复杂背景下也具有较好的鲁棒性和自适应性。

参考文献

  [1] ANAGNOSTOPOULOS C N E, ANAGNOSTOPOULOS I E, LOUMOS V, et al. A license platerecognition algorithm for intelligent transportation system applications[J]. IEEE Transactions on Intelligent transportation systems, 2006, 7(3): 377-392.

  [2] 孔繁荣, 丁志刚. 基于嵌入式的车辆牌照识别系统设计[J]. 计算机应用与软件, 2015, 32(10): 223-226.

  [3] 张海霞. 基于ARM的车牌识别系统的研制[J]. 华北电力大学学报, 2012, 18(6): 49-51.


此内容为AET网站原创,未经授权禁止转载。