广东工业大学 周家振 杜玉晓
车牌识别是目前交通管理业务中备受关注的问题,随着人们对该领域的研究,车牌识别技术不断完善。其中,车牌识别是通过摄像头自动抓拍图片上的车牌并识别车牌号码,在交通管理方面得到了广泛的应用。本文对车牌定位识别算法展开了研究,并通过实验验证算法的合理性与准确性。
车牌识别系统的主要步骤有以下几方面,分别为图像预处理、车牌检测、车牌图像分割和字符识别。传统的车牌定位方法,如基于边缘检测与基于颜色特征检测的方法很难处理复杂的场景,以及字符识别采用传统的BP网络方法训练时间较慢。因此,本文提出采用传统方法与深度学习的方法进行车牌定位,训练CNN模型进行车牌字符识别,以解决复杂场景下的车牌能够精确定位与识别车牌字符的问题。
车牌定位方面,本文研究了一种结合了基于边缘检测与基于颜色特征检测的方式,选取出候选车牌区域,然后采用CNN模型对这些候选车牌区域进行识别,判断是否是车牌,并截图保存;这种方式对车牌做了两次定位,并利用模型进行了一次判断,能够在复杂背景下检测出车牌,大大提高了车牌定位的精确度。
本文采用Sobel算子边缘检测,过滤掉大量的背景图,留下少部分边缘,这些边缘主要是由车辆与车牌的边缘构成,通过后面的阈值分割能够把部分边缘去掉,从而达到过滤掉大部分区域的效果,得到基于边缘检测的区域。
其中Sobel算子的计算公式如下:
基于颜色特征的图像预处理是将图片转为hsv图片后,选取出黄色色调区间[26,34]或蓝色色调区间:[100,124]的区域。
得到两种预处理后的区域,对它们进行混合操作,得到效果如图1所示。
图1 结合两种方式的车牌定位
采用OTSU算法的阈值分割进行最优分割,定义一个21×5卷积核,进行形态学的闭操作,图像处理完后,查找轮廓通过漫水填充算法进行轮廓修正后,通过车牌判断条件挑选出候选车牌区域。本文判断车牌的条件主要有两种,第一种是根据候选车牌区域的长宽比,第二种是根据通过CNN模型进行车牌模型训练,用该模型进行识别车牌。其中CNN模型结构是采用了3层卷积层、3层池化层与3层全连接层,并加入了dropout函数进行去拟合化,避免模型过拟合。其中,模型的训练过程如图2所示。
图2 车牌识别模型训练过程
其中,模型训练数据仅采用了1906张车牌图片与3968张非车牌图片,从图2中可以看出训练次数达到200次时就开始趋于稳定,精度达到99%,模型性能较优。
车牌字符识别模型训练跟车牌识别采用的模型一样,训练的数据集主要有数字、字母与汉字。与之前模型不同的是,在输出预测结果方面,车牌识别模型预测结果仅有两个,而车牌字符识别模型输出的识别结果主要有10个数字、26个字母、31个汉字,训练次数为700次以上并且精度99%以上即可停止。其中,字符训练的过程如图3所示。
图3 车牌字符识别模型训练过程
有了前面的算法,下面开始进行实验,测试前面的算法,最终识别的字符正确个数越多,说明该模型越好。
通过图4、图5比对可以看出,实验结果表明,该车牌定位识别算法识别车牌的效果还是不错的,基本能够识别车牌的字符,具有较高的识别率。
图4 识别的车牌图片
图5 识别车牌图片的结果
结论:本文采用了基于边缘检测与颜色特征对车牌图像进行了预处理操作,采用了形态学处理对图像进行了膨胀腐蚀操作,去除了一些空隙,接着通过轮廓查找的方式找到车牌候选区域,利用训练好的车牌识别模型识别是否是车牌,得到车牌区域图像后,对车牌进行字符切割与字符识别,最终通过实验测试该算法能够有效的识别出车牌的字符并显示出来。