基于嵌入式Linux和OpenCV的车牌定位方法

2014-12-23 01:10田红鹏
计算机工程与设计 2014年11期
关键词:二值车牌字符

田红鹏,焦 鑫

(西安科技大学 计算机科学与技术学院,陕西 西安710054)

0 引 言

基本的车牌定位方法有5类。基于边缘检测的定位方法[1,2]适合用于车牌区域粗定位,在复杂场景下容易误检;基于颜色分割的定位方法[3]受背景颜色和光照条件的变化影响较大,车身颜色和车牌底色接近时效果较差;基于车牌纹理特征的定位方法[4]不易受车牌大小影响,但对噪声比较敏感;基于数学形态学的定位方法[5]能快速寻找连通区域并消除部分干扰,但是不能精确确定车牌边界,需要和其它方法结合使用;基于机器学习的方法[6]需要预先做大量的样本训练,特征选择是影响该方法性能的关键因素之一。此外,还有一些基于上述基本方法相互结合而成的定位方法[7-9]。多数文献中的车牌定位方法均可在通用计算机上实现[1-9],不便对车牌现场定位,致使采集到的大量信息得不到及时处理。现有嵌入式车牌定位系统高效便携[10],但其灵活性和实用性还有待提高。

本文在嵌入式Linux基础上,将视频监控技术和图像处理技术很好地结合起来,综合利用车牌的颜色信息和字符纹理特征,提出一种鲁棒性较强车牌定位方法。

1 嵌入式Linux

嵌入式Linux是以Linux内核为基础,对Linux裁剪、修改后,嵌入到专用计算机系统上的操作系统。

OpenCV (open source computer vision library)是 由Intel公司发起并开发的一个开放源代码的计算机视觉库,实现了图像处理和计算机视觉方面的一些通用算法,为图像分割、运动目标检测和模式识别等技术的研究提供了基础。

本文将OpenCV 移植到嵌入式Linux中,并在此基础上,验证了提出的算法,实现了一个小型的车牌定位系统。该系统包括4层,如图1所示。

图1 系统架构

在图1中,从上向下依次为应用层、库层、内核层和硬件层。应用层为以C/C++实现的车牌定位系统。该系统运用文中所提算法,具有较好的鲁棒性。库层为应用层所依赖,从上向下包括OpenCV 视觉库、OpenCV 依赖库和基本C库三部分。文中选用OpenCV 2.4.7 为应用层提供相应的图像处理功能。OpenCV 依赖于libffmpg、libjpeg、libpng、libtiff、libstdcpp 和libpthread 等 库。相 应地,这些库又依赖于其它一些库,需要将所有被依赖的库移植到目标系统中。上述应用程序和所有库最终均依赖于基本C库。本系统使用uClibc 0.9.33.2作为基本C 库。内核是操作系统的核心,完成进程管理与调度、内存管理、存储管理、联网和人机界面等功能。其向上为用户提供API,为应用程序提供运行环境;向下管理计算机硬件设备。本系统中,内核层主要由Linux 3.3.8 组成。通过BusyBox 1.20.2构建根文件系统,随后以SquashFS文件系统存储于16MB的Nand Flash中。硬件层由CPU 和USB、BT656及I2C等外围接口组成。本文选择基于ARM11 内核的Samsung S3C6410处理器作为实验平台。S3C6410处理器支持USB、SPI和I2C 等丰富的硬件接口以及主流的操作系统Linux、Wince和Android。系统中可通过USB接口或者BT656 接口连接摄像头采集图像。本系统使用以GCC 4.6.4构建的交叉编译工具链。

2 基于嵌入式Linux和OpenCV的车牌定位方法

2.1 车牌图像特征及先验知识分析

