基于OPENCV的智能车牌识别系统

2016-05-14 21:05张三友姜代红
软件导刊 2016年5期
关键词:车牌识别智能系统BP神经网络

张三友 姜代红

摘要:智能车牌识别系统是结合数字图像处理技术、计算机视觉和模式识别为一体的综合系统,包含对车牌图像进行预处理、车牌区域定位、字符分割以及字符识别等功能。在车牌识别技术中,采用了BP神经网络技术,能快速根据提取的车牌字符特征与已知样本中特征进行比对以获取车牌字符。通过运用OPENCV计算机视觉库,大大降低了系统实现复杂度,实现了快速准确识别车牌号码。

关键词:车牌识别;车牌定位;BP神经网络;智能系统;OPENCV

DOIDOI:10.11907/rjdk.161130

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2016)005-0087-03

0 引言

随着机动车保有量的持续增长,道路安全和车辆监控成为焦点问题,除了加大交通基础设施投入外,还要科学使用交通设备,加强智能化应用水平。随着城市报警和监控系统建设的深入,监控数据的分析愈来愈重要,依靠人工很难进行。车牌识别是车辆智能化分析的前提,实现准确识别车牌,可以完善安保系统和城市道路交通安全系统,如在交通路口和高速公路上可以利用智能车牌识别系统快速发现违章车辆,对被盗车辆进行拦截等,为城市安全提供全方位信息化支撑[1-2]。

基于OPENCV的智能车牌识别系统可对街道或路口的车辆流量进行统计,一方面解决了人工分析海量数据的困难,另一方面通过机动车辆统计,对城市道路建设以及交通管理提供数据参考,具有良好应用前景。

1 OPENCV计算机视觉函数库

OPENCV是一个开源的跨平台计算机视觉库,由C和C++语言编写,包含了许多图像处理和计算机视觉方面的算法。OPENCV由CV、MLL、HighGUI、CXCORE[3]四个功能模块组成,各模块主要功能及关系如图1所示。

2 BP神经网络

BP神经网络[4-5]是一种基于概率的统计分类,利用训练样本产生的概率分布情况来设计判别函数,再进行分类。如图2所示,BP神经网络神经元结构由输入层、隐含层和输出层组成,前一层的输出作为后一层的输入不断向后计算。由于误差的存在,要进行校正,而对误差校正是从后向前反向进行的,这样可以逐层导出隐含层的误差。

3 系统设计

3.1 系统组成

智能车牌识别系统是一个基于数字图像处理及模式识别算法的系统,由图像预处理、车牌定位、字符分割和字符识别4部分组成,其关系如图3所示。

图像预处理分为灰度化、二值化、边缘增强3部分,目的是去除图像的噪声对后续工作的干扰。车牌定位用来确定车牌位置,通过扫描整幅图像,当水平超过12个跳变、垂直超过10个跳变时就判断为车牌区域。字符分割将定位好的车牌区域传入垂直方向的像素和,会发现在某些区域出现峰值,这些峰值区域即字符区域。字符识别以神经网络的方式通过和训练集中提取特征进行比对,当误差小于一定值时就认为是样本将其输出。

3.2 图像预处理

(1)灰度化。本文选择加权值方法对图像进行灰度化,采用OPENCV的库函数:cvCvtColor(const CvArr*src,const CvArr*dst,int code),其中通过宏CV_BGR2GRAY设置将彩色图像转化为灰度图像。原始图像如图4(a)所示,灰度化结果如图4(b)所示。

(2)二值化。二值化处理采用的OPENCV库函数为cvThreshold(const CvArr* src, CvArr* dst,double threshold,double max_value,int threshold_type) 。处理过的图像如图5所示。

(3)边缘增强。用边缘增强方法来增强车牌的纹理,更加快速、准确地定位车牌。常用的边缘检测算子[6-7]有:Roberts算子、Sobel算子、Prewitt算子、Canny算子等。这里采用Canny算子来实现。本文采用OPENCV提供的cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size )方法进行边缘增强处理,处理后的图像如图6所示。

3.3 车牌定位

