一种车牌检测与识别系统的设计与实现
2021-04-27杨新年高冠福魏喜雯
杨新年,苏 畅,高冠福,魏喜雯
(黑龙江工业学院 电气与信息工程学院,黑龙江 鸡西 158100)
0 引 言
当前,智能交通系统已被广泛应用于人们的生活中。其中,车牌检测识别系统作为智能交通系统的组成部分,在高速公路、小区入口和停车场等场所被频繁使用[1-2]。因此,设计具有强鲁棒性,可适应多种环境的车牌检测识别系统具有重要意义。目前,车牌检测识别系统的研究方法多种多样,但大致流程基本一致。车牌检测识别系统通常由图像输入、车牌定位、字符分割、字符识别和字符输出5部分组成,主要流程如图1所示。本文根据该流程设计并实现了一个能够对复杂环境下车牌进行检测识别的系统,并取得了较好的效果。
图1 车牌检测识别流程
1 车牌定位
在将图像输入到车牌检测识别系统之后,首先确定图像中车牌的位置,为之后的车牌字符分割和识别提供基础。目前,车牌定位一般选用边缘特征定位车牌的算法、利用匹配模板定位车牌位置的算法和利用颜色特征定位车牌的算法等[3-4]。每种算法都存在优缺点,本文综合考虑后,选择经过边缘检测后进行形态学处理以通过车牌形状进行定位的方法,若该方法仍无法精准定位,则进一步通过车牌的颜色特征进行定位,以提高车牌定位的准确率。
1.1 图像预处理
在进行边缘检测之前首先进行图像预处理,此举使得后续步骤在取得较好处理效果的同时,能够加快处理速度。图像预处理包括图像去噪和灰度化两部分。
图像去噪:因原始图像在拍摄过程中受多种因素的影响会产生噪声,所以需通过滤波对原始图像进行降噪处理。本文选用高斯滤波的方法对图像进行处理。高斯滤波是一种线性平滑滤波方法,可使用该方法对整幅图像进行加权平均。
灰度化:因原始图像是彩色图像,其所占用空间较灰度图像大,为了提高系统的运行速度,需要将原始图像转化为灰度图像,以提高后续车牌定位准确率和系统识别效率。
1.2 边缘检测
对图像预处理之后,因车牌与周围环境有明显的区分度,所以本文采用Canny算子对图像进行边缘检测,以确定车牌可能存在的位置。Canny算子是一种多级检测算法,适用于不同的场合,其参数可根据不同的要求进行调整,从而达到较好的边缘检测效果。
1.3 形态学处理
在进行边缘检测之后,提取的边缘附近仍存在干扰点和不闭合的边缘区域,通过形态学的膨胀、腐蚀、开运算和闭运算处理,可消除边缘区域的大部分噪声点,同时将车牌的边缘区域闭合,以提高车牌定位的准确率。
1.4 平滑处理
经边缘检测和形态学处理之后,基本可提取出车牌区域的大致轮廓,但仍然可能存在孤立的噪声点,影响车牌轮廓的精准确定,因此可对图像进行平滑处理,以消除孤立的噪声点。
1.5 移除小对象
对图像进行平滑处理之后会存在多个闭合区域,需要删除其中的非车牌区域。具体方法:获取这些位置的左上点坐标和右下点坐标,大致计算该区域的面积,将该区域面积与设定面积值进行比较,排除其中的不可能因素,以确定车牌图像的位置。
1.6 颜色定位
在移除小对象之后,便可大致确定车牌的位置,但若仍存在定位不准的情况,则再次根据车牌的颜色值排除[5]。由于我国的车牌颜色是固定的,因此可根据设定的颜色阈值进行颜色定位,以精准定位车牌位置。
1.7 图像矫正
因拍摄角度问题,所得到的车牌有可能是倾斜的,不利于后续字符提取、分割和识别[6]。利用仿射变换法可将该部分图像进行倾斜矫正,以保证二维图像的平行性及平直性。
2 字符分割
车牌由7个字符构成,包括1个汉字,1个英文字母以及数字或者英文字母(共计5个)。为识别这些字符,首先需要对其分割。常用于字符分割的方法包括基于图像直方图的垂直投影法、基于车牌字符固定间隔的车牌尺寸法以及基于轮廓的车牌字符轮廓检测法等[7-8]。本文根据国家标准设置字符的间隔范围,然后通过垂直、水平投影相结合的方法进行字符分割。具体步骤如下:
(1)对车牌图像进行二值化处理;
(2)对图像进行垂直投影,获取对应数值;
(3)比对数值,获取第一个局部最小值的位置,该位置为车牌在水平方向的边界;
(4)从左至右重复上述步骤,找到单个字符的水平边界;
(5)在水平方向上通过重复步骤(2)和步骤(3)来确定垂直方向的边界,直至完成字符分割。
字符分割效果如图2所示。
图2 字符分割效果
3 字符识别
为减少计算量,本文采用一对多分类器。根据车牌的实际情况,排在首位的汉字部分使用31个分类器进行识别,排在后面的数字和英文字符使用34个分类器进行识别。训练之前,首先提取每个字符的特征并将之保存在.dat文件中,方便后续程序读取。然后对上述分割好的字符图像提取对应的特征参数并代入分类函数,由此计算、比较得出相应的预测值。
本文基于Python+OpenCV实现车牌检测识别系统,具体结果如图3所示。图3(a)为通过车牌形状进行车牌定位识别的结果,图3(b)为通过颜色进行车牌定位识别的结果。优先进行形状定位,若经过形状定位后仍无法排除噪声影响,则使用颜色定位,定位后进行识别。
图3 系统识别效果
4 结 语
为了能够解决复杂环境下的车牌检测和识别问题,文中设计了一个具有较强鲁棒性的车牌检测识别系统,并基于Python+OpenCV实现。其中车牌定位部分通过车牌颜色和车牌形状相结合的方法精准定位车牌;字符分割通过垂直、水平投影相结合的方法实现;字符识别使用SVM方法完成,在识别后输出相关信息。经验证,系统识别取得了较好的效果。