查安秦
摘 要:本论文提出了一种基于图像处理的车牌识别系统设计,系统分为三个部分,第一部分,对采集的图像进行灰度化,图像平滑,边缘检测等操作以进行预处理。第二部分,对预处理后的图片进行车牌定位,并作倾斜矫正。最后使用卷积神经网络,对车牌字符分割后提取出来单个字符的结果进行识别。
关键词:车牌检测 图像处理 图像分类 卷积神经网络
1 引言
随着智能交通系统的快速发展,车牌识别技术作为其中重要的一环,在交通管理、安全监控等领域扮演着至关重要的角色。传统的车牌识别方法在复杂场景下表现不稳定,难以满足日益增长的高效、精确识别需求。本文分析了已有的车牌识别技术并将其结合。先对获取的图像进行灰度化和边缘检测,其次对车牌进行定位,并使用Hough变换来校正倾斜的车牌图像。最后使用卷积神经网络,识别车牌。卷积神经网络避免了传统算法中复杂的字符特征提取过程,提高了复杂环境下车牌字符识别的准确性和稳定性[1]。
2 图像预处理与车牌定位
2.1 灰度化
本文所用的数据集为彩色图像,拥有RGB三个通道。而灰度图像只有一个通道,相比起彩色图像的多个通道计算复杂度更低。此外,对于一些情况下,灰度图像的噪声影响会相对较小。本文使用加权平均法进行灰度化处理,根据人的视觉系统对红、绿、蓝三种颜色的感知灵敏度,对红,绿,蓝三者的权值赋值分别为0.299、0.578和0.114,灰度化公式如式(2-1)所示:
Gray(i,j)=0.299*R(i,j)+0.578*G(i,j)+0.114*B(i,j)(2-1)
2.2 图像平滑
图像平滑是一种用于减少图像中噪声与细节的技术,平滑使得输入图像变得模糊,但同时凸显了图像的整体边缘信息,为接下来的边缘检测打下铺垫。本文使用了高斯滤波与中值滤波来进行图像平滑。
高斯滤波是一种常用的图像平滑技术,其使用一个N*N的卷积核对图像进行卷积操作,越靠近卷积核中心的区域赋予的权重越重,而越远离卷积核中心的区域所赋予的权重就越轻。通过这种方式,减少图像中高频的部分来减少图像细节,相对地突出图片的边缘和结构信息,这样做使得图片更加平滑,但不至于丢失重要信息。
中值滤波是一种图像处理中常用的非线性平滑技术,其使用统计的方式来降低图像中的噪声,并保留图像的边缘信息。其原理是对于图像中的每个像素,将其周围的一组像素(通常是一个滑动窗口内的像素)按照灰度值大小排序,然后选择这组像素中的中间值作为当前像素的新值。与高斯滤波相同,其在降噪的同时,使得图像的边缘信息得以相对突出。
在高斯滤波与中值滤波卷积核大小N的选择上,本文尝试使用了3*3,5*5,7*7,11*11与21*21的卷积核,通过观察实验结果,发现过大的卷积核会导致汽车图片的边缘模糊,导致最终无法定位车牌。在现实场景中,拍摄车牌所用的摄影设备质量参差不齐,较差的摄影设备所产生的源图片本身就较为模糊,且在大多数拍摄情况下,车辆是移动的,这样拍摄图片也会产生运动模糊。考虑到以上两点。本文最终在高斯滤波与中值滤波的卷积核大小上,皆选用了3*3的卷积核。
经过图像平滑操作后,车牌定位的结果相对变得准确,如图为未经过图像平滑操作和经过图像平滑操作后的车牌轮廓筛选结果,由图可见未经过图像平滑操作的汽车图像在通过轮廓筛选车牌时会产生较多的矩形区域,对后续的定位产生一定干扰,而经过图像平滑操作的汽车图像在通过轮廓筛选的结果会较为准确。
2.3 边缘检测
边缘检测通过识别图像中不同区域间的轮廓,来对图像进行分割,从而去除掉除车牌外的无用信息,以降低模型训练过程中的数据处理量。本文尝试使用了Sobel算子对图像进行水平方向与垂直方向的双卷积运算,Sobel算子属于梯度幅度检测算子,其基本思想是用卷积模板对检测边缘的图像进行加权平均,再通过一阶微分计算实现检测图像的边缘。[2]
2.4 二值化
为了对图像进行下一步数学形态学处理,需要对图像先进性二值化,即在图像中设立阈值,高于此阈值的像素点变为白色,低于此阈值的像素点变为黑色。
本文尝试了三种方法设立阈值,一种是人为设立全局阈值。这种方法简单方便,计算量低,但可能会受到图像中亮度与对比度的影响。
第二种为使用OTSU算法确立全局阈值,OTSU法是一種自动阈值确定方法,通过将图像分为背景和背景两个部分,使得分割后得到的前景和背景与整幅图像的类间方差最大。这种方法不需要手动设定阈值,减少了人工干预的需求,较为方便。而且其不会受到亮度与对比度的影响,也拥有一定的稳定性,但OTSU法对图像中的噪点非常敏感,可能会导致在噪声密集的区域中产生错误的分割。
第三种为使用局部阈值处理,即通过计算图像中像素点领域的高斯均值,或加权平均值来确定局部阈值而非全局阈值。在明暗差异较大,如光照不均匀的图像中,使用局部阈值处理能有效地保留图像的细节。但由于算法需要计算每一个小区块的阈值,因此相对于上述两种方法的计算开销更大。
经对比发现,对于清晰度不高的图像,使用OTSU算法确立阈值与使用自适应阈值处理均会在一定程度上保留噪点,这些噪点在后续的数学形态学处理上步骤上会被放大,从而影响车牌定位。因此最终本文使用了人为设立全局阈值的方法。
2.5 二值图像基本形态学运算
二值图像基本形态学运算包括图像的腐蚀与膨胀,腐蚀的实现基于填充结构元素的概念,它利用某种结构元素对一个图像进行探测,以便找出在图像内部可以放下该结构元素的区域。膨胀是腐蚀的对偶运算,可定义为对图像的补集进行的腐蚀运算[3]。通过一个类似卷积核的内核遍历图像实现。将二值化图像中的0表示背景,1表示前景。则腐蚀操作为当内核中的前景将内核完全覆盖时,将该内核中心的单元格的像素置为1,否则置为0。而膨胀操作与此相反,只要内核元素的任意部分与图像中的前景重合,就将内核中心单元格的置为1,否则置为0。腐蚀操作有着去除噪点和提取细节的作用,而膨胀有连接不连续物体,和放大物体的作用。
为了让图形的轮廓更为突出从而方便车牌的定位,本文将二值化后的图像进行了开闭处理,通过对图像的反复腐蚀和膨胀,去除二值化后细小的噪点,并让车牌区域的轮廓更加突出,方便后续的车牌定位。
3 车牌定位
3.1 车牌轮廓筛选
车牌一般为矩形,国标普通轿车等车型,车牌尺寸为440*140mm,长宽比为3.1,一般以蓝色为底色。大型汽车的后车牌尺寸为440*220mm[6],长宽比为2,一般以黄色为底色。而摩托车车牌的前牌与后牌尺寸为220*95mm与220*140mm,长宽比分别为2.3与1.5。一般以蓝色或黄色为底色。此外,国内部分外资企业专用汽车也会使用黑白底色的车牌。综合以上信息。对于开闭处理后的二值图像,本文先进行轮廓查找,对于所有的图像轮廓进行筛选,寻找矩形轮廓。对所有寻找到的轮廓进行筛查,考虑到拍摄角度会影响图片中车牌的长宽比,首先剔除掉长宽比在1.5-5.5之外的轮廓,经过一轮剔除后,如果有两个或以上的矩形轮廓,则利用车牌的颜色特征,进一步对剩下的矩形轮廓进行筛查。
3.2 车牌倾斜校正
由于拍摄角度原因,部分车牌在被筛选后为倾斜的图像,不利于后续字符分割与字符识别任务。本文使用了基于透视变换的倾斜矫正算法矫正定位后的车牌图像。透视变换的本质是将图像投影至新的视平面[4]。在定位车牌后,可获得车牌区域左上角,左下角,右上角,右下角的坐标,再将获取到的点映射到矩形图像的四个角落点上,即可获得倾斜校正后的车牌。
3.3 车牌分割
车牌分割是为了让卷积神经网络的识别结果更准确。对于识别一个完整的车牌上的字符,有直接使用卷积神经网络端对端的识别的方法,以及先将车牌分割成单个字符,再逐步识别单个分割字符后的结果。相对于直接识别,先将车牌分割后再逐步识别的方式准确率更高,并且这种方式识别的卷积神经网络训练成本也更低,因此本文使用了车牌字符分割技术对捕获到的车牌进行处理。
本文尝试了两种分割方式尝试字符分割。一种是基于连通域的字符分割,一种是基于像素直方图的字符分割。输入的图片是定位车牌后的二值化区域。
基于连通域的字符分割即寻找图像中具有相同像素值且位置相邻的组织,对于找到的每个连通区域轮廓,进行筛选选掉不为车牌字符的区域,最终将每个区域的坐标从小到大进行排序,得到每一个含有字符的车牌区域。
基于像素直方图的字符分割即通过对二值化后的图像进行水平投影和垂直投影,分别得到水平投影与垂直投影的直方图。其中水平投影后的直方图用于去除车牌上下的边框对字符提取的干扰,而垂直投影可以去除左右边框,并提供每个字符的位置信息从而进一步进行分割。
由于基于连通域的字符分割对噪声比较敏感,本文最后采用了基于像素直方图的字符分割方法。对于水平投影,分别从上下位置开始找最小波谷,上半部分找到的最小波谷,即为车牌字符区域的顶边,下半部分找到的最小波谷,即为车牌字符区域的底边。对于垂直投影,从左至右寻找直方图的波谷,当前面的波谷开始上升到某一阈值时,说明当前位置为车牌上某字符的开始,当垂直投影中的像素个数下降到后一个波谷时,说明当前位置为车牌上某字符的结束位置。由此提取出的矩形区域即为车牌的字符。
4 卷积神经网络识别
传统的图像分类算法提取图像的色彩、纹理和空间等特征,其在简单的图像分类任务中表现较好,但在复杂图像分类任务中表现不尽人意[10]。本文使用的卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型,其算法原理基于模仿生物视知觉机制构建[5]。主要用于对图像进行分类,分割和识别。其核心思想是通过卷积层来自动识别图像中的特征。相比起普通的全连接神经网络,卷积神经网络拥有局部连接与权值共享的特征,使得训练模型时的参数量大大降低。从而提升了训练的效率,使得大规模的深层网络更容易实现。卷积神经网络的主要组成部分为卷积层,池化层与全连接层。
4.1 卷积层
卷积层是卷积神经网络的核心组件,其单位是卷积核,主要负责对预处理过后的单个字符图像进行特征提取。通过卷积核在数据集的输入图像上从左至右,从上至下的移动,来提取车牌数据集中文字或及数字的边缘角点特征。通过在网络中堆叠多个卷积层,卷积神经网络可逐步学到更高级的特征,以进行复杂的分类任务。
4.2 池化层
池化层一般置于卷积层之后,其作用是将感受野中最重要的区域提取出来,同时减小特征图的尺寸,进一步筛选物体的特征,剔除不重要的数据信息[9]。有利于减轻神经网络的负担并降低过拟合的概率,但由于其缩小了图像的大小,可能会降低网络的精确度。池化层通过在特征图的局部区域进行某种统计操作(如取最大值)来生成其输出。
4.3 全连接层
全连接层的功能是将卷积层和池化层提取的数据进行进一步分析,并通过回归函数进行分类整理。图像在经过卷积层与池化层后,其输出的特征会被打平并进入全连接层,二维图像结构会展开变为一维向量。全连接层与卷积层不同,其每个连接都有一个权重参数,总体的参数量较大。这也使得全连接层能够捕捉到通过卷积层和池化层提取特征之间的复杂关系,进行最终的分类操作。
4.4 训练结果
本文使用了从中国31个省份中收集到的车牌图像,将其预处理并分割后得到共12020张20*20的二值化车牌字符数据集。按照9:1的比例分割为训练集与数据集。使用卷积神经网络,共訓练20轮,最终在测试集上对单个字符的准确率为0.96。
5 结语
本文采用了均值灰度化对图像进行处理,分别采用了高斯滤波和中值滤波平滑图像,并对平滑后的图像进行了边缘检测,二值化和开闭处理来预处理图像。通过形状和颜色属性筛选出车牌轮廓,并进行车牌倾斜和分割。最后通过卷积神经网络对分割出来的字符进行识别,提升了车牌识别的准确性。
基金项目:广州软件学院科研项目(ky202220)。
参考文献:
[1]杨金鑫,颜湘炎,王子宁.基于深度学习的复杂场景下车牌识别算法研究[J].智能计算机与应用,2023,13(03):33-38.
[2]薛文格,邝天福.基于Sobel算子和灰色关联分析的图像边缘检测[J].楚雄师范学院学报,2023,38(03):135-140.
[3]高薪,胡月,杜威等.腐蚀膨胀算法对灰度图像去噪的应用[J].北京印刷学院学报,2014,22(04):63-65.
[4]王建明,毛一鸣,晏涛等.光场图像透视变换算法[J].激光与光电子学进展,2019,56(15):73-80.
[5]余伟.基于卷积神经网络的车牌图像识别技术实现[J].信息记录材料,2022,23(05):154-156.
[6]白明雷. 基于神经网络的车牌号识别方法研究[D].中国石油大学(华东),2018.
[7]曹文平,陈厚锦.一种基于轮廓特征的车牌定位算法[J].汽车实用技术,2023,48(12):44-47.
[8]王世芳,李玉龙.基于卷积神经网络的车牌号码识别方法[J].长安大学学报(自然科学版),2023,43(04):106-117.
[9]李磊.基于卷积神经网络的车辆特征识别技术研究[J].交通世界,2022(09):4-5+12.
[10]张珂,冯晓晗,郭玉荣等.图像分类的深度卷积神经网络模型综述[J].中国图象图形学报,2021,26(10):2305-2325.