目 录
目录
一 车牌自动识别案例
车牌自动识别模块是现代社会智能交通系统(ITS)中不可或缺的一部分,它结合了图像处理与模式识别两大领域的先进技术,成为了当前研究的热点之一。这项技术不仅能够极大地提高道路交通管理效率,还能有效促进城市安全监控体系的建设与发展。其应用范围广泛,包括但不限于停车场管理、高速公路收费自动化、违章行为检测等多个方面
车牌自动识别模块是现代社会智能交通系统(ITS)的重要组成部分,是图像处理和模式识 别技术研究的热点,具有非常广泛的应用。车牌识别主要包括以下三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。
本案例通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程进行车牌图像 预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。 车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。本案例采用了模板 匹配的方法,对输出的字符图像和模板库里的模板进行匹配以得到对应车牌字符的具体信息。 本案例基于MATLAB 的 GUI 工具进行设计仿真实验,实验表明,整体方案有效可行。基于模 板匹配的车牌识别技术在识别正确率、速度方面具有独特的优势及广阔的应用前景。
基于模板匹配技术的车牌识别方法凭借其出色的性能表现,在未来智能交通领域拥有广阔的发展空间和应用潜力。随着相关技术的不断进步和完善,相信不久之后我们就能看到更多创新性的解决方案出现在市场上,为人们的生活带来更多便利。
二 系统功能理论分析
车牌定位与字符识别技术以计算机图像处理、模式识别等技术为基础,通过对原图像进行 预处理及边缘检测等过程来实现对车牌区域的定位,然后对车牌区域进行图像裁剪、归一化、字符分割及保存,最后将分割得到的字符图像与模板库的模板进行匹配识别,输出匹配结果。该流程如图2.1 所示。
图2.1 总体设计流程图
在进行车牌识别时首先要正确分割车牌区域,为此人们已经提出了很多方法:使用 Hough 变换检测直线来定位车牌边界进而获取车牌区域;使用灰度阈值分割、区域生长等方法进行区 域分割;使用纹理特征分析技术检测车牌区域等。Hough 变换对图像噪声比较敏感,因此在检 测车牌边界直线时容易受到车牌变形或噪声等因素的影响,具有较大的误检测概率。灰度阈值 分割、区域增长等方法则比 Hough 直线检测方法稳定,但当图像中包含某些与车牌灰度非常相 似的区域时,便不再适用了。同理,纹理特征分析方法在遇到与车牌纹理特征相近的区域或其他干扰时,车牌定位的正确性也会受到影响。因此,仅采用单一的方法难以达到实际应用的要求。
如果进行车牌字符的定位及裁剪,则需要首先对输入的车牌图像进行预处理以得到精确的 车牌字符图像;然后将处理后的车牌看作由连续的字符块组成,并设定一个灰度阈值,如果超 过该阈值,则认为有多个字符相连,需要对其进行切割,进而实现对车牌字符的分割;最后把 分割的字符图片进行标准化并与模板库进行对比,选出最相似的字符结果并输出,即为车牌信息。
三 车牌图像处理系统设计流程
图像预处理流程图如下图3.1所示
图 3.1预处理及边缘提取流程图
3.1 车牌定位
3.1.1图像灰度化
车牌图像的采集一般是通过数码相机或者摄像机进行的,得到的图片一般是 RGB 图像,即 真彩图像。根据三基色原理,每种颜色都可以由红、绿、蓝三种基色按不同的比例构成,所以 车牌图像的每个像素都由 3 个数值来指定红、绿、蓝的颜色分量。灰度图像实际上是一个数据 矩阵 I,该矩阵中每个元素的数值都代表一定范围内的亮度值,矩阵 I 可以是整型、双精度,通常 0 代表黑色,255 代表白色。在 MATLAB 中,一幅 RGB 图像可以用 uint8、uint16 或者双精 度等类型的 m×n×3 矩阵来描述,其中 m 和 n 分别表示图像的宽度和高度,此处的 RGB 图像不 同于索引图,所以不使用调色板。
车牌区域具有明显的特点,因此根据车牌底色、字色等有关知识,可采用彩色像素点统计 的方法分割出合理的车牌区域。本案例以蓝底白字的普通车牌为例说明彩色像素点统计的分割 方法,假设经数码相机或 CCD 摄像头拍摄采集到了包含车牌的 RGB 彩色图像,将水平方向记 为 y,将垂直方向记为 x,则:首先,确定车牌底色 RGB 各分量分别对应的颜色范围;其次, 在 y 方向统计此颜色范围内的像素点数量,设定合理的阈值,确定车牌在 y 方向的合理区域; 然后,在分割出的 y 方向区域内统计 x 方向上此颜色范围内的像素点数量,设定合理的阈值进 行定位;最后,根据 x、y 方向的范围来确定车牌区域,实现定位。
3.2 图像二值化
灰度图像二值化在图像处理的过程中有着很重要的作用,图像二值化处理不仅能使数据量 大幅减少,还能突出图像的目标轮廓,便于进行后续的图像处理与分析。对车牌灰度图像而言, 所谓的二值化处理就是将其像素点的灰度值设置为 0 或 255,从而让整幅图片呈现黑白效果。 因此,对灰度图像进行适当的阈值选取,可以在图像二值化的过程中保留某些关键的图像特征。 在车牌图像二值化的过程中,灰度大于或等于阈值的像素点被判定为目标区域,其灰度值用 255表示;否则这些像素点被判定为背景或噪声而排除在目标区域以外,其灰度值用 0 表示。 图像二值化是指在整幅图像内仅保留黑、白二值的数值矩阵,每个像素都取两个离散数值(0 或 1)之一,其中 0 代表黑色,1 代表白色。在车牌图像处理系统中,进行图像二值化的关
键是选择合适的阈值,使得车牌字符与背景能够得到有效分割。采用不同的阈值设定方法对车 牌图像进行处理也会产生不同的二值化处理结果:阈值设置得过小,则容易误分割,产生噪声, 影响二值变换的准确度;阈值设置得过大,则容易过分割,降低分辨率,使非噪声信号被视为 噪声而被过滤,造成二值变换的目标损失。
3.3 图像边缘检测
边缘是指图像局部亮度变化最显著的部分,主要存在于目标与目标、目标与背景、区域与 区域、颜色与颜色之间,是图像分割、纹理特征提取和形状特征提取等图像分析的重要步骤之 一。在车牌识别系统中,边缘提取对于车牌位置的检测有很重要的作用,常用的边缘检测算子 有很多,如 Roberts、Sobel、Prewitt、Laplacian、log 及 canny 等。据试验分析,canny 算子对弱 边缘的检测相对精确,能更多地保留车牌区域的特征信息,所以本案例采用 canny 算子进行边 缘检测。canny 算子在边缘检测中有以下明显的判别指标。本环节用于车牌位置的定位使用。
3.3.1 定位精度
边缘的定位精度 L 的定义如下:

式中, G¢( x) 、 h¢( x) 分别是 G ( x) 、 h ( x) 的导数。 L 越大,定位精度越高。
3.3.2 图像形态学运算
数学形态学图像处理的基本运算有 4 个:膨胀(或扩张)、腐蚀(或侵蚀)、开启和闭合。 二值形态学中的运算对象是集合,通常给出一个图像集合和一个结构元素集合,利用结构元素 对图像集合进行形态学操作。
膨胀运算符号为 Å ,图像集合 A 用结构元素 B 来膨胀,记作 A Å B ,其定义为:

式中, Bˆ 表示 B 的映像,即与 B 关于原点对称的集合。因此,用 B 对 A 进行膨胀的运算 过程如下:首先做 B 关于原点的映射得到映像,再将其平移 x ,当 A 与 B 映像的交集不为空时, B 的原点就是膨胀集合的像素。
腐蚀运算的符号是 Q ,图像集合 A 用结构元素 B 来腐蚀,记作 AQB ,其定义为:

因此, A 用 B 腐蚀的结果是所有满足将 B 平移后 B 仍旧被全部包含在 A 中 x 的集合中, 也就是结构元素 B 经过平移后全部被包含集合 A 中原点所组成的集合中。
膨胀操作会使物体的边界向外扩张,此时如果在物体内部存在小空洞,则经过膨胀操作, 这些洞将被补上,不再是边界。如果再次进行腐蚀操作,外部的边界则将变回原来的样子,内 部的这些空洞则已经消失。腐蚀操作会去掉物体的边缘点,如果物体足够细小,则其所有的点 都会被认为是边缘点,进而被整体消除,仅保留大物体。进行膨胀操作时,留下来的大物体会 变回原来的大小,被消除的小物体消失。
3.3.4 图像滤波处理
图像滤波能够在尽量保留图像细节特征的条件下对噪声进行抑制,是图像预处理中常用的操作之一,其处理效果的好坏将直接影响后续图像分割和识别的有效性和稳定性。
均值滤波也被称为线性滤波,是图像滤波最常用的方法之一,采用的主要方法为领域平均 法。该方法对滤波像素的位置(x, y)选择一个模板,该模板由其近邻的若干像素组成,求出模板 中所包含像素的均值,再把该均值赋予当前像素点(x, y),将其作为处理后的图像在该点上的灰