车牌形状一般为矩形,由汉字、字母和数字组合而成,共7个字符。大型民用汽车为黄底黑字;小型民用汽车为蓝底白字;军事专用汽车为白底红或黑字;其它外籍汽车为黑底白字。现行的机动车辆号牌有标准的尺寸,其中蓝牌、黑牌和黄牌中的前牌 (大型车辆前牌)尺寸均为440 mm×140mm;黄牌中的后牌 (大型车辆后牌)尺寸为440 mm×220mm。车牌上单个字符宽45mm (字符 “1”的空间包括左右空出来的空间),字符的笔画宽度为10mm,第2字符与第3 字符之间的间隙为34mm,其它字符间隙为12mm[11]。标准车牌的宽高比约为3.14∶1,车牌中每个字符的宽度一致。每个字符宽度约占整个车牌宽度的1/10,约占整个车牌高度的1/3。车牌中的背景部分的面积约占整个车牌面积80%,整个车牌颜色主要为车牌中背景区域的颜色,即蓝色、黄色和白色。鉴于HSV (hue,saturation,value)颜色空间接近人类视觉系统,易于获取车牌颜色在HSV 空间对应的各个分量的范围,本文在分析不同彩色图像后,得到车牌颜色在HSV 空间的阈值见表1。

表1 HSV 颜色空间中车牌颜色阈值

需要说明的是,在HSV 颜色空间中H、S、V 这3个分量的取值范围分别是0~360,0~1 和0~1,但在OpenCV 中,H 的取值范围为0~180,S和V 的取值范围均为0~255。所以,在调用的OpenCV 函数时,需要做相应的转换,公式[12]如下

式中:H1、S1 和V1——OpenCV 中的取值。转换后便可得到蓝色、黄色和白色的各分量在OpenCV 中对应的阈值。

2.2 基于嵌入式平台和OpenCV的车牌定位方法

本文方法的主要思路是:结合不同颜色空间中图像的特点,依据车牌颜色、纹理特征定位车牌。首先对光照不均匀的图像分别在HSV 和RGB 颜色空间中做预处理。然后,根据字符跳变规律,在HSV 颜色空间的二值图像中,找到可能包含车牌的若干个候选区域。最后,根据单个字符占整个车牌的比例,在RGB颜色空间二值图像中,校验所得候选区域,标记车牌的4个边界,从而提取出车牌区域。本方法流程如图2所示。

图2 定位算法框架

本文方法主要包括5个步骤:

(1)读取图像

本方法中读取图像的方式有2种:一种是通过cvCaptureFromCAM 函数初始化摄像头并从中捕获视频,再调用cvQueryFrame函数从摄像头捕获的视频中获取并返回一帧图像,用于后续处理。另一种是直接从文件中读取静态图像,这种方式适合对包含不遵守交通规则车辆的图像深入分析,通过cvLoadImage函数便可读入图像。

(2)在RGB颜色空间预处理

读入图像后,调用OpenCV 库的cvSplit函数对读入的RGB彩色图像通道分离,得到3幅单通道图像,然后分别用cvEqualizeHist函数直方图均衡化这3 幅图像,再用merge函数将已均衡化的3幅单通道图像合并,得到对比度增强的图像。再调用cvCvtColor函数将彩色图像转化为灰度图像。

根据最大熵法,求出当前位置的能量熵,再循环测试每个分割点并寻找最大的阈值分割点作为图像二值化阈值,最后调用cvThreshold 函数实现图像的二值化。其中将cvThreshold函数中的阈值参数设置为用最大熵法求得的阈值。所得二值图像为黑底白字。

在取得RGB空间二值图像之后,用cvSmooth函数对图像中值滤波 (核大小为3×3),以消除孤立的噪声点。

(3)在HSV 颜色空间图像预处理

首先调用cvtColor函数将原图转换到HSV 颜色空间,再调用cvSplit函数将图像的3个通道分离出来。

根据表1中车牌颜色阈值和转换公式得出在OpenCV中各颜色的H、S、V 分量的阈值。调用函数cvInrangeS分别将H、S、V 这3个通道的图像二值化,再用cvAnd函数对得到的3幅二值图像做与操作,便得到原图在HSV 颜色空间的二值图像。二值图像中,在阈值范围内区域的像素为255,其它区域的像素为0。

用数学形态学中的开运算操作消除目标以外的孤立噪声点和细小毛刺。即,先调用cvErode函数对图像做腐蚀处理,再调用cvDilate函数对图像做膨胀处理,调用函数中核元素均为2×2,处理次数均为1。

(4)确定车牌候选区域

