关于车牌定位的一些算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
近年来,智能交通系统(ITS)越来越受到人们的重视在车牌识别中,车牌自动识别系统作为核心部分之一应用已经越来越普及。车牌识别系统主要分车牌定位、字符切分和字符识别三部分,而车牌定位又是系统中最重要的步骤,定位的成功与否以及定位的准确程度将会直接决定后期能否进行车牌识别以及识别的准确度。
文中利用MATLAB进行分析与仿真。MATLAB是一种简单,高效、功能强大的高级语言,在科学与工程计算领域有着广泛的应用前途。在数字图像处理领域,可应用MATLAB数字图像处理技术进行系统分析与设计。
本文要讨论的是对彩色车牌图像进行包括灰度化、二值化、图像增强、边缘检测的预处理,之后进行区域提取来实现对车牌的初定位。借助MATLAB编程语言在仿真过程中分析现有算法并加以改进。
1 车牌定位中的基本理论与算法
1.1图像灰度化
彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。经过灰度变换后,像素的动态范围增加,图像的对比度扩展,使图像变得更加清晰、细腻、容易识别。
在车牌识别中要利用灰度分布的特征进行进一步的分割、识别,因此对车牌图像进行灰度化成为车牌定位的必要步骤之一。
1.2图像二值化
二值图像是指整幅图像画面内仅黑、白二值的图像。在实际的车牌处理系统中,进行图像二值变换的关键是要确定合适的阀值,使得字符与背景能够分割开来,二值变换的结果图像必须要具备良好的保形性,不丢掉有用的形状信息,不会产生额外的空缺等等。车牌识别系统要求处理的速度高、成本低、信息量大,采用二值图像进行处理,能大大地提高处理效率。如果图像中某中像素的灰度值小于该阈值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0。
阈值处理的操作过程是先由用户指定或通过算法生成一个阈值,常用的二值化方法有直方图统计法、固定门限法、动态阈值法、松弛法、抖动矩阵二值化法等。由于在光照较弱的情况下,车牌图像的光照程度很不均匀,车牌字符与底色的对比度偏低,所以采取动态阈值法。
1.3数学形态学及基本运算
形态学的数学基础和所用语言是集合论,其基本运算有四种:膨胀、腐蚀、开启和闭合。基于这些基本运算,还可以推导和组合成各种数学形态学实用算法。假设用A表示目标物体,B表示结构元素,则二值形态学基本运算及实用算法如下:
如果图像A用结构元素B来膨胀,则记作A⊕B,其定义为:
其中,膨胀运算首先作B关于原点的映射,再将其映像平移x,当A与B的映射的交集不为空时B的原点就是膨胀集合的像素,结果是扩张了A的边界。如果图像A 用结构元素口来腐蚀,记作A⊙B,其定义为:
上式表明用结构元素B来腐蚀的结果满足将占平移后,B仍旧全部包含在4中的工的集合,实际上是收缩了A的边界。
膨胀和腐蚀为对称运算,不是逆运算,它们可以级联结合使用。使用同一个结构元素对图像先进行腐蚀然后再进行膨胀的运算成为开启运算,开启运算可以用于平滑边界,去除孤立的小点、切断细长搭接,消除突刺;使用同一个结构元素对图像先进行膨胀然后再进行腐蚀的运算成为闭合运算,本文中主要利用是利用开启和闭合运算的性质。因为汽车图像经过色彩过滤后,会出现许多杂散的孤立点,用开启运算可以排除这些点的干扰。另外,车牌区域还可能出现断裂和小孔,可以通过闭合运算使车牌区域连通,并填充车牌区域内的小孔。
本文中主要利用是利用开启和闭合运算的性质。因为汽车图像经过色彩过滤后,会出现许多杂散的孤立点,用开启运算可以排除这些点的干扰。另外,车牌区域还可能出现断裂和小孔,可以通过闭合运算使车牌区域连通,并填充车牌区
域内的小孔。
1.4边缘检测
图像的边缘是图像的最基本特征。所谓边缘是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。边缘广泛存在于物体和背景之间、物体和物体之间、基元和基元之间。因此,它是图像分割所依赖的重要特征。常用的边缘检测方法有Sobel边缘算子、Prewitt边缘算子、Kirseh边缘算子、高斯--拉普拉斯算子等等。
该文采用的是Canny边缘检测的方法。该方法为最优的阶梯型边缘检测算法。
1.1.1 Canny边缘检测基本原理
(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。
(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。
(3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。
1.1.2 Canny边缘检测算法
首先用高斯滤波器平滑图象,利用用一阶偏导的有限差分来计算梯度的幅值和方向;再对梯度幅值进行非极大值抑制;然后用双阈值算法检测和连接边缘。最后用到高斯平滑函数通过将八连接的弱像素集成到强像素,执行边缘链接。
本文通过仿真与对比的方式选择边缘检测的算子,分别对比检测要求的特征和检测起映射的效果的清晰程度。比较之下发现目前Canny边缘检测器产生的结果最佳。
1.5区域标记
对二值图像进行区域提取时,首先需要对对图像每个区域进行标记,其中应用到了连通对象进行标注函数bwlabel主要对二维二值图像中各个分离部分进行标注,其用法如下:
[L,num] = bwlabel(BW,n)
其中,L表示返回和BW相同大小的数组,而且包含了连通对象的标注。参数n为4或8,分别对应4邻域和8邻域,默认值为8。Num为返回连通数。
然后,需要得到图像区域属性。计算每个区域的图像特征参数:区域中心位置、最小包含矩形、面积。这里给出在Matlab图像处理工具箱中非常重要的一个图像分析函数:regionprops。它的用途是get the properties of region,即用来度量图像区域属性的函数。其用法如下:
STATS = regionprops(L,properties)
其中,测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。返回值STATS是一个长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。properties可以是由逗号分割的字符串列表、饱含字符串的单元数组、单个字符串‘all' 或者‘basic'。如果properties等于字符串‘all',则所有下述字串列表中的度量数据都将被计算,如果properties 没有指定或者等于‘basic',则属性:‘Area', ‘Centroid', 和‘BoundingBox' 将被计算。
本文对已经得到了可行车牌区域的连通域,进行连通域分析均用到上述函数,从而计算出包含所标记的区域的最小宽和高。并根据先验知识,即对标准车牌而言这个宽高比大致为3.14 ,不妨取2~4 为字符区域的宽高比范围。比较谁的宽高比更接近实际车牌宽高比,将更接近的提取并显示出来。
2 仿真实验
2.1 图像的预处理
2.1.1 图像灰度化
将采集到的彩色车牌图像转化为灰度图像。
%将彩色图像转换为黑白并显示
Sgray = rgb2gray(Scolor); %转换成灰度图
figure,imshow(Sgray), title('原始黑白图像');