度值 g(x, y) ,即
,
M 为该模板中包含当前像素在内的像素总个数。
采集车牌图像的过程往往会受到多种噪声的污染,进而会在将要处理的车牌图像上呈现一 些较为明显的孤立像素点或像素块。在一般情况下,在研究目标车牌时所出现的图像噪声都是 无用的信息,而且会对目标车牌的检测和识别造成干扰,极大地降低图像质量,影响图像增强、 图像分割、特征提取、图像识别等后继工作的进行。因此,在程序实现中为了能有效地进行图 像去噪,并且能有效地保存目标车牌的形状、大小及特定的几何和拓扑结构特征,本案例采用 均值滤波对车牌图像进行去噪处理。
3.4车牌字符处理
3.4.1阈值分割原理
阈值分割算法是图像分割中应用场景最多的算法之一。简单地说,对灰度图像进行阈值分 割就是先确定一个处于图像灰度取值范围内的阈值,然后将图像中各个像素的灰度值与这个阈 值进行比较,并根据比较的结果将对应的像素划分为两类:像素灰度大于阈值的一类和像素灰 度值小于阈值的另一类,灰度值等于阈值的像素可以被归入这两类之一。分割后的两类像素一 般分属图像的两个不同区域,所以对像素根据阈值分类达到了区域分割的目的。由此可见,阈 值分割算法主要有以下两个步骤。
1.确定需要分割的阈值。
2.将阈值与像素点的灰度值进行比较,以分割图像的像素。 在以上步骤中,确定阈值是分割的关键,如果能确定一个合适的阈值,就可以准确地将图像分割开来。
如果一幅图像满足这些条件,则它的灰度直方图基本上可看作由分别对应目标 和背景的两个单峰构成。如果这两个单峰部分的大小接近且均值相距足够远,两部分的均方差 也足够小,则直方图在整体上呈现较明显的双峰现象。同理,如果在图像中有多个呈现单峰灰 度分布的目标,则直方图在整体上可能呈现较明显的多峰现象。因此,对这类图像可用取多级 阈值的方法来得到较好的分割效果。
如果要将图像中不同灰度的像素分成两类,则需要选择一个阈值。如果要将图像中不同灰 度的像素分成多个类,则需要选择一系列的阈值将像素分到合适的类别中。如果只用一个阈值 分割,则可称之为单阈值分割方法;如果用多个阈值分割,则可称之为多阈值分割方法。因此, 单阈值分割可看作多阈值分割的特例,许多单阈值分割算法可被推广到多阈值分割算法中。同 理,在某些场景下也可将多阈值分割问题转化为一系列的单阈值分割问题来解决。以单阈值分 割算法为例,对一幅原始图像 f (x, y) 取单阈值 T 分割得到的二值图像可定义为:

值得注意的是,无论是单阈值分割还是多阈值分割,在分割结果中都有可能出现在不同区 域内部包含相同标号或区域值的情况。这是因为阈值分割算法只考虑了像素本身的灰度值,并 未考虑像素的空间位置。因此,根据像素的灰度值,划分到同一类的像素有可能分属于图像中 不相连通的区域,这时往往需要借助应用场景的某些先验知识来进一步确定目标区域。
3.5 对车牌进行阈值化分割
车牌字符图像的分割即将车牌的整体区域分割成单字符区域,以便后续识别。车牌字符分 割的难点在于受字符与噪声粘连,以及字符断裂等因素的影响。均值滤波是典型的线性滤波 算法,指在图像上对像素进行模板移动扫描,该模板包括像素周围的近邻区域,通过模 板与命中的近邻区域像素的平均值来代替原来的像素值,实现去噪的效果。为了从车牌图 像中直接提取目标字符,最常用的方法是设定一个阈值 T ,用 T 将图像的像素分成两部分:大于 T 的像素集合和小于 T 的像素集合,得到二值化图像。因此,本案例采用均值滤波算法来 对车牌字符图像进行滤波去噪,采用阈值化分割进行车牌字符的分割。
3.6 字符图像归一化处理
字符图像归一化是简化计算的方式之一,在车牌字符分割后往往会出现大小不一致的情况, 因此可采用基于图像放缩的归一化处理方式将字符图像进行大小放缩,以得到统一大小的字符 图像,便于后续的字符识别。
3.7 车牌字符识别
字符识别简介车牌字符识别方法基于模式识别理论,常用模板匹配该方法是数字图像处理中最常用的识别方法之一,通过建立已知的模式库,再将其应用到 输入模式中寻找与之最佳匹配模式的处理步骤,得到对应的识别结果,具有很高的运行效率。本案例选择的是基于模板匹配的字符识别方法,其基本过程如下。1.建库。建立已标准化的字符模板库。2.对比。将归一化的字符图像与模板库中的字符进行对比,在实际实验中充分考虑了我国普通小汽车牌照的特点,即第1位字符是汉字,分别对应各个省的简称,第2位是 A~Z 的字母;后5位则是数字和字母的混合搭配。因此为了提高对比的效率和准确性,分别对第1位、第2位和后5位字符进行识别。输出。在识别完成后输出所得到的车牌字符结果。其流程如图3.4所示。

图3.2
3.8 基于模板匹配的字符识别
模板匹配是图像识别方法中最具有代表性的基本方法之一,该方法首先根据已知条件建立 模板库 T(i, j),然后从待识别的图像或图像区域 f(i,j)中提取若干特征量与 T(i, j)相应的特征量进 行对比,分别计算它们之间归一化的互相关量。其中,互相关量最大的一个表示二者的相似程 度最高,可将图像划到该类别。此外,也可以计算图像与模板特征量之间的距离,采用最小距 离法判定所属类别。但是,在实际情况下用于匹配的图像其采集成像条件往往存在差异,可能 会产生较大的噪声干扰。此外,图像经过预处理和归一化处理等步骤,其灰度或像素点的位置 也可能会发生改变,进而影响识别效果。因此,在实际设计模板时,需要保持各区域形状的固 有特点,突出不同区域的差别,并充分考虑处理过程可能会引起的噪声和位移等因素,按照基 于图像不变的特性所对应的特征向量来构建模板,提高识别系统的稳定性。
本案例采用特征向量距离计算的方法来求得字符与模板中字符的最佳匹配,然后找到对应 的结果进行输出。首先,遍历字符模板;其次,依次将待识别的字符与模板进行匹配,计算其 与模板字符的特征距离,得到的值越小就越匹配;然后,将每幅字符图像的匹配结果都进行保 存;最后,有 7 个字符匹配识别结果即可作为车牌字符进行输出。字符识别流程图如图3.3所示