在HSV 空间二值图像中,按照从上到下、从左到右的顺序逐行扫描。根据车牌特征,在车牌区域所在行至少应该有14次像素跳变,且相邻跳变间的距离大致相等。考虑到污点、边界粘连等干扰情况,本方法选择10次跳变为阈值,并将字符宽度的最大值设为25个像素点。若2次跳变间的距离大于25,说明不是车牌区域,则重新开始记录跳变次数和跳变距离。若在一行中连续跳变次数大于10且这10次跳变间距离均小于25则认为该行满足条件。记录首次满足条件的行作为开始行,并记录满足条件的连续行的行数。若相邻行满足条件则满足条件的行数加1,否则置0,并重新扫描开始行。当扫描到若干满足条件的连续行后,首次遇到不满足条件的行时,判断满足条件的行数是否大于车牌区域最小高度 (文中选20 个像素点)。若大于20,则记录紧接着的第一个不满足条件的行作为结束行,并将开始行和结束行之间的区域加入候选区域;若小于20,则不保存并继续扫描下一行。这一过程将得到若干个行符合条件的候选区域。

(5)校验并提取车牌

在RGB颜色空间的二值图像中,提取步骤 (4)中得到的第一个候选区域,并根据候选区域高度和标准车牌宽高比估计车牌的最大宽度。接着对该区域垂直投影,将投影后数组中的元素按照车牌纹理特征分为两类,即字符处的投影和字符间间隔的投影。对分类后的数组从左到右扫描,当扫描到跳变距离约等于候选区域高度的1/3 时,认为跳变距离符合字符条件,即可能遇到了车牌的第一个字符,记录上次跳变的数组下标。继续向右扫描并记录符合条件的跳变距离的个数。在从上次记录的数组下标开始向右的预计车牌最大宽度内,若满足条件的跳变距离的个数大于5,则认为该候选区域校验成功。将之前记录的数组下标记为左边界,跳变距离首次大于车牌高度的1/2 时,记录上次跳变的数组下标为右边界。

在得到车牌的4 个边界后,调用cvSetImageROI函数提取车牌。若该候选区域校验失败,则继续处理下一个候选区域。

3 实验结果

本文对不同时间段、天气、光照和背景条件下采集到的120张图像做了检测实验。实验证明,本系统在图像一定程度的曝光过度或光线不足时仍能准确定位。下面给出了两组图像的实验过程及结果,并与现有定位方法[7]的定位结果做比较,如图3~图9所示。

图3 原图

如图3所示,图3 (a)为中午光线较强导致曝光过度的图像,图3 (b)为车牌区域位于阴影部分而光线较暗的图像。

图4为在HSV 颜色空间根据车牌颜色特征二值化后得到的图像。由图中可以看出,已经排除了大部分干扰信息,边界清晰,但是有细小毛刺和孤立噪声点。

图4 HSV 空间的二值图

如图5所示,对图4中的两张二值图像采用数学形态学中的开运算操作除噪后,许多细小的噪声点和毛刺被消除,但是若图像质量较差,车牌左右边界可能会被腐蚀掉一部分,如图5 (b)中车牌的右边界处被腐蚀了一些,不利于确定车牌左右边界。

图5 形态学除噪后的图像

图6为在RGB颜色空间中用最大熵法求得阈值,并二值化图像得到的结果。如图6中所示,车牌字符比较清晰并且字符间隔比较明显,有利于字符的扫描和校验。

图6 RGB空间的二值图

如图7所示,图中的4条白线分别为扫描过程中得到的车牌边界。

图7 确定车牌边界结果

图8为采用本文方法得到的定位结果,图9为采用文献 [7]中所提车牌定位方法得到的结果。由图9可知,图9 (a)中右边第一个字符未被准确提取,车牌的右边界定位不够准确;图9 (b)中车牌上的汉字和 “8”、“9”的右下方位置均不太清晰。由对比可知,本文方法定位相对准确,提取到的字符相对清晰,并且将车牌边框去除,有利于后续的字符分割和字符识别。

图8 本文提取车牌结果

图9 文献 [7]方法提取车牌结果

4 结束语

