发明名称 一种基于复杂背景下的车牌自动定位和识别方法
摘要 本发明涉及一种基于复杂背景下的车牌自动定位和识别方法,采集的图像可以由交警或者管理人员应用数码相机在各种工作条件下随时拍摄汽车图片而并非固定在某个位置或者路口进行采集,针对这些随机情况实现车牌的自动定位和识别。该方法按以下步骤进行:采集车牌图像;对彩色图像进行转换;获取车牌图像边缘信息;获取候选车牌区域图像;精确定位出车牌字符区域;对字符进行单字符分割;最后,使用BP神经网络实现车牌字符的识别。本发明可有效的提取出复杂背景下的车牌图像,具有准确度高等优点。
申请公布号 CN102708356A 申请公布日期 2012.10.03
申请号 CN201210062174.1 申请日期 2012.03.09
申请人 沈阳工业大学 发明人 石佳;张志佳
分类号 G06K9/00(2006.01)I;G06K9/54(2006.01)I;G06N3/02(2006.01)I;G08G1/017(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 沈阳智龙专利事务所(普通合伙) 21115 代理人 宋铁军
主权项 1.一种基于复杂背景下的车牌自动定位和识别方法,其特征在于:图像采集是由交警或者管理人员在随机的情况下拍摄的汽车图片,采集的方式不是固定在某个位置或者路口,而是随走随拍的方式,这种采集方式具有随机性,针对这些复杂背景下采集的汽车图片进行车牌定位、字符分割和识别,该方法步骤如下:(1)对车牌进行定位:将数码相机随机采集的车牌图像输入到计算机中,对车牌图像进行处理,包括汽车图像的倾斜校正、车体区域图像的灰度化、边缘检测、阈值分割、形态学运算,得到若干的连通区域,根据投影法搜索车牌区域,得到候选车牌区域图像,具体步骤如下:1)由于采集到的图像可能出现偏转,需要对这部分的图像采用Radon变换对倾斜的车牌图像进行校正,先计算倾角,然后对倾斜图像利用坐标变换公式进行校正,如公式(1)和(2)所示;为了进行对牌照图像的旋转,首先选定旋转中心,以车牌照图像几何中心位置作为旋转中心来进行旋转;取角度从0到179度,每次增加1度,对汽车的二值图像作Radon变换;在所有R<sub>θ</sub>(x′)结果中取最大值;找到与该最大值对应的角度θ;由于θ与图像的倾斜方向垂直,取逆时针为正方向,得出图像的倾斜角度为θ-90°;<maths num="0001"><![CDATA[<math><mrow><msub><mi>R</mi><mi>&theta;</mi></msub><mrow><mo>(</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mo>)</mo></mrow><mo>=</mo><msubsup><mo>&Integral;</mo><mrow><mo>-</mo><mo>&infin;</mo></mrow><mo>&infin;</mo></msubsup><mi>f</mi><mrow><mo>(</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mi>cos</mi><mi>&theta;</mi><mo>-</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mi>sin</mi><mi>&theta;</mi><mo>,</mo><msup><mi>x</mi><mo>&prime;</mo></msup><mi>sin</mi><mi>&theta;</mi><mo>+</mo><msup><mi>y</mi><mo>&prime;</mo></msup><mi>cos</mi><mi>&theta;</mi><mo>)</mo></mrow><msup><mi>dy</mi><mo>&prime;</mo></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msup><mi>x</mi><mo>&prime;</mo></msup><mo>=</mo><mi>x</mi><mi>cos</mi><mo>+</mo><mi>y</mi><mi>sin</mi><mi>&theta;</mi></mtd></mtr><mtr><mtd><msup><mi>y</mi><mo>&prime;</mo></msup><mo>=</mo><mo>-</mo><mi>x</mi><mi>sin</mi><mi>&theta;</mi><mo>+</mo><mi>y</mi><mi>cos</mi><mi>&theta;</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>2)利用公式gray=0.299R+0.587G+0.114B对车牌图像进行灰度计算;3)为找到车牌区域,首先要加强车牌区域的边缘梯度信息,利用改进累积绝对差分算法对车牌图像的灰度信息进行垂直边缘检测,对于点(i,j)对应的灰度值为f(i,j),则该点相邻的上、中、下方向上像素点表示为(i,j-1)、(i,j)、(i,j+1)所对应的灰度值为f(i,j-1)、f(i,j)、f(i,j+1),对应算法为公式(3):E(i,j)=|f(i,j+1)-f(i,j)-(f(i,j)    (3);-f(i,j-1))-(f(i,j+1)-f(i,j-1))|4)得到了灰度图像的垂直边缘点,再利用归一化公式(4),将边缘灰度信息归一化:E(i,j)=(255/(max(i,j)-min(i,j))    (4)*(E(i,j)-mm(i,j)))式中,max(i,j)为E(i,j)中的最大灰度级,min(i,j)是最小灰度级;5)对归一化后的边缘图像求出边缘像素密度作为初始阈值T公式(5),然后利用公式(6)进行形态学闭运算,针对边缘图像数学形态学处理后的二值图像求阈值Average如公式(7),分割的阈值利用Average对初始阈值进行修正T-Average,由于大量实验表明车牌的边缘密度占整个图像的3%左右,因此利用公式(5)~(7)循环判断T-Average的值,当T-Average=0.03左右,循环停止,这样找到的阈值更具有通用性,可针对多种复杂情况的图片实现阈值分割;<maths num="0003"><![CDATA[<math><mrow><mi>T</mi><mo>=</mo><mi>&alpha;</mi><mo>*</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>max</mi><mo>[</mo><mi>E</mi><mrow><mo>(</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo><mi>E</mi><mrow><mo>(</mo><mn>2</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo><mi>E</mi><mrow><mo>(</mo><mn>3</mn><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>E</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>]</mo></mrow><mi>n</mi></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>式中,m、n是图像的行、列数,α是系数,根据汽车车牌区域的垂直边缘信息和背景信息的区别α通常取0.5,<maths num="0004"><![CDATA[<math><mrow><mi>A</mi><mo>&CenterDot;</mo><mi>B</mi><mo>=</mo><mrow><mo>(</mo><mi>A&Theta;B</mi><mo>)</mo></mrow><mo>&CirclePlus;</mo><mi>B</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><mi>Average</mi><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>y</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><mi>m</mi><mo>*</mo><mi>n</mi></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>式中,f(x,y)为对边缘图像进行形态学处理后的像素点(x,y)对应的值,得到的Average可以看成是边缘像素密度;6)结合车牌字符的纹理特征对车牌区域进行定位,通过水平和垂直搜索黑白像素跳变的规律来判断真实的车牌区域,具体为:得到预处理后的图像对其进行自下而上和自左而右的扫描,判断扫描线与候选区域的交点个数,从而得到候选车牌区域;(2)对步骤(1)获取的车牌图像进行处理,包括灰度化、二值化,然后对处理后的二值图像进行单个字符分割,具体步骤为:1)按照步骤(1.2)对得到的彩色车牌区域进行灰度化;2)利用Otsu方法对牌照区域的灰度图像进行阈值分割,如公式(8)和公式(9)求出<img file="FDA0000141863900000031.GIF" wi="52" he="56" />和<img file="FDA0000141863900000032.GIF" wi="53" he="56" />取比值得到分割阈值,<maths num="0006"><![CDATA[<math><mrow><msubsup><mi>&sigma;</mi><mi>B</mi><mn>2</mn></msubsup><mo>=</mo><msub><mi>&omega;</mi><mn>1</mn></msub><msup><mrow><mo>(</mo><msub><mi>&mu;</mi><mn>1</mn></msub><mo>-</mo><mover><mi>&mu;</mi><mo>&OverBar;</mo></mover><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msub><mi>&omega;</mi><mn>2</mn></msub><msup><mrow><mo>(</mo><msub><mi>&mu;</mi><mn>2</mn></msub><mo>-</mo><mover><mi>&mu;</mi><mo>&OverBar;</mo></mover><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0007"><![CDATA[<math><mrow><msubsup><mi>&sigma;</mi><mi>A</mi><mn>2</mn></msubsup><mo>=</mo><msub><mi>&omega;</mi><mn>1</mn></msub><msubsup><mi>&sigma;</mi><mn>1</mn><mn>2</mn></msubsup><mo>+</mo><msub><mi>&omega;</mi><mn>2</mn></msub><msubsup><mi>&sigma;</mi><mn>2</mn><mn>2</mn></msubsup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths>3)采用基于垂直投影的车牌字符分割,对于车牌二值图像f(i,j)大小为M*N,定义f(i,j)在j行上的垂直投影函数为式(10)所示,<maths num="0008"><![CDATA[<math><mrow><mi>h</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mi>j</mi><mi>M</mi></munderover><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>j=1,2,3…N    (10),由于字符之间存在间隔,那么垂直投影就会在间隔处存在波谷,可以利用这一信息对字符进行单个字符分割,但需要注意的是,对于一些模糊或者划痕过于严重的车牌,在预处理后会出现字符之间粘连的现象,这样会造成字符被错误分开,此时就需要用车牌字符宽度与总宽度比为10.2%这一先验知识设定阈值T<sub>1</sub>和T<sub>2</sub>,进行分割,其中W是图片的总宽度,<maths num="0009"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>T</mi><mn>1</mn></msub><mo>=</mo><mn>70</mn><mo>%</mo><mo>&times;</mo><mi>W</mi><mo>&times;</mo><mn>10.2</mn><mo>%</mo></mtd></mtr><mtr><mtd><msub><mi>T</mi><mn>2</mn></msub><mo>=</mo><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mn>30</mn><mo>%</mo><mo>)</mo></mrow><mo>&times;</mo><mi>W</mi><mo>&times;</mo><mn>10.2</mn><mo>%</mo></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>11</mn><mo>)</mo></mrow></mrow></math>]]></maths>因为二三字符间距是整个间隙中最大最明显的,所以以此为参考点,利用该零值的边界就可以找到第二个字符的右边界和第三个字符的左边界;接着分别向左和右扫描字符,如果扫描到的字符垂直投影宽度小于阈值T<sub>1</sub>需要合并字符,如果大于阈值T<sub>2</sub>(T<sub>1</sub><T<sub>2</sub>),则还需要进一步分割,若在这两个值之间,就不需要处理;确定需要合并的话,则继续判断该字符的左右两边字符宽度,如果左边字符宽度小于T<sub>1</sub>,则该字符与左边字符合并,如果右边字符宽度小于T<sub>1</sub>,则该字符与右边字符合并;确定需要继续分割的话,那么就是要将两边的一个字符中的部分笔画误当成了该字符,在左右两边就会需要合并,找到小于T<sub>1</sub>部分并合并,再取合并的字符重点作为分割的边界,这样会有效的避免铆钉、边框和非字符图像的影响;(3)利用BP神经网络实现车牌字符的识别:BP网络3个层的神经元数目的确定是BP网络设计的关键:1)输入层个数:BP网络的输入层的节点个数,即为归一化图像所输出的特征的维数,用8*16归一化特征提取采用的是逐像素特征提取法,这样,对于每一个输入样本,就有8*16个特征,所以输入层的结点个数为1280;2)隐层结点个数:对于隐层的结点个数,OCR系统的神经网络的隐层个数一般在8~30个结点之间;根据测试结果不断改变结点数目可以在上述范围内确定较好的隐层结点个数;3)输出层结点个数:对于输出层结点个数的确定,取决于如何设定标准输出;神经网络一般都有一个激励函数,激励函数将输出信号压缩为一个允许的范围内,使其成为有限值,通常神经元输出的范围在(0,1)或者(-1,1)的闭区间上,常用的为Sigmoid函数,Sigmoid函数定义如公式(12):<maths num="0010"><![CDATA[<math><mrow><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>12</mn><mo>)</mo></mrow><mo>.</mo></mrow></math>]]></maths>
地址 110870 辽宁省沈阳市经济技术开发区沈辽西路111号