图 3.3。字符识别流程图
四 程序设计思路及设计步骤
4.1获取图像
uigetfile函数打开一个文件选择对话框,允许用户选择一个图像文件。
{'*.jpg;*.tif;*.png;*.gif', 'All Image Files'; '*.*', '所有文件'}定义了文件过滤器,用户可以选择特定类型的图像文件或所有文件。
'选择图像文件'是对话框的标题。
fullfile(pwd, 'images/京NM8T88.jpg')指定了默认路径和文件名。
filename和pathname分别存储所选文件的文件名和路径。
原图像如图4.1所示
图 4.1原图像
4.2图像灰度化
灰度化后图像如图4.2所示
图 4.2灰度化图像
4.3边缘检测
这此特征表现在:近似水平的矩形区域;其中字符串都是按水平方向排列的;在整体图像中的位置较为固定。正是由于牌照图像的这些特点,再经过适当的图象变换,它在整幅中可以明显地呈现出其边缘。边缘提取是较经典的算法,此处边缘的提取采用的是Sobel算子。检测图如图 4.3所示

图 4.3边缘检测图
4.4腐蚀操作
腐蚀后边缘图如图4.4所示

图 4.4腐蚀边缘图
4.5填充图像
填充图如图4.5

图 4.5填充图
4.6进行形态滤波
形态滤波如图4.6所示
图 4.6形态滤波图
4.7车牌提取
通过比较累计行像素灰度值和列像素灰度值确定车牌的真实位置,由上述方法分割出来的车牌图像中存在目标物体、背景还有噪声,要想从图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群,即对图像二值化。然后通过行像素点的累计值去除顶端和底端不感兴趣的地方。
车牌提取图如图4.7所示

图 4.7车牌提取图
4.8车牌字符分割
因为车牌字符间间隔较大,通常不会出现字符粘连情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割。一般分割出来的字符要进行进一步的处理,以满足下一步字符识别的需要。但是对于车牌的识别,并不需要太多的处理就已经可以达到正确识别的目的。在此只进行了归一化处理,然后进行后期处理。寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割。车牌字符分割如图4.8所示


图 4.8所示
4.9车牌识别
如图4.9所示为根据车牌模块匹配得到车牌号。


图 4.9车牌识别结果
五 代码调试及代码分析
当使用 uigetfile 函数选择图像文件时,如果用户取消选择或没有选择任何文件,filename 会是 0。在这种情况下,代码会尝试读取一个不存在的文件路径,导致错误。
解决方案:在读取文件之前检查 filename 是否为 0,如果是则直接返回。
如果某些句柄对象(如 axes1, axes2, ..., axes15)在 GUI 中不存在,或者这些对象的属性设置不正确,会导致错误。
解决方案:确保所有需要的句柄对象在 GUI 中正确创建,并且属性设置正确。
如果所选文件不是有效的图像文件,imread 函数将无法读取图像,并返回空矩阵。
解决方案:在调用 imshow 之前检查 Img 是否为空。
如果在回调函数中修改了句柄结构体,但没有使用 guidata 函数更新句柄结构体,可能会导致后续操作无法获取最新的数据。
解决方案:每次修改句柄结构体后,使用 guidata(hObject, handles) 更新句柄结构体。
六 实践结果程序实现
车牌自动识别系统以车辆的动态视频或静态图像作为输入,通过牌照颜色、牌照号码等关 键内容的自动识别来提取车牌的详细信息。系统硬件配置一般包括线圈触发设备、摄像设备、 灯光设备、采集设备、车牌号码识别器等;其软件核心配置包括车牌定位算法、车牌字符分割 算法和车牌字符识别算法等。某些车牌识别系统还具有通过视频图像判断车辆驶入监控区域的 功能,一般被称为视频车辆检测,被广泛应用于道路车流量统计等方面。在现实生活中,一个完整的车牌识别系统应包括车辆检测、图像采集、车牌定位、车牌识别等模块。例如,当车辆检测模块检测到车辆时,会触发图像采集模块采集当前的车辆图像,车牌定位识别模块会对图像进行处理,定位车牌位置,再将车牌中的字符分割出来进行识别,最后组成车牌号码输出。
车牌信息是一辆汽车独一无二的标识,所以车牌识别技术可以作为辨识一辆车最为有效的 方法。车牌识别系统包括汽车图像的输入、车牌图像的预处理、车牌区域的定位和字符检测、 车牌字符的分割和识别等部分,如图6.1 所示。

