发明名称 一种基于图像处理的车辙检测方法
摘要 本发明公开了一种基于图像处理的车辙检测方法,该方法首先通过摄像头采集道路彩色车辙图像,然后把彩色图片转化成单通道的灰度图,用一阶偏导的有限差分来计算高斯平滑后灰度图每个像素点的梯度,然后计算出梯度的幅值和方向,保留局部梯度最大的点,抑制非极大值,使用3个阈值                                                <img file="902065dest_path_image001.GIF" wi="69" he="26" />法检验和连接边缘,用50*50的窗口处理边缘点,最终实现车辙检测;本发明快速高效,能准确地检测出大多数的车辙。
申请公布号 CN103778634B 申请公布日期 2016.06.22
申请号 CN201410026421.1 申请日期 2014.01.21
申请人 中科怡海高新技术发展江苏股份公司;无锡中科智远科技有限公司;浙江成功软件开发有限公司 发明人 陆涛;张子健;陆波;梁思源;周丁;王元平
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 周烽
主权项 一种基于图像处理的车辙检测方法,其特征在于,包括如下步骤:步骤1:通过摄像头采集道路彩色车辙图像;步骤2:把彩色图片转化成单通道的灰度图:用A[m,n]表示m行n列的矩阵A,A(y,x)表示在矩阵A中第y行第x列的值;一般的RGB图的转化公式为:g=0.3×r+0.59×g+0.11×b用GI[m,n]保存灰度值,其中m是图像的高度,n是宽度;用GI(i,j)表示像素点(j,i)的灰度值;用SI[m,n]保存平滑后图像的灰度值;SI[m,n]的计算方法是:<maths num="0001"><math><![CDATA[<mfenced open = '' close = ''><mtable><mtr><mtd><mrow><mi>S</mi><mi>I</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mi>max</mi><mrow><mo>(</mo><mn>0</mn><mo>,</mo><mi>x</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mi>min</mi><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>x</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow></msubsup><msubsup><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mi>max</mi><mrow><mo>(</mo><mn>0</mn><mo>,</mo><mi>y</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mi>min</mi><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow></msubsup><mi>G</mi><mi>I</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>*</mo><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><mo>|</mo><mo>|</mo><mrow><mo>(</mo><mi>y</mi><mo>-</mo><mi>x</mi><mo>)</mo></mrow><mo>-</mo><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>|</mo><msup><mo>|</mo><mn>2</mn></msup></mrow><mrow><mn>2</mn><msup><mi>&delta;</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow><mo>/</mo></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mi>max</mi><mrow><mo>(</mo><mn>0</mn><mo>,</mo><mi>x</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mi>min</mi><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>x</mi><mo>+</mo><mn>3</mn><mo>)</mo></mrow></mrow></msubsup><msubsup><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mi>max</mi><mrow><mo>(</mo><mn>0</mn><mo>,</mo><mi>y</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow><mrow><mi>min</mi><mrow><mo>(</mo><mi>m</mi><mo>-</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow></msubsup><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><mo>|</mo><mo>|</mo><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow><mo>-</mo><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>|</mo><msup><mo>|</mo><mn>2</mn></msup></mrow><mrow><mn>2</mn><msup><mi>&delta;</mi><mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000943161070000011.GIF" wi="1542" he="325" /></maths>步骤3:用一阶偏导的有限差分来计算高斯平滑后灰度图每个像素点的梯度,然后计算出梯度的幅值和方向:用Gx[m,n]表示梯度在水平方向的值,用Gy[m,n]表示梯度在垂直方向的值,用G[m,n]表示梯度的幅值,用θ[m,n]表示梯度的方向;各自的计算方法是:Gx(y,x)=SI(y,x+1)‑SI(y,x‑1)Gy(y,x)=SI(y+1,x)‑SI(y‑1,x)<maths num="0002"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msqrt><mrow><mi>G</mi><mi>x</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow><mo>*</mo><mi>G</mi><mi>x</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow><mo>+</mo><mi>G</mi><mi>y</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow><mo>*</mo><mi>G</mi><mi>y</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mrow></msqrt></mrow>]]></math><img file="FDA0000943161070000012.GIF" wi="1134" he="85" /></maths><maths num="0003"><math><![CDATA[<mrow><mi>&theta;</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msup><mi>tan</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mfrac><mrow><mi>G</mi><mi>y</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mrow><mrow><mi>G</mi><mi>x</mi><mrow><mo>(</mo><mi>y</mi><mo>,</mo><mi>x</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000943161070000013.GIF" wi="540" he="135" /></maths>步骤4:保留局部梯度最大的点,抑制非极大值:图像上每一个象素点M(mx,my)与沿着梯度线的两个象素相比,如果像素点M的梯度值不比沿梯度线的两个相邻象素梯度值大,则令G[my][mx]=0;否则保持像素点梯度幅值不变;步骤5:使用3个阈值法检验和连接边缘,3个阈值分别记为T<sub>1</sub>、T<sub>2</sub>、T<sub>3</sub>,且T<sub>1</sub>&lt;T<sub>2</sub>&lt;T<sub>3</sub>:通过3个阈值得到两个阈值边缘图像N1,N2;图像N1中任意的像素点P(px,py),都有T<sub>1</sub>≤G(py,px)≤T<sub>3</sub>;图像N2中任意的像素点P(px,py),都有T<sub>2</sub>≤G(py,px)≤T<sub>3</sub>;在图像N2中把边缘连接成轮廓,当到达轮廓的端点时,就在图像N1的8邻点位置寻找可以连接到轮廓上的边缘,这样,不断在N1中收集边缘,直到将N2中所有的边缘点连接起来为止;用E[m,n]记录边缘,E(i,j)=1表示像素点(j,i)是边缘,E(i,j)=0表示像素点(j,i)不是边缘;步骤6:用50*50的窗口处理边缘点;窗口内边缘点的个数是n,设定边缘点个数阈值nT,把窗口分为三种情况;第一种情况:n&lt;nT时,此窗口不处理,窗口内的边缘点为自由边缘点;第二种情况:n≥nT时,并且可以用不多于两条直线进行拟合,这个窗口为好区;直线与窗口交两点——上顶点M(mx,my)、下顶点N(nx,ny),其中ny&gt;my或者ny=my,nx&gt;mx;令E(my,mx)=2,E(ny,nx)=3,并记录直线的方向θ,D(my,mx)=D(ny,nx)=θ;点m、n中间的点p(px,py),令E(py,px)=4;不在直线上的点p(px,py),令E(py,px)=0;第三种情况:n≥nT时,并且无法用两条直线拟合,称这个窗口为噪音区,任意的在这个窗口的像素点p(px,py),令E(py,px)=0;拟合的方法:用Hough变换找到过最多边缘点的第一条直线,如果只有少量的边缘点不在直线,为第二种情况;否则用Hough变换找到第二条直线过最多剩余的边缘点,若只有少量的边缘不在直线上,为第二种情况,否则属于第三种情况;经过此步骤后,E(y,x)=0,表示像素点(x,y)为非边缘,E(y,x)=1,表示像素点(x,y)为自由边缘,E(y,x)=2,表示像素点(x,y)为上顶点,E(y,x)=3,表示像素点(x,y)为下顶点,E(y,x)=4,表示像素点(x,y)为拟合的直线中间点;步骤7:连接边缘点,形成最终的车辙:从上往下,从左往右的顺序遍历E[m,n],找到未处理的顶点p(px,py),既E(py,px)=2或3,若为上顶点,沿着方向D(py,px)向上寻找可连接的边缘点;若为下顶点,沿着方向D(py,px)向下寻找可连接的边缘点;首先令E(py,px)=4,标记顶点P已处理;寻找可连接的边缘点分如下几种情形,定义连接的距离阈值nT<sub>1</sub>,方向差上的阈值nT<sub>2</sub>:情形1,找到顶点M(mx,my),即E(my,mx)=2或3;若||PM||≤nT<sub>1</sub>且||D(py,px)‑D(my,mx)||≤nT<sub>2</sub>,用直线连接PM,中间的点C(cx,cy),令E(cy,cx)=5;终止该方向的查找;情形2,找到自由边缘点M(mx,my),即E(my,mx)=1,||PM||≤nT<sub>1</sub>,用直线连接PM,中间的点C(cx,cy),令E(cy,cx)=5;把M的值赋给P,继续该方向的查找;情形3,其他情况都终止该方向的查找;其他情况包括1,到达图像的边界;2,||PM||&gt;nT<sub>1</sub>等;直到所有的顶点处理完,即E中不存在2或3;E(y,x)=4或5表示像素点(x,y)是位于车辙上的点,这些点的集合即是找到的车辙。
地址 214024 江苏省无锡市南长区南湖大道501号创智园A栋