本文综合运用直方图均衡化、不同颜色空间中图像二值化和数学形态学等图像处理技术,结合嵌入式系统和视频监控技术,提出了一种基于车牌颜色信息和纹理特征的车牌定位方法。该方法首先根据车牌图像特点对图像进行预处理,然后分别寻找车牌的4个边界,从而确定车牌区域。总结本文方法特点,主要体现在3个方面:①基于嵌入式Linux,可移植性高并且具有实时性和实用性;②对图像进行直方图均衡化,减小了光照变化的影响,在光照不足或曝光过度的条件下,依然能正确定位车牌区域;③利用车牌纹理的不同特点扫描车牌边界,有效地减小了车身颜色和细小污染的干扰,并且对拍摄远近不敏感。下一步研究工作为自适应确定算法中的可调参数以及在定位基础上研究字符分割和识别技术等。

[1]Mai V D,Miao D,Wang R.Vietnam license plate recognition system based on edge detection and neural networks[J].Journal of Information and Computing Science,2013,8 (1):27-40.

[2]QU Zhong,WANG Yongkun,CHANG Qingli,et al.Accurate location algorithm design for license plate based on three steps location [J].Computer Engineering and Design,2013,34 (8):2806-2810 (in Chinese). [瞿中,王永昆,常庆丽,等.基于三次定位过程的车牌精确定位算法设计 [J].计算机工程与设计,2013,34 (8):2806-2810.]

[3]Hu H P,Bai Y P.A kind of car license plate location based on color feature and mathematical morphology [J].Advanced Materials Research,2013,671:2851-2854.

[4]Yan Q.Method of license plate location based on license plate texture and HSV color space [M].Information Engineering and Applications.Springer London,2012:962-970.

[5]LIAO Chunsheng.Car plate detection and recognition using morphological method [J].Computer Simulation,2011,28(12):353-356 (in Chinese).[廖春生.基于数学形态学车牌定位算法仿真研究 [J].计算机仿真,2011,28 (12):353-356.]

[6]Al-Hmouz R,Challa S.License plate localization based on a probabilistic model [J].Machine Vision and Applications,2010,21 (3):319-330.

[7]TAN Tongde,WANG Sangang.Method of vehicle license plate location based on OpenCV [J].Computer Engineering and Design,2013,34 (8):2816-2820 (in Chinese). [谭同德,王三刚.基于OpenCV 的车牌定位方法 [J].计算机工程与设计,2013,34 (8):2816-2820.]

[8]ZHANG Xiaona,HE Ren,CHEN Shi’an,et al.Vehicle license plate location using active learning AdaBoost algorithm and color feature [J].Journal of Traffic and Transportation Engineering,2013,13 (1):121-126 (in Chinese).[张晓娜,何仁,陈士安,等.基于主动学习AdaBoost算法与颜色特征的车 牌 定 位 [J].交 通 运 输 工 程 学 报,2013,13 (1):121-126.]

[9]CHANG Qiaohong,GAO Mandun.Research on license plate location based on HSV color space and mathematical morpholo-gy [J].Journal of Graphics,2013,34 (4):159-162 (in Chinese).[常巧红,高满屯.基于HSV 色彩空间与数学形态学 的 车 牌 定 位 研 究 [J]. 图 形 学 报,2013,34 (4):159-162.]

[10]HUO Lingling,XU Wenjun,ZHAO Yunqing,et al.Design and implementation of an embedded system of vehicle license plate recognition [J].Computer Technology and Development,2013,23 (4):206-208 (in Chinese). [霍玲玲,徐文军,赵云青,等.嵌入式车牌识别系统的设计与实现 [J].计算机技术与发展,2013,23 (4):206-208.]

[11]ZHENG Chengyong.A novel license plate location method on RGB color space[J].Journal of Image and Graphics,2010,15 (11):1623-1628 (in chinese).[郑成勇.一种RGB颜色空间中的车牌定位新方法 [J].中国图象图形学报,2010,15 (11):1623-1628.]

[12]Miscellaneous image transformation [EB/OL]. [2013-11-12].http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/imgproc/doc/miscellaneous_transformations.html.

猜你喜欢
二值车牌字符
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
数字图像处理技术在车牌识别系统中的应用
HBM电子称与西门子S7-200系列PLC自由口通讯
面向网络边缘应用的新一代神经网络
基于二值图像数字水印算法研究
基于稀疏表示的二值图像超分辨率重建算法
第一张车牌
基于曲率局部二值模式的深度图像手势特征提取