基于计算机视觉的车牌识别系统方法研究
2022-02-15陈子言丁杨军
陈子言,丁杨军
(1 武汉东湖学院 湖北 武汉 430212)
(2 南京审计大学 江苏 南京 211815)
0 引言
车牌识别在车辆定位、高速公路自动化监管以及公路收费站等方面广泛应用,提高了智慧交通的管理效率。随着经济发展和人民生活水平提高,越来越多的人使用汽车作为出行工具,这使得汽车数量迅速增加,从而给交通管理带来了巨大压力。为了规范车辆行驶以及合理引导车流,对车辆精准识别尤为重要。车牌号作为汽车的“身份证号”,对于车辆的识别主要是对车牌号的识别,因此采用何种技术识别车辆已成为相关部门和企业所关注的热点问题。本文分析了当前车牌识别的主流方法,在此基础上将车牌识别处理过程分为车牌图像预处理、车牌定位、字符分割和字符识别4个步骤,并搭建了车牌识别系统。
1 图像预处理
1.1 图像灰度化
车辆图片样本一般是包含大量颜色数据的彩色图像,虽然在人眼看来色彩丰富,但在机器处理时由于含有多余颜色数据而降低处理效率。在图像中,每个像素点RGB值可能都不同,当R=G=B=Gray时,Gray的值为灰度值,灰度化就是把图像中的所有像素值的RGB值统一转化为灰度值[1]。将彩色图像转换为灰度图主要有三种计算方法,分别是平均值法、加权平均值法和最大值法[2]。采用加权平均值法将图像灰度化,图像灰度化效果对比图如图1所示。
图1 车辆灰度化对比效果图
1.2 图像增强与去噪
由于图像经过灰度化处理而失去颜色,图像中的车牌区域在图像中不突出,若采集的图片是昏暗或明亮环境,会影响后续的车牌定位效果,故要使用图像增强技术,提高车牌区域的对比度,减弱干扰信息。为了尽可能地降低噪声,要对图像做平滑处理。一般来说,车牌内容大部分都在图像的高频区域,而此区域也存在一些高频干扰,且噪声的频率与特征信息的频率不同,使用低通滤波器将车牌内容与其他噪声频率区分开,减少车牌区域内非车牌信息的噪声[3-4]。图像增强与去噪后的效果图如图2所示。
图2 去噪后的增强图
1.3 图像边缘检测
边缘通常有两种类型,一种是指在边缘两侧灰度值急剧变化的阶跃状边缘,另外一种是屋顶状边缘,边缘处于灰度值从小到大再到小的变化转折点处[5]。图片边缘是图像最基本的特征,也是图像中灰度值变化较大的区域。经典的边缘检测算法的研究过程是以某个像素为原点,和周围的像素构成边缘检测算子,计算其微分值的高低来表明该区域灰度的强弱[6]。边缘检测的目的是对图像中亮度变化明显的像素点进行标注,而车牌底色和车牌字符有着明显的灰度变化,所以通过边缘检测的方法将车牌区域从整幅图中凸显出来。
1.4 图像二值化
图像二值化是将背景区域与前景分离的过程[7]。首先将像素点的灰度值设为0或255,根据设定的图像阈值进行分割,确定当前像素是背景区域还是前景区域,从而将图像呈现出黑白效果,实现将整个图像像素点的灰度值转化为只有0或255两种级别的二值化图像。经过二值化后,图像既保留了车牌区域的特征,又减少了背景干扰,从而突出目标位置的轮廓。图像二值化效果如图3所示。
图3 二值化图像
2 车牌区域的定位
2.1 生成边缘点图
对车辆图像进行二值化处理后,用白点将特征区域及其内容清晰地描绘出来,但是这些线条还是不够细,不容易用这些特征来定位车牌位置,下一步的处理要将二值图像生成边缘点图,这样可以将图像的特征区域的线条变成由一个个白点组成的边缘点图,之后可以利用生成的边缘点图定位车牌区域[8]。I是行数,设初始时I=1,求边缘点的算法描述如下:
(1)检查I行的每一个像素点,若像素点的像素值为0(黑色),则继续向后检查;若像素点的像素值为255(白色),则检查该点左边相邻点的像素值:若值为0,不做处理;若值为255,则将当前点像素值设为0。继续向后扫描,直到扫描完该行最后一个像素点。
(2)若I为最后一行,结束扫描;否则I++,继续执行第一步。
执行完以上算法,能够得出边缘点图。生成的边缘点图如图4所示。
图4 边缘点图
2.2 车牌定位
根据边缘点图定位车牌,车牌定位的过程如下:
(1)寻找车牌的可能范围。扫描整个图片,从第一行开始,搜索可能边点数,以确定车牌可能的范围,首先确定阈值N,若存在连续N行均有一个大于等于车牌长度的线段,则找到一个可能的车牌区域,记录该区域的起始行数和尾行数;然后在此范围做到扫描,再确定该车牌候选区域的起始列坐标和结尾列坐标,这样就确定了一个可能的车牌区域[9]。
(2)继续扫描图片,寻找其他的可能区域,直至扫描整个图片。
(3)找到真正的车牌位置。经过以上两个步骤后,会发现一组可能是车牌的范围,这就需要排除干扰范围区域,找出唯一的最可能的车牌位置。国内的车牌的长宽比例是固定的,可以根据这个特点相应地找出实际的车牌范围。
经过以上步骤,从而发现车牌区域位置。
3 车牌字符分割
3.1 倾斜度调整
当存在定位车牌图像倾斜现象的时候,调整车牌的倾斜度至关重要,让车牌内的字符处于同一水平位置,这样可以保证后面字符分割的完整性。算法思想是基于左侧和右侧的白色像素点的平均高度,若字符两侧的像素点的平均高度值差值过大,则该车牌角度倾斜,需要调整车牌的角度。调整过程主要是通过计算图像左右两半边的像素值为255的像素点的平均高度,再找到斜率,依据斜率重建图像。组建思想是:若新图像的像素被映射到原图像时,没有在原图像范围内,则把新图像像素置为0[10]。
3.2 基于垂直投影的车牌字符分割方法
基于垂直投影的车牌字符分割方法算法思想是:根据在此前处理的二值化图像,从左到右依次检测每一个坐标投影数值,将第一个投影数值不为0所属的像素点作为第一个投影区域的左边界;然后向右检测,将检测到的第一个投影数值为0所属的像素点作为第一个投影区域的右边界[11]。根据此算法再找到其余六个投影区域的左右边界,然后根据这些区域来对整个车牌字符进行分割,最后得到一个个的单独的字符。应用投影法进行字符分割的结果如图5所示。
图5 车牌字符分割结果
4 车牌识别实验
通过pycharm平台,选取不同拍摄场景拍摄的车牌样本图片400张,其中正确定位车牌位置的图片有390张,车牌定位正确率为97.5%。对正确定位的390个车牌进行字符识别,识别效果如图6所示,识别结果统计如表1所示。
图6 车牌识别结果页面
表1 车牌识别结果统计表
由表1可知,待检测字符共2 730个,正确识别的字符个数为2 593个,系统对字符的识别正确率为94.98%,其中汉字字符识别正确率为93.85%,英文字符识别正确率为94.43%,数字字符识别正确率为96.10%,由于汉字的复杂性,正确识别率低于英文和数字字符。通过对识别不正确的车牌进行分析,发现主要是两种原因所导致,一是由于图片质量低,二是车牌存在污染导致字符分割和识别受影响。
5 结语
本文设计并实现了车牌识别系统,解决了在复杂环境下无法准确识别车牌字符的弊端。实验表明,车牌识别系统可有效应用于不同光照条件及不同颜色车牌等复杂场景,并能够对车牌位置准确定位以及对畸变车牌矫正,提高了车牌字符识别准确率,具有较大实用价值。但由于本人学识受限,对于车牌识别算法的研究还并未完善,在之后研究中需要进一步优化算法,提高车牌字符识别率,提升系统的整体性能。