图6.1 车牌识别流程图
6.1 车牌定位和分割
车牌区域定位和分割的过程通过颜色纹理范围定义、行列扫描的方式来实现。从图像的顶部开始逐行扫描,统计每行中满足颜色和纹理条件的像素点数量。当连续多行满足条件时,认为这些行属于车牌区域的一部分。如图6.2所示为根据车牌颜色纹理特征参数定 位车牌区域。

图6.1 车牌区域定位
6.2 阈值处理
图像二值化指在整幅图像画面内仅有黑、白二值的图像。在实际的车牌处理系统中,进行图像二值变换的关键是确定合适的阈值,使得字符与背景能够分割开来。车牌图像经过二值变 换后具备良好的保形性,能有效保持车牌的形状信息,并能去除额外的孔洞区域。车牌识别系统一般要求具有速度高、成本低的特点,采用二值图像进行处理,能大大提高处理效率。阈值处理是通过 OSTU 算法生成一个阈值,如果图像中某个像素的灰度值小于该阈值,则将该像素的灰度值设置为 0 或 255,或者将其灰度值设置为255或0,如图 6-2 所示。

图 6-2 图像二值化
6.3 GUI 框架设计
为了集成车牌识别的过程,可通过设计工具栏的快捷方式,组织按钮控件、显示控件等对象得到 GUI 框架,如图6.3所示。

图6.3 GUI 框架设计
6.4 模块匹配
其中,字符识别过程采用了模板匹配的方法,在实际操作中通过对归一化后的字符图像与模板库进行对比得到对应的字符结果,使用模板匹配的方法识别第一个字符(通常是汉字)。使用模板匹配的方法识别剩余的字符(包括字母和数字)。并组织成车牌字符串进行输出。
其中,字符分割按钮关联了对车牌字符图像的分割及存储操作,能进行归一化处理,得到 待识别的对象。载入车牌图像,进行定位、二值化、切割、识别操作,实验效果如图6.4所示。

图6.4
七 总结
本文主要对车辆牌照识别整个过程进行了研究, 在 MATLAB 软件中实现了车辆图像预处理、车牌定位 与分割、车牌字符分割处理、车牌字符识别。通过对包含车辆的自然图像进行预处理,增强车牌特征信息,然后采用行列像素扫描法分割得到车牌区域;本文主要解决了以下问题:1、在背景的图像中如何定位牌照;2、将定位的牌照区域中的字符分割;3、对分割下来的牌照字符提取具有分类能力的特征,并对汉字、字母及数字均进行识别。在车辆牌照字符识别系统的研究领域,近几年出现了许多切实可行的识别技术和方法,从这些新技术和方法中可以看到:单一的预处理和识别技术都无法达到理想的结果,多种方法的有机结合才能使系统有效识别能力提高。在本系统的设计时,也汲取了以上一些算法的思想,结合实际,反复比较,综合分析。但是系统本身还存在许多不足,距离具体实用的要求仍有很大差距,但我却在这次课程设计中学到了很多知识快速地识别出车牌号码。
对于车牌的模板匹配,一开始采用的是计算两张图像的绝对差值,值越小则匹配度越高。然而,对于歪曲字符,由于其结构变换或图像角度等问题,导致匹配结果错误。此基础上进行对于函数参数以及设计算法的修改,使得最终对于图片库中的车牌照片的识别率达到了75%以上。