发明名称 基于小波变换的复杂背景中的车牌提取方法
摘要 本发明提供的提供一种基于小波变换的复杂背景中的车牌提取方法,它是采用粗定位和精确定位相结合,在精确定位中采用小波分析的办法提取车牌区域内的高频信息,并在精确定位后进行亮度和颜色的归一化处理,最终得到了一个具有统一背景和号码颜色的包含有可识别号码的车牌。采用本发明的车牌提取方法,不仅可以尽量多的提取车牌区域的高频信息,从而准确定位车牌,使方法的环境适应度大大提高;而且结合粗定位和精定位的方法也提高了方法的计算速度,满足了实时性的需要。
申请公布号 CN100545858C 申请公布日期 2009.09.30
申请号 CN200610020796.2 申请日期 2006.04.26
申请人 电子科技大学 发明人 解梅;刘大良
分类号 G06K9/60(2006.01)I;G06T7/00(2006.01)I 主分类号 G06K9/60(2006.01)I
代理机构 代理人
主权项 1、一种基于小波变换的复杂背景中的车牌提取方法,它包含下列步骤:步骤1.将摄像装置安装于公路路口或者停车场的适当位置,在车辆进入摄像范围内后进行图像采集,得到含有车牌图像的原始图像;步骤2.对步骤1中所得到的原始图像进行灰度转换,得到一幅包含车牌的灰度图像;具体方法为采用公式f(i,j)=0.114*I(i,j,1)+0.587*I(i,j,2)+0.299*I(i,j,3)进行转换,其中i表示图像的行位置,j表示图像的列位置,f(i,j)表示转换后的灰度图像中第i行第j列的象素的灰度值,*是乘法运算符号,I(i,j,1),I(i,j,2)和I(i,j,3)分别表示彩色图像中第i行第j列的象素的R,G,B分量的值;步骤3.对步骤2中所得到的灰度图像进行灰度图拉伸,具体方法为采用公式<maths num="0001"><![CDATA[<math><mrow><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>tanh</mi><mrow><mo>(</mo><mfrac><mi>c</mi><mi>&sigma;</mi></mfrac><mi>x</mi><mo>)</mo></mrow></mrow></math>]]></maths>进行拉伸,其中x代表输入的灰度值,f(x)代表变换后的灰度值,tanh为双正切函数;σ表示灰度图像的均方差,c表示一个常数,此处取为2.4;灰度拉伸后得到一个灰度值均匀分布于0~255之间的灰度图像,该灰度拉伸后的图像矩阵记为A;步骤4.对步骤3中所得到的灰度拉伸后的灰度图像进行垂直梯度计算,得到一个包含有车牌的车辆灰度图像的垂直灰度梯度图;具体方法为采用公式g<sub>V</sub>(i,j)=|f(i,j+1)-f(i,j)|进行垂直梯度计算,其中i表示图像的行位置,j表示图像的列位置,f(i,j)表示第i行第j列的象素的灰度值,f(i,j+1)表示第i行第j+1列的象素的灰度值,g<sub>V</sub>(i,j)表示第i行第j列的的垂直梯度值;步骤5.对步骤4中所得到的垂直灰度梯度图进行梯度水平投影,得到一个粗糙的梯度水平投影曲线;梯度水平投影的计算公式为<maths num="0002"><![CDATA[<math><mrow><msub><mi>T</mi><mi>H</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>g</mi><mi>V</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>其中g<sub>V</sub>(i,j)表示第i行第j列的垂直梯度值,T<sub>H</sub>(i)为第i行的投影值;步骤6.对步骤5中所得到的粗糙的梯度水平投影曲线进行高斯滤波,得到一个平滑的梯度水平投影曲线;滤波方法为采用公式<maths num="0003"><![CDATA[<math><mrow><msubsup><mi>T</mi><mi>H</mi><mo>&prime;</mo></msubsup><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mi>k</mi></mfrac><mo>{</mo><msub><mi>T</mi><mi>H</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>w</mi></munderover><mo>[</mo><msub><mi>T</mi><mi>H</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>-</mo><mi>j</mi><mo>)</mo></mrow><mi>h</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>&sigma;</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>T</mi><mi>H</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>+</mo><mi>j</mi><mo>)</mo></mrow><mi>h</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>&sigma;</mi><mo>)</mo></mrow><mo>]</mo><mo>}</mo></mrow></math>]]></maths>进行滤波;其中T′<sub>H</sub>(i)是滤波后的梯度水平投影值,i的变化范围是从1到n,n代表图像的高度;w表示了平滑区域的宽度大小,此处取8;<maths num="0004"><![CDATA[<math><mrow><mi>h</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>&sigma;</mi><mo>)</mo></mrow><mo>=</mo><mi>exp</mi><mrow><mo>(</mo><mfrac><msup><mrow><mo>-</mo><mi>j</mi></mrow><mn>2</mn></msup><mrow><mn>2</mn><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mrow></math>]]></maths>是高斯函数,<maths num="0005"><![CDATA[<math><mrow><mi>k</mi><mo>=</mo><mn>2</mn><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>w</mi></munderover><mi>h</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>&sigma;</mi><mo>)</mo></mrow><mo>+</mo><mn>1</mn><mo>,</mo></mrow></math>]]></maths>σ表示灰度图像的均方差;T<sub>H</sub>(i)表示第i个梯度水平投影值,T<sub>H</sub>(i-j)表示第(i-j)个的梯度水平投影值,T<sub>H</sub>(i+j)表示第(i+j)个梯度水平投影值;步骤7.对步骤6中所得到的平滑的梯度水平投影曲线进行梯度水平投影曲线扫描,得到波峰大于一定值且波峰积分值满足一定值范围的波峰在平滑的梯度水平投影曲线中的位置坐标;具体方法为:从曲线的起点寻找波峰,找到波峰后计算该波峰积分值,同时记录下大于一定值的波峰值的位置和波峰积分值满足一定值范围的波峰的位置坐标,如此搜寻直到曲线的终点;步骤8.利用步骤7中所得到的波峰位置坐标进行车牌粗定位运算,得到一个或多个车牌候选区域在包含有车牌的车辆图像中的位置坐标;具体方法为:根据步骤7提供的曲线的波峰大于一定值且波峰积分值满足一定值范围的波峰的位置坐标来搜索和此述的波峰紧邻的左右两个波谷的位置坐标,左边波谷的位置坐标对应的是车牌在包含有车牌的车辆图像中的上边界的位置坐标,此处用top_boundary来表示车牌的上边界位置坐标,右边波谷的坐标对应的是车牌在包含有车牌的车辆图像中的下边界的位置坐标,此处用bot_boundary来表示车牌的下边界位置坐标;步骤9.利用步骤8中所得到的位置信息进行车牌粗切割处理,得到一个或多个车牌候选区域;具体方法为,首先,定义元素均为零的矩阵mask,mask的行数和列数分别与矩阵A的行数和列数一致;其次,把矩阵mask中位于第top_boundary行和bot_boundary行间的所有的列的元素全部置为1;然后,把矩阵mask和矩阵A中的具有相同坐标值的元素相乘,相乘后,矩阵A中非车牌候选区域内的元素均为零,车牌候选区域内的元素值保持不变;最后,定义元素均为零的矩阵I_cut,矩阵I_cut的行数为bot_boundary-top_boundary,列数和矩阵A的列数相等,把矩阵mask和矩阵A相乘的结果矩阵中的非零元素赋给I_cut,矩阵I_cut就表示车牌候选区域;步骤10.对步骤9中所得到的车牌候选区域进行小波分析,得到四个车牌候选区域的子图像LL、LH、HL和HH;其中LL表示小波分解结果中的低频子图像,LH表示小波分解结果中的在垂直方向的高频子图像,HL表示小波分解结果中的在水平方向的高频子图,HH表示小波分解结果中在对角线方向上的高频子图像;具体方法为,采用haar小波,利用Mallat快速小波分解算法对候选车牌区域进行小波分解;步骤11.对步骤10中所得到的后三个车牌候选区域的子图像LH、HL和HH进行垂直梯度计算,得到三个垂直梯度图像;步骤12.对步骤11中所得到的三个垂直梯度图像的灰度值进行归一化,具体方法为采用公式<maths num="0006"><![CDATA[<math><mrow><mi>n</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msup><mi>f</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>-</mo><mi>min</mi><mrow><mo>(</mo><msup><mi>f</mi><mo>&prime;</mo></msup><mo>)</mo></mrow></mrow><mrow><mi>max</mi><mrow><mo>(</mo><msup><mi>f</mi><mo>&prime;</mo></msup><mo>)</mo></mrow></mrow></mfrac><mo>*</mo><mn>255</mn></mrow></math>]]></maths>进行归一化,其中f′(i,j)表示归一化前的函数值,n(i,j)表示归一化后的函数值,min(f′)表示归一化前函数f′中的最小函数值,max(f′)表示归一化前函数f′中的最大函数值,乘以255表示把归一化前的函数值归一化到0到255之间,归一化处理后得到三个归一化的垂直梯度图像;步骤13.对步骤12中所得到的三个归一化的垂直梯度图像进行梯度对应相加运算,得到车牌候选区域的小波图像差分总和;具体方法为采用公式Dif_I(i,j)=|LH(i,j+1)-LH(i,j)|+|HL(i,j+1)-HL(i,j)|+|HH(i,j+1)-HH(i,j)|进行梯度对应相加运算,其中LH(i,j)表示LH子图的第i行第j列的归一化灰度值,LH(i,j+1)表示LH子图的第i行第j+1列的归一化灰度值,HL(i,j)表示HL子图的第i行第j列的归一化灰度值,HL(i,j+1)表示HL子图的第i行第j+1列的归一化灰度值,HH(i,j)表示HH子图的第i行第j列的归一化灰度值,HH(i,j+1)表示HH子图的第i行第j+1列的归一化灰度值,Dif_I(i,j)表示第i行第j列的车牌候选区域的小波图像差分总和;步骤14.利用步骤13中车牌候选区域的小波图像差分总和,进行车牌精确定位,得到车牌在车辆图像中的精确位置,即车牌的四个边界在矩阵A中的坐标值;具体方法为,从左往右,从上到下的寻找小波图像差分总和矩阵中元素值较大且这些较大的元素值形成一个较大的连通区域的区域,如果该连通区域的面积在一定值范围内,则认为所述的连通区域就是车牌,记录下该连通区域的上下左右四个边界的坐标值,这四个边界的坐标值就是车牌的四个边界在矩阵A中的坐标值,并记为top,bot,left和right,其中top表示车牌的上边界在矩阵A中的横坐标值,bot表示车牌的下边界在矩阵A中的横坐标值,left表示车牌的左边界在矩阵A中的纵坐标值,right表示车牌的右边界在矩阵A中的纵坐标值;步骤15.利用步骤14中所得到的车牌精确位置进行车牌精确切割,得到准确的包含有可识别号码的车牌图像;具体方法为,首先,定义元素均为1的矩阵A1,矩阵A1的总列数为(right-left),矩阵A1的总行数为(bot-top);其次把矩阵A1和车牌候选区域矩阵中的具有相同坐标值的元素对应相乘;然后,定义一个元素均为零的矩阵A0,其总列数为(right-left),其总行数为(bot-top);最后把矩阵A1和车牌候选区域矩阵相乘结果矩阵中的非零元素值赋给矩阵A0中,得到一个准确的包含有可识别号码的车牌图像矩阵A0;步骤16.对步骤15中所得到的准确的车牌图像进行车牌颜色归一化处理,得到一个包含有可识别号码的具有黑色背景和白色号码的车牌图像;具体方法为,首先,统计车牌区域内的白色像素数和黑色象素数;其次比较黑色象素数和白色像素数;然后,如果白色象素数为多数,则进行灰度翻转,如果黑色象素数为多数则不做任何处理;步骤17.对步骤16中所得到的包含有可识别号码的具有黑色背景和白色号码的车牌图像进行亮度增强,得到一个亮度增强了的包含有可识别号码的车牌图像;具体方法利用公式<maths num="0007"><![CDATA[<math><mrow><msup><mi>R</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow></mtd><mtd><mi>ifR</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>></mo><mi>thres</mi></mtd></mtr><mtr><mtd><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&times;</mo><mn>0.4</mn></mtd><mtd><mi>ifR</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&le;</mo><mi>thres</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>进行增强,其中R(i,j)表示包含有可识别号码的具有黑色背景和白色号码的车牌图像第i行第j列的灰度值,R′(i,j)表示变换后的第i行第j列的车牌的灰度值,thres是阀值,取包含有可识别号码的具有黑色背景和白色号码的车牌图像灰度值较大的20%个象素中的最小灰度值;通过以上步骤,就从原始含有车牌的图像中提取出了增强后的车牌图像。
地址 610054四川省成都市成华区建设北路2段4号电子科技大学科技处