车牌识别是许多智能交通应用场景需要解决的问题,如小区汽车门禁、停车场自动计时收费、道路电子眼自动违章识别抓拍等。近年来,人工智能技术已应用到许多车牌识别方案中。本文主要阐述了车牌识别的整个流程及涉及的人工智能相关算法,比较并分析了各种算法特点和优缺点,对进一步研究人工智能技术在智能交通领域的应用具有一定的借鉴意义。
1 、引言
一个典型的车辆牌照识别过程按照先后顺序一般包括:车辆图像采集、车牌定位、车牌字符分割和车牌字符识别。本文详细阐述这些内容,包括需要解决的问题、实现流程、使用的算法等。
2、 车辆图像采集
识别车牌的第一步是获取车辆图像,也就是车辆图像的采集。在车牌识别现场,车辆图像一般都由摄像机实时拍摄得到,工作环境相对复杂,如受到光线、天气、车辆的行驶速度、车牌位置等各种因素的影响,因此首先需要在硬件上保证所采集的车辆图像尽可能清晰、完整、大小一致、便于处理。
车辆图像采集方式主要有三种方式:
(1)视频识别。其工作原理是通过车牌识别相机拍摄视频识别车辆,可以是普通相机+视频采集卡,也可以是数码相机。
(2)地感线圈识别。其工作原理是当车辆进入识别区域时,安装在车辆减速带前的地感线圈监测到车辆然后发信号给相机进行抓拍。它的优点是有较高的触发率,性能比较稳定;缺点是需要在施工时专门安装硬件设备,工程量相对较大。
(3)视频+地感线圈识别。其工作原理是通过车牌识别相机拍摄视频识别车辆,然后通过地感线圈触发输出识别结果。相比单独使用地感线圈识别或视频识别,该方式具备更快的识别速度和更高的识别率。
3、 车牌定位
车牌定位的任务是从上一步采集的车辆图像找到车牌区域并截取出来。车牌定位算法概括起来可以分为两大类:
(1)基于图形图像学的定位方法,如边缘检测定位、颜色定位等。外界信息的干扰会欺骗定位算法,使得定位算法生成过多的非车牌候选区域,增大系统负荷。此算法的实现分为三步:(1)对图像进行边缘检测、二值化等预处理;(2)进行膨胀和腐蚀操作等形态学处理;(3)查找车牌轮廓并精确定位。
(2)基于机器学习的定位方法,如特征工程定位、神经网络定位等。使用此算法进行车牌定位的关键是找到好的特征和训练方法。其主要步骤可以分为:(1)提供一套拥有正确输出的训练数据(车辆图像);(2)构建神经网络模型;(3)用训练后的模型进行实际车牌定位检测定位效果。
4 、车牌字符分割
车牌字符分割的任务是把上一步得到的车牌区域中的字符正确截取出来,成为多个只包含一个字符的图像。常用的字符分割算法有:基于连通域标记的算法、基于字符几何特征的算法、基于图像投影的算法。其中投影算法应用较为广泛,分隔效率较高。此算法的实现可描述为:首先,遍历整个图片计算每一列白色(车牌号区域)像素点的个数并存到数组中;其次,由数组里的灰度值得到相应的投影图,再通过数组的内容找到相邻字符间的分割点;最后,根据分割点完成字符分割。
5、 车牌字符识别
车牌字符识别是车牌识别过程的最后一步,主要任务是把上一步分隔出的车牌字符图像转化为正确的字符,并最终拼接为正确的车牌号码。在实际应用场景中,主要涉及到辨识的准确性和识别速度两方面。一般停车场在车牌无损伤的状态下识别率应达到95%以上,识别速度应达到1秒以内。车牌字符识别算法可以简单分为以下三类。
(1)模板匹配。这是一种早期较为传统的字符识别方法。其原理是首先建立车牌中所有可能包含的字符串的标准字符模板库,然后将单个字符图像处理成和模板库中字符一样的格式,最后根据一定的规则与模板库中的字符进行比对,计算出一个相似度值,该值最大者即为正确的字符。该算法对于清晰、干净、无倾斜和变形的车牌字符图像识别率较高。
(2)神经网络。它是一种机器学习算法,如典型的BP神经网络、卷积神经网络(CNN)。其工作原理是首先提取梯度分布特征、灰度统计特征等字符特征;然后构建一个神经网络模型,设置网络训练参数;最后进行模型训练并识别检验。
(3)支持向量机(SVM)。该算法本质上和神经网络算法类似,也是一种机器学习方法。其主要设计思路是:先得到样本特征,进行训练,然后再分类。SVM的原理所涉及的数学知识比较复杂,自己编程实现有一定难度,实际应用中一般会直接调用比较成熟地支持SVM的工具箱。SVM算法当前应用较为广泛。