输入图像为二值图像,可以通过数灰度值为255的像素点个数来判断峰值的位置并记录。由于我国的车牌号码由7个字符组成,所以车牌位置至少有14个跳变数,为了更精确地定位,本文选择在检测到12个跳变时就确定车牌的位置。

垂直投影定位方法与水平投影定位类似,首先对图像进行垂直方向投影,将上一小节得到的水平投影图像从左至右再次扫描,计算图像垂直方向的跳变数。经过多次实验发现,当垂直方向跳变数多于10个时就可认定为车牌的垂直位置。再对车牌的宽高比进行计算,若为3∶1则可以确定定位区域为车牌区域。通过调用OpenCV库中的cvFindContours函数得到车牌区域,再进行分割得到车牌图像,如图7所示。

3.4 字符分割

常用的字符分割算法有很多,包括垂直投影法、聚类连通域法和模版匹配法等等,各有优劣[8],本文采用垂直投影法进行车牌字符分割。垂直投影法是将输入的二值化图像按垂直方向像素的灰度值累加,在折线图上会出现峰值,而由于亮点仅有可能出现在车牌字符的位置,因此可以通过峰值位置来判断车牌的位置。通过调用OpenCV中的cvSetImageROI()函数,在确定车牌字符的位置后用红色矩形边框线将之框起来,以此作为分割的依据。结果如图8所示。

3.5 字符识别

(1)字符归一化。字符归一化发生在特征向量的提取之前,通过系数变换的方式,在方便提取字符特征和提高车牌识别准确性的前提下,将分割好的车牌字符图像变换为高度、宽度都相等的图像。字符的归一化由OPENCV的库函数完成,通过函数的默认值CV_INTER_LINEAR采用双线性插值法进行字符归一化。

(2)字符特征提取。本文采用逐像素特征提取法进行车牌字符特征提取。该方法对图像的每一行每一列进行扫描,当遇到亮点时就将0输入矩阵中,当遇到黑点时就将空格输入矩阵中。扫描结束后得到一个与字符归一化图像像素点个数相同的特征向量矩阵,将得到的矩阵送入BP神经网络分类器分类,最终得到结果。实现核心代码如下:

4 结语

本文设计并实现了基于OPENCV的智能车牌识别系统,详细介绍了图像预处理、车牌定位、字符分割、字符识别等关键技术。在字符识别算法的选择上,本文没有采用传统的模版识别算法,而是选择了近年较为热门的BP神经网络算法。因为该算法具有较快的识别速度、较好的鲁棒性和非线性计算能力,能有效提升系统性能。

参考文献:

[1]周阅宇. 汽车牌照识别系统研究与设计[D].长春: 吉林大学, 2013.

[2]宁彬. 图像处理技术在机动车车牌自动识别技术中的应用[J]. 科学技术与工程, 2013, 13(2):366-371.

[3]BRADSKI G, KAEHLER A. Learning OpenCV: computer vision in C++ with the OpenCV library[M]. O'Reilly Media, Inc., 2013.

[4]海金. 神经网络与机器学习[M]. 北京:机械工业出版社, 2011.

[5]QU Z, CHANG Q, CHEN C, et al. An improved character recognition algorithm for license plate based on BP neural network[J]. Open Electrical & Electronic Engineering Journal, 2014(8): 202-207.

[6]赵芳, 栾晓明, 孙越. 数字图像几种边缘检测算子检测比较分析[J]. 自动化技术与应用, 2009, 28(3):68-68.

[7]杨婷婷, 顾梅花, 章为川,等. 彩色图像边缘检测研究综述[J]. 计算机应用研究, 2015(9):2566-2571.

[8]谢光俊. 车牌识别系统中车牌定位与字符分割算法的研究[D]. 长沙:湖南大学, 2015.

(责任编辑:杜能钢)

猜你喜欢
车牌识别智能系统BP神经网络
依托智能管理技术 提高玉米生产能力
车牌识别系统设计与实现
BP神经网络算法在数值预报产品释用中的应用
基于车牌识别的机器视觉课程研究