车牌识别LPR(六)-- 字符分割
更新日期:
第六篇:字符分割
在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割。一般最容易想到的方法就是根据车牌投影、像素统计特征对车牌图像进行字符分割的方法。是一种最常用的、最基本的、最简单的车牌字符分割方法。它的精髓是对车牌图像进行逐列扫描,统计车牌字符的每列像素点个数,并得到投影图,根据车牌字符像素统计特点(投影图中的波峰或者波谷),把车牌分割成单个独立的字符。
图像的边缘信息一般都是高频信息,所以在水平、垂直方向上对车牌图像进行小波变换,对其高频信息进行重构,获得相应的高频信息方面的子图,在车牌垂直投影图像中找到每个车牌字符的边界所在位置,并记下边界位置的横坐标;同理在水平投影图像中找到相应的边界的纵坐标,再根据相应的字符坐标值将字符分割出来。
一般在进行分割之前需要对车牌进行预处理:倾斜校正和去噪处理。
在进行分割之后需要统一字符大小,对其进行归一化和去边框处理。
(1)统一车牌底色:
对不同类型的车牌灰度图像进行二位化以后,有的呈现的是黑底白字,而有的则是白底黑字,为了便于对字符进行分割,需首先将不同种类车牌的二值化结果进行景颜色和目标颜色的统一,然后再用相关字符分割的方法对车牌屮的字符进行切分和提収。统一车牌底色可以有两种方法:
基于颜色分量的判断,但由于我国车牌种类太多,这个方法并不能完全区分,但是区分两种车牌类型还是可以的,例如蓝底白字车牌中的R小于B,而黄底黑字中的B大于R,在考虑到光照影响和使用已久褪色车牌上这种方法就不好了。
基于二值图像中像素比例特征的车牌底色判断:一般情况下,二值化后的车牌图像中字符笔画的像素个数在整个车牌的像素数目中所占的比例要小于50%。因此,可以通过分别计算二值化后的车牌中两种像素值的像素个数的大小来判断是否需要反色,若目标像素的比例大于50%,则将图像进行反色,否则不进行处理。这种方法的优点是算法简单,适用各种底色类型的车牌。缺点是若车牌中含有的字符的笔画较粗或者是车牌上存在较多污点或者是有装饰物等因素影响时,往往不能准确的判断底色。
(2)图像去噪
采集的图像总是会受到各种噪声的影响。为了保证后续处理的精确度,需要抑制图像中的噪声。对二值化后的车牌图像进行中值滤波处理,它是一种常见的非线性滤波方法,是一种局部平均的图像平滑技术,也是一种低通滤波。经典的中值滤波算法步骤如下:
1、令一个 3*3模板沿行或者列方向的移动;
2、每次移动后,对模板覆盖区域的像素灰度值进行排序;
3、用排序得到的中值代替模板内中心位置的原始图像像素灰度值。
通过以上步骤可以看出,中值滤波的主要功能就是让与周围像素灰度值的绝对差较大的像素改为与周围像素灰度值接近的灰度值,去除那些相对于其领域像素更亮或更暗的灰度。一般来说,小于中值滤波器模板面积一半的亮或暗区域会被滤掉,而较大的物体则会几乎原封不动的保留下来。
(3)倾斜校正
通常车牌区域的上下沿是两条明显的平行直线,一般都采用Hough 变换,检测出这两条直线的倾斜角,然后对车牌进行校正。然而传统的 Hough变换是对整幅图像的每个像素进行计算,以求出图像中可能存在的直线。
要想使用 Hough 变换计算车牌的倾斜角度,必须先确定进行 Hough 变换所需要的数据,即车牌的边缘点。如果图像包含完整的车牌,一般采用检测车牌的上下边框边缘点来作为 Hough 变换的数据,但由于实际得到的车牌不一定含有边框或者只有极少量的边框,所以最常用的是直接检测车牌每个字符上下边缘点作为Hough 变换的数据来源,但是由于实际中得到的车牌含有噪声、污损等原因,用这种方法会产生大量的干扰点,影响校正效果。
方法:对车牌图像在垂直方向进行投影并用高斯滤波器进行平滑,定位投影曲线中的所有波谷点,然后在相应的二值图中,查找所有波谷点之间最高的连通区域,得到的各个区域大部分就是车牌中的各个字符,最终选取各个连通域中即字符的最高和最低点作为 Hough 变换的检测点。对图像进行旋转时采用双线性插值。
(4)去边框
定位出来的车牌图像往往会包含车牌的部分或者全部边框,甚至还包含部分车身,为车牌字符分割带来了不利影响。因此就需要先对车牌图像进行去边框处理,其原理如下:采用水平投影得到上下边界。
(5)字符分割
采用一种基于相邻字符最大间隔宽度的方法来对车牌中的字符进行分割。由单行车牌的特点可以知道,在第二个字符和第三个字符之间存在一个圆形的间隔符,且该间隔符在每个单行车牌中有且仅有一个,还有一个重要的特点就是此间隔符所在的间隙约是其他相邻字符之间间隙的2.6倍,是整个车牌图像中相邻字符的最大间隙,根据这一先验知识首先确定了第二个字符右边缘和第三个字符左边缘的位置,然后由二值图像的垂直投影及单个字符的高宽比确定后5个和前2个字符的精确位置,因此,该方法的最为关键的部分是寻找图像中间隔符所在的空隙。
采用连通域和投影相结合的方法来对车牌图像进行字符分割,采用四连通标记法对车牌字符边界进行标记,形成连通域;然后判断各个区域的高宽是否基本等于车牌字符区域的高宽(去边框时已经求出),若相差较大时,就进行垂直投影,把宽小于车牌字符宽的相邻区域进行合并,把宽大于车牌字符宽的相邻区域进行进一步分割;最后对各个区域加矩形边框,提取单个车牌字符。
在理想的情况下,波谷的值应该为零,并且两个字符之间应该存在波谷,但是由于受到噪声的干扰,使得波谷的值为非零。常见的字符分割的问题有:字符粘连、字符断裂、数字“1”。字符粘连是指两个以上的字符连在一起,在垂直投影上的表现是原本应该为波谷的地方,现在却为非零的垂直投影值;字符断裂是一个字符分裂为几部分,在垂直投影上的表现为几段垂直投影;数字“1”的垂直投影值比较小,容易误判为噪声。可以结合车牌中字符的几何特征解决上述问题。设车牌中字符的宽度为 Width。
1)字符粘连
当 Width< charWdith < 1.5Width,其中 charWidth 为粘连字符的宽度。此时为两个字符粘连的情形。可取 charWidth / 2 作为单个字符的宽度,以此来分割两个粘连的字符;若 1.5Width< charWidth< 2*Width,此时为三个字符粘连的情况。通过单个字符具有固定的宽高比的先验知识,利用字符的高度求出字符的宽度。然后根据字符的宽度对粘连的字符进行分割。
2)字符断裂
若 charWidthi< 0.5Width 且 0.5Width > charWidthi+1。其中 charWidthi为当前字符的宽度,charWidthi+1为下一个字符的宽度。此时把当前字符和下一个字符合并。
3)数字“1”
当 charWidthi< 0.5Width 且 0.5Width < charWidthi+1时,统计区间宽度 charWidthi内的投影值大于 0.8*Height 的个数 nums,其中 Height 为车牌图像的高度。当符合条件 nums ≥ Thresh 时,其中 Thresh 为阈值,此时判定为数字“1”,否则为噪声。
采用的车牌字符分割方法;对车牌图像进行灰度化处理,去除颜色信息,使后面的字符分割算法运行速度更快;对灰度车牌图像进行二值化处理(otsu),并统一车牌图像的背景和字符的颜色;对有一定倾斜角度的车牌图像进行倾斜校正处理,对车牌图像进行去边框处理;采用连通域与投影法相结合的方法对车牌图像进行字符分割,为后面的单个字符识别做准备。