一种边缘检测与扫描线相结合的车牌定位算法
发布时间:2007/4/23 0:00:00 访问次数:569
(2)颗泣滤波
长程滤波后,图像中仍有许多候选点集结成小型的彼此分离的颗粒状,而车牌区的候选点一般不会有这种情况。由此进行了颗粒滤波处理,滤掉颗粒噪声。
由此本文定义两个模块:击不中模板、击中模板,如图3所示。只要击中模板和图像乘积大于一定阈值,而击不中模板与图像乘积小于一定阈值就把击中模板内的图像全置为零。
颗粒滤波基于这样的想法:对于某一个候选点颗粒状集合,在它周围一定存在一个小矩形区(矩形区的大小与所考察的颗粒粒度有关),这个小矩形区的四周,包含非常少的候选点(理想情况是没有候选点)。那么,对全图进行小矩形区扫描,检查矩形区周边上的候选点个数是否小于阈值。如果小于,则认为该矩形区内的所有候选点形成了孤立的颗粒状命令,抹去这些点,就达到了颗粒滤波的目的。由于颗粒大小不一,可以进行若干次不同粒度的颗粒消抹。对图2(b)进行长程滤波与颗粒滤波后的处理结果如图4所示。
2.2 车牌的预定位
本文利用了车牌字符的连续特性。车牌区域有连续7个字符,而且字符与字符之间的距离在一定范围内。本文定义从目标到背景或者从背景到目标为一个跳变。牌照区域相对于其它非车牌区域跳变多,而且间距在一定范围内和跳变次数大于一定次数。通常为14以上,因为车牌中今有7个字符,每个字符有两个以上跳变,为了防止字符的断裂、模糊、车牌倾斜等的影响,本文保守起见采用10。
因此本文扫描线在二值化图像中扫描定位车牌(一般来说车牌都在车辆的下部,与车牌文字类似的文字干扰大多在上部),采用从左到右、从下到上的顺序扫描。算法如下:
从下到上的顺序扫描,对图像的每一行进行从右向左的扫描。
(1)碰到跳变点记录下当前位置,如果某行有连续10个跳变点以上,并且前一个跳变和后一个跳变点的距离在一定范围内,就记录下起始占烽终止点位置。
(2)如果连续有十行以下这样的跳变点,并且相邻上下行的起始点和终止点相邻。就认为该区域是车牌预选区域。图5显示一幅典型的车辆图像的定位结果图。
从定位结果看,本定位算法还适合车辆图像中包含多车牌的情况,而且定位速度受多车牌影不大。虽然车灯和车上的字符(包括车牌、车灯等垂直边缘丰富的区域,以及缴费车牌等)也可能定位为预选区域,但是由于它们大都在车牌的上方,本文又采用从下而上的方式对预选区域进行筛选,所以对定位速度影响不大。在99%以上的情况下遇到的的第一个预选区域是车牌区域如图6(a)、(c),很少有象图6(b)的情况。基于这种情况,本文这样设计定位策略:若要求实时处理,就只选取第一个预选区域,把它送入切分和识别模块;如果不要求实时性,就可以把各个预选区域分别送入切分和识别模块。同时对于2000式车牌(图6(c)),本文算法也能准确定位。对于2000式车牌中上排的字符,只能通过切分模块反馈获得车牌左右边界的进一步定位。
对大多数车辆来说车牌定位非常准确,但是对某些车牌来说,特别是货车的车牌,牌照很有可能与附近的汽车纹理轮廓的某些区域发生了粘连,所有这些区域均构成了候选牌照区。因此为提取正确车牌区域,必须设法去除虚假候选牌照区,从粘连的候选牌照区和复合块中分离出真正的牌照区。在实际场景中,用上述算法预选的区域粘连都是与车牌左右两边的一些纹理轮廓粘连,几乎不与车牌上下部分粘连(由于算法只利用垂直边缘),所以前面定位的预选区域的高度就可以近似为车牌的高度,可以依据车牌的先验知识,根据牌照字符高宽比,可估计出牌照字符宽度CharWidth。在此可能参看文献的算法。该算法通过牌照字符度估计出牌照宽度Platewidth(对于普通车牌一般取10×CharWidth),同时根据牌照区图像的垂直边缘图在牌照字符处高度集中,而在其他地方相对分散的纹理特征和估计出的牌照宽度来自动搜索牌照字符区域所在的位置,即真正车牌区域边缘向下投影为最大。具体步骤可参看文献。
采用该方法对图7进行了牌照左右边界确定,结果如图8所示。白色矩形
(2)颗泣滤波
长程滤波后,图像中仍有许多候选点集结成小型的彼此分离的颗粒状,而车牌区的候选点一般不会有这种情况。由此进行了颗粒滤波处理,滤掉颗粒噪声。
由此本文定义两个模块:击不中模板、击中模板,如图3所示。只要击中模板和图像乘积大于一定阈值,而击不中模板与图像乘积小于一定阈值就把击中模板内的图像全置为零。
颗粒滤波基于这样的想法:对于某一个候选点颗粒状集合,在它周围一定存在一个小矩形区(矩形区的大小与所考察的颗粒粒度有关),这个小矩形区的四周,包含非常少的候选点(理想情况是没有候选点)。那么,对全图进行小矩形区扫描,检查矩形区周边上的候选点个数是否小于阈值。如果小于,则认为该矩形区内的所有候选点形成了孤立的颗粒状命令,抹去这些点,就达到了颗粒滤波的目的。由于颗粒大小不一,可以进行若干次不同粒度的颗粒消抹。对图2(b)进行长程滤波与颗粒滤波后的处理结果如图4所示。
2.2 车牌的预定位
本文利用了车牌字符的连续特性。车牌区域有连续7个字符,而且字符与字符之间的距离在一定范围内。本文定义从目标到背景或者从背景到目标为一个跳变。牌照区域相对于其它非车牌区域跳变多,而且间距在一定范围内和跳变次数大于一定次数。通常为14以上,因为车牌中今有7个字符,每个字符有两个以上跳变,为了防止字符的断裂、模糊、车牌倾斜等的影响,本文保守起见采用10。
因此本文扫描线在二值化图像中扫描定位车牌(一般来说车牌都在车辆的下部,与车牌文字类似的文字干扰大多在上部),采用从左到右、从下到上的顺序扫描。算法如下:
从下到上的顺序扫描,对图像的每一行进行从右向左的扫描。
(1)碰到跳变点记录下当前位置,如果某行有连续10个跳变点以上,并且前一个跳变和后一个跳变点的距离在一定范围内,就记录下起始占烽终止点位置。
(2)如果连续有十行以下这样的跳变点,并且相邻上下行的起始点和终止点相邻。就认为该区域是车牌预选区域。图5显示一幅典型的车辆图像的定位结果图。
从定位结果看,本定位算法还适合车辆图像中包含多车牌的情况,而且定位速度受多车牌影不大。虽然车灯和车上的字符(包括车牌、车灯等垂直边缘丰富的区域,以及缴费车牌等)也可能定位为预选区域,但是由于它们大都在车牌的上方,本文又采用从下而上的方式对预选区域进行筛选,所以对定位速度影响不大。在99%以上的情况下遇到的的第一个预选区域是车牌区域如图6(a)、(c),很少有象图6(b)的情况。基于这种情况,本文这样设计定位策略:若要求实时处理,就只选取第一个预选区域,把它送入切分和识别模块;如果不要求实时性,就可以把各个预选区域分别送入切分和识别模块。同时对于2000式车牌(图6(c)),本文算法也能准确定位。对于2000式车牌中上排的字符,只能通过切分模块反馈获得车牌左右边界的进一步定位。
对大多数车辆来说车牌定位非常准确,但是对某些车牌来说,特别是货车的车牌,牌照很有可能与附近的汽车纹理轮廓的某些区域发生了粘连,所有这些区域均构成了候选牌照区。因此为提取正确车牌区域,必须设法去除虚假候选牌照区,从粘连的候选牌照区和复合块中分离出真正的牌照区。在实际场景中,用上述算法预选的区域粘连都是与车牌左右两边的一些纹理轮廓粘连,几乎不与车牌上下部分粘连(由于算法只利用垂直边缘),所以前面定位的预选区域的高度就可以近似为车牌的高度,可以依据车牌的先验知识,根据牌照字符高宽比,可估计出牌照字符宽度CharWidth。在此可能参看文献的算法。该算法通过牌照字符度估计出牌照宽度Platewidth(对于普通车牌一般取10×CharWidth),同时根据牌照区图像的垂直边缘图在牌照字符处高度集中,而在其他地方相对分散的纹理特征和估计出的牌照宽度来自动搜索牌照字符区域所在的位置,即真正车牌区域边缘向下投影为最大。具体步骤可参看文献。
采用该方法对图7进行了牌照左右边界确定,结果如图8所示。白色矩形