基于SVM和神经网络的车牌识别
本文将介绍创建自动车牌识别(Automatic Number Plate Recognition, ANPR)所需的步骤。对于不同的情形,实现自动车牌识别会用不同的方法和技术,例如,IR摄像机、固定汽车位置、光照条件等。本文着手构造一个用来检测汽车车牌ANPR的应用,该应用处理的图像使从汽车2-3米处拍摄的,拍摄环境的光线昏暗模糊,并且与地面不平行、车牌在图像中有轻微的扭曲。
本文的主要目标是介绍图像分割、特征提取、模式识别基础以及两个重要的模式识别算法:支持向量机(Suport Vector Machine, SVM)和人工神经网络(Artificial Neural Network, ANN)。
本文主要内容:
1) ANPR
2) 车牌检测
3) 车牌识别
一、 ANPR简介
自动车牌识别也称为自动车牌照识别(Automatic Vehicle Identification, AVI)、洗车车牌识别(Car Plate Recognition, CPR),它是一种使用光学字符识别(Optical Character Recognition, OCR)和其他方法(如,用图像分割与检测)来获取车辆牌照的监控方法。
对于一个ANPR系统,其最好结果可用一个红外(IR)摄像机来获取数据,因为在分割这一步中,对检测和OCR分割很简单、干净。并且误差最小。这是由光学的一些基本原理决定的,例如入射角等于反射角,当人看到光滑表面(如平面镜)时就会有这样的反映。粗糙表面(如纸)的反射会导致漫射或散射。多数车牌有一个称为回射的特性,车牌表面覆盖着一种材料,它由许多微小半球颗粒构成,会导致光线沿路反射回去。
如果使用结合了结构性红外光学投影器的摄像机,就可只获取红外光,这样就能得到很高品质的图像,对这种图像进行分割,然后检测和识别车牌。这种情况下的车牌独立于任意光照环境。
二、 ANPR算法
在解析ANPR算法代码之前,需要明白注意步骤和使用ANPR算法的任务。ANPR有两个主要步骤:车牌检测和车牌识别。车牌检测的目的是在整个视频帧中检测到车牌位置。当在图像中检测到车牌时,分割的车牌被传到第二个步骤,即车牌识别,它用OCR算法来识别车牌上的字母和数字。
下面将定义模式识别算法常用的三个步骤:
1)分割:这一步会检测并裁剪图像中每个感兴趣的块或区域;
2)特征提取:这一步对字符图像集的每个部分进行提取;
3)分类:这一步会从车牌识别那一步的结果中得到每个字符,或从车牌检测(plate detection)那一步中将夺得图像块分为“是车牌”或“不是车牌”;
除了这个主要的应用以外,模式识别算法的主要目的是检测和识别汽车车牌,下面简单介绍一下两个任务,这两个任务通常都不会解释。
第一是:如何训练模式识别系统;
第二是:如何评估模式识别系统。
三、 车牌检测
这一步要检测当前帧中所有的车牌。为了实现此功能,该步骤又分为两个主要步骤:图像分割和对分割的图像进行分类。这一步的功能不会解释因为将图像块作为一个向量特征。
在第一步(图像分割)中,将使用各种滤波器、形态学算子,以及轮廓算法来验证所获取图像中所有车牌的部分。
在第二步(分类)中,对每个图像块(即特征)将采用支持向量机(Support Vector Machine, SVM)作为分类器进行分类。在创建主要的应用之前,需要训练两个不同的类:车牌和非车牌号。这步所使用的图像使在汽车前面2-4米拍摄平行的正面视角彩色图像,这些图像有800像素宽。这些要求对确保正确的图像分割很重要。可创建一个多尺度图像算法来进行检测。
下面包括了车牌检测的所有过程:
1) Sobel滤波器;
2) 阀值算子;
3) 闭形态学算子;
4) 一个填充区域掩码;
5) 用红色标记(特征图像中)可能检测到的车牌;
6) 在执行SVM分类器后检测车牌。
四、 图像分割
图像分割是将图像分成多个区域的过程。该过程是为了分析而简化图像,同时也使特征提取更容易。
车牌分割有一个重要特征:假定从汽车前面拍摄图像,会在车牌上有大量竖直边(vertical edge),并且车牌不会被旋转,也没有透视扭曲(perspectivedistortion)。这一性质在分割图像时可采用来删除没有任何竖直边的那些区域。
在找到竖直边之前,需要将彩色图像转换为灰度图像(因为彩色对本任务没有任何用),删除可能由摄像机产生的噪声或其他环节噪声。利用5x5的高斯模糊来去噪。如果不用去噪方法,可能得到很多竖直边,从而造成检测失败。<