发明名称 一种基于投影法和数学形态学的车牌提取方法
摘要 本发明提供的是一种基于投影法和数学形态学的复杂背景中的车牌提取方法,其特征是首先对原始图像进行灰度变换,把彩色图像变换为灰度图;其次计算灰度图的水平一阶差分并且根据水平一阶差分的水平投影进行车牌水平定位,从而提取出少数几个车牌水平位置候选区域;然后对候选区域进行数学形态学变换并对其进行二值化,再根据二值化的结果准确的定位出车牌的竖直位置;最后根据车牌的水平位置和竖直位置从原始图像中分割出车牌图像。与现有的车牌提取方法相比,本发明方法具有在照明不均匀环境下定位准确率高和识别率高的特点。
申请公布号 CN100414561C 申请公布日期 2008.08.27
申请号 CN200510021653.9 申请日期 2005.09.12
申请人 电子科技大学 发明人 马争;杨峰
分类号 G06K9/00(2006.01);G06K9/80(2006.01);G06K9/20(2006.01) 主分类号 G06K9/00(2006.01)
代理机构 代理人
主权项 1. 一种基于投影法和数学形态学的车牌定位方法,它包含下列步骤:步骤1.通过安装于公路路口或者停车场的适当位置的摄像装置,对进入摄像范围内的车辆进行图像采集,得到含有车牌图像的原始图像;步骤2.采用灰度变换公式对原始图像进行灰度转换,得到一幅包含车牌的灰度图像;灰度转换公为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.计算灰度图像的水平一阶差分,得到一个包含有车牌的车辆灰度图像的水平一阶差分图;具体方法为采用公式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列的水平一阶差分值;步骤4.对水平一阶差分图进行水平投影,得到一阶差分的水平投影曲线;一阶差分的水平投影的计算公式为<maths num="0001"><![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行的水平投影值,j的变化范围是从1到n,n代表图像的长度;步骤5.对步骤4中的一阶差分水平投影曲线进行高斯滤波,得到一个平滑的一阶差分水平投影曲线;在实际的算法中,采用离散高斯平滑算法对投影值进行平滑处理,具体算法如下<maths num="0002"><![CDATA[<math><mrow><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><mo>;</mo></mrow></math>]]></maths>其中T′<sub>H</sub>(i)是滤波后的一阶差分水平投影值;i的变化范围是从1到n;n代表图像的长度;w表示平滑区域的宽度大小,此处取8;<maths num="0003"><![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><mrow><mo>-</mo><msup><mi>j</mi><mn>2</mn></msup></mrow><mrow><mn>2</mn><msup><mi>&sigma;</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mrow></math>]]></maths>是高斯函数;<maths num="0004"><![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)个一阶差分水平投影值;其特征是它还包含下面的步骤:步骤6.对步骤5中所得到的平滑的一阶差分水平投影曲线进行一阶差分水平投影曲线扫描,通过对所有波峰值的比较,得到大于设定阈值的波峰值和大于设定阈值的波峰积分值在平滑的一阶差分水平投影曲线中的位置坐标;具体方法为:从曲线的起点寻找波峰,找到波峰后计算该波峰积分值,同时记录大于设定阈值的波峰值和大于设定阈值的波峰积分值的位置坐标,如此搜寻直到曲线的终点;波峰所覆盖的面积应满足大于1300象素点且小于10000象素点;步骤7.利用步骤6中所得到的波峰位置坐标进行车牌水平定位运算,得到一个或多个车牌水平位置候选区域在原始图像中的位置坐标;具体方法为:根据步骤6提供的曲线的大于设定阈值的波峰值和大于设定阈值的波峰积分值的位置坐标来搜索与该波峰紧邻的左右两个波谷的位置坐标,左边波谷的位置坐标对应的是车牌在原始图像中的上边界的位置坐标,此处用top来表示车牌的上边界位置坐标,右边波谷的坐标对应的是车牌在原始图像中的下边界的位置坐标,此处用bottom来表示车牌的下边界位置坐标;在搜索与满足条件的波峰紧邻的左右两个波谷时,波谷必须满足小于最大波峰值的一半;步骤8.计算灰度图像的竖直一阶差分,得到灰度图的竖直一阶差分图;具体方法为采用公式g<sub>H</sub>(i,j)=|f(i+1,j)-f(i,j)|;其中,i表示图像的行位置,j表示图像的列位置,f(i,j)表示第i行第j列的象素的灰度值,f(i+1,j)表示第i+1行第j列的象素的灰度值,g<sub>H</sub>(i,j)表示第i行第j列的象素的竖直一阶差分;步骤9.对竖直一阶差分图进行竖直投影,得到竖直一阶差分的竖直投影曲线;竖直一阶差分的竖直投影的计算公式为<maths num="0005"><![CDATA[<math><mrow><msub><mi>T</mi><mi>v</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msub><mi>g</mi><mi>H</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>其中,g<sub>H</sub>(i,j)表示第i行第j列的竖直一阶差分值,T<sub>V</sub>(j)为第j列的投影值,i的变化范围是从1到m,m代表图像的宽度;步骤10.对竖直一阶差分的竖直投影进行数学形态学变换;具体的数学形态学变换为闭运算:<maths num="0006"><![CDATA[<math><mrow><msub><mi>f</mi><mi>T</mi></msub><mo>=</mo><msub><mi>T</mi><mi>v</mi></msub><mo>&CenterDot;</mo><mi>B</mi><mo>=</mo><mrow><mo>(</mo><msub><mi>T</mi><mi>v</mi></msub><mo>&CirclePlus;</mo><mi>B</mi><mo>)</mo></mrow><mi>&Theta;B</mi><mo>,</mo></mrow></math>]]></maths>即先对竖直一阶差分的竖直投影进行膨胀运算,再对膨胀的结果进行腐蚀运算;其中,T<sub>v</sub>为竖直一阶差分的竖直投影;B为结构元素,其值为各个元素都是1的1*31矩阵;f<sub>T</sub>为经过闭运算后的竖直一阶差分的竖直投影;Θ为腐蚀运算符号;<img file="C2005100216530003C3.GIF" wi="36" he="37" />为膨胀运算符号;·为闭运算符号;步骤11.计算二值化的阀值;二值化阀值的计算公式为T=t*aver;其中,T为二值化的阀值;aver为经过数学形态学变换后的竖直一阶差分竖直投影的均值;*为乘法运算符号;步骤12.二值化经过数学形态学变换后的竖直一阶差分的竖直投影,得到竖直一阶差分的竖直投影曲线的二值化图;具体的二值化方法为:如果竖直一阶差分的竖直投影曲线上的值大于或等于二值化阀值,就把该处的值设置为1;如果竖直一阶差分的竖直投影曲线上的值小于二值化阀值,把该处的值设置为0;经过二值化,竖直一阶差分的竖直投影曲线转化为由一系列0和1组成的序列;由连续的1组成的序列表示一阶差分竖直投影值较大的区域;由连续的0组成的序列表示一阶差分竖直投影值较小的区域;0到1或者1到0的跳变表示两种区域的边界,分别把0到1和1到0的跳变位置记录到堆栈stack1和stack2中;步骤13.利用二值化图进行车牌竖直定位,确定车牌区域;在二值化图中,连续的1组成的序列是车牌可能出现的区域,stack1中的值为车牌区域的左边界left,stack2中的值为车牌区域的右边界right,plate_length=stack2-stack1的值为车牌区域的长度;根据车牌这些特性,剔除长宽比小于2.2和长宽比大于3.5的伪车牌候选区域,以及长度小于100象素的伪车牌候选区域,得到真正的车牌区域;步骤14.利用步骤7和步骤13得到的车牌区域的四个边界值,提取车牌区域;具体的车牌提取步骤如下:首先根据步骤7中得到的车牌上边界top和下边界bottom的值,计算出车牌的宽度plate_width=bottom-top;根据步骤13得到的车牌长度plate_length,定义一个大小为plate_width*plate_length的矩阵car_plate用来存储分割以后的车牌;最后,把原始图像中top行到bottom行、left列到right列的数值赋值给car_plate,此时,矩阵car_plate即为汽车车牌。
地址 610054四川省成都市成华区建设北路2段4号电子科技大学科技处