齐佳鑫,张志华,付金尉,贺紫菡,司志广,王艺雄
(辽宁科技大学电子与信息工程学院,辽宁 鞍山 114051)
随着城市交通的快速发展和车辆数量的不断增加,交通管理和安全监控需求增加,车牌识别技术在智能交通系统中变得至关重要,扮演着重要的角色。车牌识别技术可以实现对车辆的自动识别和追踪,为交通管理、安全监控、道路收费等领域提供了有效的解决方案。因此,车牌识别技术尤为重要,本文将利用卷积神经网络(Convolutional Neural Network,CNN)设计一种准确率较高的车牌识别系统。车牌识别的流程主要包括以下3 个部分:图像预处理、车牌定位与分割、车牌字符识别。图1 为车牌识别流程。
图1 车牌识别流程
在图像预处理阶段,噪声去除和图像增强是重要的步骤,可以提高车牌识别系统的准确性和稳定性。图2 为汽车图像的原图。
图2 汽车图像的原图
常见滤波降噪的方式包括中值滤波、均值滤波以及高斯滤波等。本文采用的方式为高斯滤波[1]。高斯滤波是一种常用的线性图像滤波方法,用于平滑图像并去除高频噪声。其原理是使用高斯函数对像素周围邻域内的像素进行加权平均,以降低图像中的高频成分。对于图像中的每个像素,高斯滤波器会取该像素周围邻域的像素值,并根据高斯函数的权重对邻域内的像素进行加权平均。在高斯滤波中,像素周围邻域内的像素值与高斯函数的权重进行加权平均,以得到平滑后的像素值。高斯滤波的公式为
式中:I'(x,y)是经过高斯滤波后的图像的像素值;(x,y)是当前像素的坐标;(a,b)是邻域内的像素的坐标;I(a,b)是邻域内的像素的原始值;G(a,b)是高斯函数的权重,表示邻域内的像素与当前像素的距离和标准差的关系。高斯函数的公式为
式中:σ 为高斯函数的标准差,其大小决定了函数曲线的宽度;π 为圆周率。图3 为高斯滤波后的效果图像。
图3 高斯滤波后的效果图像
颜色空间转换可以将图像从原始颜色空间转换到更适合车牌识别的颜色空间。常用的颜色空间包括RGB、HSV、YUV 等。本文采用的是从RGB 到灰度的转换[2]:将彩色图像转换为灰度图像,可以减少计算复杂度,并且在一些情况下,灰度图像对车牌区域的边缘和纹理信息更加敏感。图4 为灰度图像。
图4 灰度图像
1)边缘检测。边缘检测是车牌定位[3]与分割的重要步骤,常用的方法有Sobel 算子、Canny 算子、Laplacian 算子等。根据Sobel 算子[4-5]的原理,对图像像素点做卷积,卷积核见图5。
图5 Sobel 算子的卷积核
然后,对生成的新像素灰度值做阈值运算,其公式为
以此来确定边缘信息。本文采用Sobel 算子进行边缘检测,Sobel 算子边缘检测后的效果图像见图6。
图6 Sobel 算子边缘检测后的效果图像
2)图像形态学处理[6]。边界定位是在检测到边缘后,对于边缘检测后的图像进行闭运算,进行先膨胀再腐蚀的操作,将白色部分炼成一个整体。图7 为闭运算后的效果图像。
3)轮廓检测。轮廓检测方法:利用OpenCV库中的FindContours () 函数检测到闭运算处理后的连续边缘,并在原图中绘制出可能为车牌图像的外轮廓。图8 为轮廓检测效果图像。
图8 轮廓检测效果图像
4)车牌定位。根据车牌的面积、长宽比等特征,识别出车牌位置,并进行切割。车牌定位结果图像见图9。
图9 车牌定位结果图像
字符分割[7]是将图片图像中的每一个字符分割出来,以便于后期进行字符的识别。在车牌字符分割部分,本文主要运用边缘检测方法,首先使用中值滤波方法对图像进行降噪;其次对图像进行二值化处理,形成非黑即白的图像,减小数据量;最后采用轮廓检测方法对字符进行分割,并且存储到同一文件夹下。图10 为中值滤波后的二值化图像;图11 为边缘检测结果图像;图12 为字符分割结果图像。
图10 中值滤波后的二值化图像
图11 边缘检测结果图像
图12 字符分割结果图像
卷积层是卷积神经网络[8]的核心组件之一。它通过滤波器在输入图像上进行卷积操作,提取图像中的特征。卷积操作可以捕捉到局部特征和空间关系,实现特征的平移不变性。卷积层通常包括多个滤波器,每个滤波器可以学习不同的特征。在卷积过程中,通过设置步长(stride)和填充(padding)来控制输出特征图的大小。如果输入的图像的大小为X1×Y1×Z1,则输出的特征图的大小为X2×Y2×Z2.,特征图的大小可以用公式表示为
式中:F 为卷积核的大小;P 为填充值;S 为步长;numbers 为卷积核的数量。假设输入为3×3 的图像,用2×2 的卷积核进行卷积运算,步长为1,最终生成2×2 的特征图。图13 为卷积过程示意图。
图13 卷积过程示意图
池化层[9]用于减小特征图的尺寸,并提取更加显著的特征。常用的池化操作包括最大池化和平均池化,它们分别从局部区域中选择最大值或平均值作为输出。池化层可以降低特征图的维度,减少计算量,并且增强模型的鲁棒性。图14 池化过程示意图。
图14 池化过程示意图
激活函数(activation functions)是卷积神经网络中不可缺少的组成部分,增强了神经网络的非线性表达能力,通常使用非线性方式激活特征提取单元,传递提取到的特征信息,提升了卷积神经网络的泛化学习能力。常用的激活函数有RELU 函数、Sigmoid 函数、Tanh 函数,其计算公式分别为
全连接层通常位于卷积神经网络的末尾,用于将卷积层和池化层的输出连接到最终的输出层。全连接层的神经元之间的连接是密集连接的,每个神经元都与前一层的所有神经元相连。全连接层可以学习更高级别的特征表示,并进行最终的分类或回归。图15 为全连接层示意图。
图15 全连接层示意图
本文车牌数据集总共16 149 张图片,数据集中包含31 个汉字(内地各省、自治区、直辖市简称),以及24 个英文字母(其中不包含O 和I)和9 个数字。本文首先采用TensorFlow 库对汉字、数字和字母搭建卷积神经网络,然后进行训练,最后利用神经网络模型进行车牌识别。图16 为卷积神经网络结构图。
图16 卷积神经网络结构图
输入图像尺寸为20×20 像素,第一层卷积设定32 个大小为3×3 的卷积核;第二层为最大池化层,减小特征图的尺寸;第三层卷积设定32 个大小为3×3 的卷积核;第四层采用最大池化操作。全连接层用Softmax 激活函数实现特征分类。
数据集中包含2 973 张汉字图片,13 176 张字母和数字图片,训练集选取其中80%的数据,测试集选取其中20%的数据,最终汉字识别的准确率为91.4%,数字和字母识别的准确率为95.5%。图17为车牌识别结果。
图17 车牌识别结果
本文充分利用了OpenCV 模块实现对汽车图像进行预处理,采用形态学运算、边缘检测方法实现对车牌定位以及字符分割,搭建卷积神经网络模型分别对汉字、数字和字母进行训练和评估,经检验模型识别准确率较高。在整个车牌识别流程中发现,形态学运算参数设置比较关键,会严重影响到车牌定位以及字符分割的效果。此外,本文分别对汉字、数字和字母搭建了神经网络模型,测试结果表明汉字的识别率为91.4%,数字和字母的识别率为95.5%,显示汉字的识别率比较低。在后期的研究中会对神经网络结构进行调整,并进一步优化。