两个具有不同灰度值的相邻区域之间总存在边缘,边缘的形成是灰度值不连续的结果,是图像分割、纹理特征提取和形状特征提取等图像分析的基础和重要特征。本项目将使用Roberts算子边缘化来呈现车牌的边缘,效果如图3-4。
1. Roberts算子边缘化:
从图3-4可以看出,车牌部分的边缘已经显现出来:
图3-4 Roberts算子边缘化效果图
2. 腐蚀:
腐蚀,腐蚀的算法为Θ,A用B来腐蚀表示为AΘB,其定义为:
AΘB={x|(B)x⊂A}
上式表明A用B腐蚀的结果是所有x的集合,其中B平移x后仍在A中。换句话说,用B来腐蚀A得到的集合是B完全包括在A中的原点位置的集合。
膨胀和腐蚀并不是互为逆运算,所以它们可以级连使用。例如,可先对图像进行腐蚀然后膨胀其结果,或先对图像膨胀然后腐蚀其结果(这里使用同一个结构元素)。前一种运算称为开启,后一种运算称为闭合。它们也是数学形态学中的重要运算。开启和闭合两种运算都可以除去比结构元素小的特定图像细节,同时保证不产生全局的几何失真。开启运算可以把比结构元素小的突刺滤掉,切断细长搭接而起到分离作用。闭合运算可以把比结构元素小的缺口或孔填充上,搭接短的间断而起到连通作用。
对图像进行腐蚀操作之后,图像上所有边缘离散点都将被“腐蚀”殆尽,那么车牌区域将更加凸显。这对车牌的定位已经足够了。
Matlab中可以用imerode()函数进行腐蚀的处理。这个函数需要两个参数,一个就是需要处理的二值图像,另一个就是结构元素对象。
se=eye(2);选取一个单位矩阵作为结构元素对象,控制腐蚀的力度。
d=imerode(Image,se);用se来腐蚀二值图像Image。结果示意图如下(图3-5):
图3-5 腐蚀后效果图
3. 连通:
通过上一步对边缘图进行处理后,已经过滤掉了图像中大部分的细小干扰因素,车牌候选区个数大大减少了,理想情况下图像中只会有一个候选区域,但一般情况,会有多个候选区域,有很多细小的区域来干扰车牌的定位。这取决于前面的图像预处理工作是否做好。这时候就需要对这个二值图片作进一步处理:要对其进行进一步分析和处理以便于后续工作的进行。
在处理的时候采取连通的方式,将一些相关的边缘连接,形成一个区域。这些区域一旦标记完成,只需要对图像中各个主要的区域进行一定量的计算,就能够定位出车牌所属的区域。连通的效果见下图(图3-6):
图3-6 连通效果图
4. 滤波:
将一些干扰区域滤掉(注意阈值的选取)。边缘检测是大多数图像处理必不可少的一步,提供了物体形状的重要信息,而进一步确定物体边缘区域的时候就要滤掉一些影响结果的干扰区域,这时候就需要滤波。将影响区域滤掉。结果见下图(图3-7):
图3-7 滤波后效果图
这样就能得到车牌区域的坐标,可以再原图中按照这个坐标将车牌区域提取出来。得到车牌后再做后期处理,来分割字符。经过上面各个阶段,已经大致完成了图片预处理阶段,下面将开始车牌定位提取工作。
3.2.2 车牌定位提取
从自然背景中准确可靠地提取出车牌区域是提高系统识别率的关键。由于汽车图像摄于背景复杂且光照不均的自然场景,因而会出现颜色失真或低对比度的图像,这给车牌定位带来了很大的困难。为了解决这个问题,所以对车牌做了前面的这些预处理,这将对后期对车牌的定位起到决定性的作用。 Matlab渣土车车牌图像提取和分割技术研究(6):http://www.youerw.com/jisuanji/lunwen_3681.html