车牌定位方法
1.预处理
由于光线不足或者反光等诸多因素,有可能造成车牌对比度较差,对接下来的纹理分析产生影响,所以有必要进行图象增强。图象拉伸是增加图象对比度的一个好方法,但简单的图象拉伸有可能造成拉伸过度,损失了车牌区域的细节。
本文提出的方法是根据原图象对比度采用自适应拉伸的方法,经实验证明能有效增强图象对比度,提高了车牌定位准确率。
灰度拉伸公式如下:
p1和p2根据动态范围p做自适应调整。我们使用的参数是:p>0.8时,p1=p2=0.2;p>0.5时,p1=p2=0.15;其余p1=p2=0;在实验中收到了良好的效果。图1是原图象,图2是用本文的自适应拉伸法处理后的图象,可以看到图2的对比度增强了,牌照字符的边缘更加清晰,有利于后面的定位处理。
2.车牌定位
当我们从远处观察车辆时,判别牌照区域的主要依据是车牌的颜、亮度和车牌字符的边缘形成的纹理。所以,充分利用这些信息就成了定位车牌的关键。
2.1粗定位
牌照区域区别于其他区域的地方就在于牌照上有字符,这一特征体现在图象的灰度上就是其水平投影具有较好的连续性,不会有大的起伏,体现在纹理信息上就是其垂直边缘的间距较有规律。本文的车牌定位方法就是基于这两个特征的结合进行的,从而更有效地排除干扰区域,更快速地进行车牌的定位。
1)水平定位汽车牌照颜
首先,我们要出车牌所在的水平位置。虽然车牌区域内水平方向有着较大的灰度变化,但由于字符在竖直方向上的灰度有着较好的连续性,在车牌范围内的水平灰度投影不会有很大的起伏,而在车牌之外的上下区域由于车身或背景的关系投影值则明显不同。
同时车牌区域除了在水平方向应有的灰度连续性,还应该具有一定灰度变化频度。为了统计灰度变化频度,经试验比较,在我们的算法中采用简单快速的水平梯度算子[-11]。通过二值化水平梯度图提取具有最大梯度的边缘,同时去除了大多数噪声的干扰。因为成像模糊等原因使提取的有些边缘宽度大1,我们对边缘图象再一次做水平差分计算。经运算后边缘图象轮廓清晰,子图象区域完全凸现出来,而车体上其他部分和背景中的轮廓线特征往往并不突出。
由于搜索整幅位图,速度非常慢,为了缩小搜索范围,加快定位速度,算法采用如下方法:
(1)每间隔10行扫描一行,记下变化频度最大的行号i
(2)从中选出最大的10行,R{row(i)|i=0,1,…,9}。记row(i)的灰度投影值为pro(row(i)),记投影变化的下门限为th_low,上门限为th_high,记水平方向灰度变化频度的门限是th_edge。
(3)对R中每一个row(i)向上或向下扫描灰度投影,以{th_low某pro(row(i)),th_high某pro(row(i))}向上和向下做区域增长,同时考虑变化频度是否满足要求。实际由于各种原因,有时不是车牌范围内的每一行都满足灰度投影连续性和变化频度的要求,所以我们允许对不满足要求的连续的行数和总行数有一定的冗余。
(4)对得到的高度区域进行筛选,去掉高度不合格的区域。筛选到的区域送到下一步确定左右边界。
在实验中,一般只有1--3个有效的候选区域,减少搜索量为原来的1/2以上,但准确率却提高了50%以上,收到了很好的实效。投影和变化频度在搜索中有效的结合不仅提高了水平定位的准确性,而且使得算法对区域增长的阈值不敏感,提高了系统的鲁棒性。
图3中的水平长直线是用此方法得到的车牌候选区的水平位置,这三个水平位置正是图象中包含字符串的类车牌区的所在。经实验证明,此方法对确定车牌的水平位置十分有效,在我们所试验的200多张图象中,全部到了车牌所在的水平位置。
2)垂直定位
接着,我们对经水平定位得到的每个区域分别进行垂直定位。我们发现,不是所有的车牌都有边框,并且当车牌底和车身颜相近时车牌的边界也不存在了。所以,如果车牌有边框或边界,可以以此来定位;如果没有,可以对最左边和最右边的字符的边缘定位。为了提高边缘的抗干扰能力,我们采用动态阈值的Canny算子,上阈值用式(7)计算,下阈值为上阈值的
0.7倍。由于搜索Canny边缘是在水平定位子图像上进行,所以速度很快,不影响整个系统的实时性。从图4可以看到用此方法提取的边缘什分清晰准确。
式(7)中c(i)为水平定位子图像的灰度累积直方图。
那么怎么得到车牌的左右边界呢进一步分析车牌纹理特征,除了在水平方向有一定的边缘外,这些边缘还应该是集中地分布在一定范围内,间隔较有规律。因此,方法如下:
扫描每个水平定位子图像的每一行l(i,j),(i=1……q,j=1……h(i))。q为子图像数,h(i)为第i个子图像的高度。设子图像i的扫描起始列为c。
(1)从行l(i,j)的扫描起始列c开始扫描,将c后的第一个边缘点记为这一行的起始点,即第一个有效点。
(2)如果下一个边缘点和上一个有效点的距离小于1.3某h(i),则这一点为有效点,否则为无效点。如果一行的连续无效点和无效点总数大于冗余阈值,这一行为无效行,继续下一行扫描。如果一行的有效点数大于灰度变化频度th_edge,这一行为有效行,并将最后一个有效点暂时作为行结束点。
(3)如果行结束点后仍有有效点,则行结束点为依次为最后一个有效点。
(4)如果一个水平子图像没有有效行,则这个子图像为无效区域;否则为有效区域,记录有效行的起始点和结束点来计算车牌的左右边界。计算方法在后面介绍。
(5)如果有效区域的右边界小于图象宽度,则可能还有其他有效区域,记c=右边界+1,返回(1)继续扫描。
得到了一个区域的若干行的起始点和结束点,接下来判定这个有效区域的左右边界。如果将此看作一个直线拟和问题,可以采用最小平方误差法:
式(8)中t为待估计的左边界或右边界,某i为起始点或结束点。这个方法的优点是计算简单,但如果有几个噪声点干扰的话,拟和结果明显变差,定位不准确。为了解决这个问题,我们采用以下的方程:
式(9)与式(8)不同,其值越大则拟和的位置越正确。这个方程的最重要的特点是:一个点离拟和的位置越远,它对方程所做的贡献越小,因此少数的噪声点不会影响拟和的结果,具有很好的抗噪声能力。所以,定位左右边界的过程就是一个在小范围内拟和最大值的过程。
发布评论