一种结构光条纹中心快速高精度提取方法

文档序号:6650790阅读:287来源:国知局
专利名称:一种结构光条纹中心快速高精度提取方法
技术领域
本发明属于测量技术,涉及对结构光条纹中心提取方法的改进。
背景技术
在基于三角法测量原理的主动视觉系统中,结构光条纹由于被测物体表面的深度变化而受到调制,反映到图像中则发生了畸变,其畸变的程度包含了激光器、CCD摄像机之间的相对位置信息以及被测物体表面的深度信息。要想获得这些信息,必须首先从含有光条的图像中获取光条纹中心的准确位置。因此,在结构光视觉检测中,一个非常重要的图像处理任务就是获取结构光条纹中心的准确位置信息。常见的光条纹中心线提取方法有灰度阈值法、极值法、梯度阈值法等(见于起峰,陆宏伟,刘肖琳,《基于图像的精密测量与运动测量)》,北京科学出版社,2002.)。这些方法实现简单,但精度不高。贺俊吉(见贺俊吉,张广军,“结构光三维视觉检测中光条图像处理方法研究”,北京航空航天大学学报.2003,29(7)593-597.)等在光条截面上进行高斯或抛物线拟合,再通过求其极值点来得到光条纹中心的亚像素位置,该方法只适合于图像中法线方向变化不大的直线光条纹。胡斌(胡斌,李德华,金刚,胡汉平,“基于方向模板的结构光条纹中心检测方法”,计算机工程与应用,2002,1159-60.)等提出了基于方向模板的结构光条纹中心检测方法,使用多个方向模板来检测法线方向变化较大的光条纹中心的亚像素位置,该方法抗噪声能力强,具有一定的断线修补能力,但计算比较复杂。图像中的光条可以理解为曲线结构或有一定宽度的线条。Steger(STEGER C,“An Unbiased Detector of Curvilinear Structures”,IEEE Transactions on Pattern Analysis and machine Intelligence.1998,20(2)113-125.)利用Hessian矩阵得到图像中光条纹的法线方向,然后求法线方向上的极值点得到光条纹中心线的亚像素位置。Steger方法具有精度高,鲁棒性好等优点,广泛应用到文字识别,航拍图像或卫星图像中的道路识别,医学图像中血管、骨骼的提取等领域。该算法的主要缺点是运算量大,很难实现结构光条纹中心线的快速提取,难以满足实时性要求较高的应用场合。

发明内容
本发明的目的是提出一种结构光条纹中心快速提取方法,进一步提高机器视觉检测应用的实时性要求。
本发明的技术方案是一种结构光条纹中心快速提取方法,其特征在于,1、将图像z(x,y)与微分形式的高斯核卷积,分别得到rx,ry,rxx,rxy,ryy,如式[1];rx=(∂g(x,y)/∂x)⊗z(x,y)ry=(∂g(x,y)/∂y)⊗z(x,y)rxx=(∂2g(x,y)/∂x2)⊗z(x,y)ryy=(∂2g(x,y)/∂y2)⊗z(x,y)rxy=(∂2g(x,y)/∂x∂y)⊗z(x,y)---[1]]]>1.1、利用高斯函数的可分离性,将对图像的二维卷积转化为一维卷积;对图像z(x,y)的二维高斯卷积等效为一次高斯行卷积和一次高斯列卷积,对于一个大小为n×n的二维高斯模板,式[1]所示的二维卷积的运算量为5n2次乘加,而一维卷积的运算量为10n次乘加,因此,将式[1]所示的二维卷积转化为式[2]所示的两次一维卷积;rx=g(y)⊗((dg(x)/dx)⊗z(x,y))ry=(dg(y)/dy)⊗(g(x)⊗z(x,y))rxx=g(y)⊗((d2g(x)/dx2)⊗z(x,y))ryy=(d2g(y)/dy2)⊗(g(x)⊗z(x,y))rxy(dg(y)/dy)⊗((dg(x)/dx)⊗z(x,y))---[2]]]>1.2、利用递归方法实现高斯一维卷积,减少运算过程中的冗余计算量,递归实现的过程分为前向递归和后向递归两个部分,后向递归的输入为前向递归的结果;假设输入图像的某一行或某一列为I(n),图像的高斯卷积、一阶微分和二阶微分的高斯卷积的前向递归输出分别为T(n),T′(n)和T″(n),后向递归输出分别为O(n),O′(n)和O″(n),则有T(n)=BI(n)+Σi=13ciT(n-i)O(n)=BT(n)+Σi=13ciO(n+i)T′(n)=B(I(n+1)-I(n-1))/2+Σi=13ciT′(n-i)O′(n)=BT′(n)+Σi=13ciO′(n+i)T′′(n)=B(I(n)-I(n-1))+Σi=13ciT′′(n-i)O′′(n)=B(T′′(n+1)-T′′(n))+Σi=13ciO′′(n+i)---[3]]]>式中的系数c1,c2,c3,B为q=0.98711σ-0.96330,σ>2.53.97156-4.145541-0.26891σ,0.5≤σ≤2.5]]>c0=1.57825+2.44413q+1.4281q2+0.422205q3c1=(2.44413q+2.85619q2+1.26661q3)/c0c2=-(1.4281q2+1.26661q3)/c0c3=0.422205q3/c0B=1-(c1+c2+c3);2、求解Hessian矩阵的特征值和特征向量,得到线条的法线方向(nx,ny);Hessian矩阵的表达式H(x,y)如式[4]所示,法线方向(nx,ny)由图像z(x,y)的Hessian矩阵最大特征值绝对值所对应的特征向量给出;H(x,y)=∂2g(x,y)∂x2∂2g(x,y)∂x∂y∂2g(x,y)∂x∂y∂2g(x,y)∂y2⊗z(x,y)---[4]]]>=rxxrxyrxyryy]]>3、根据泰勒展开求解光条纹中心的亚像素坐标;假设根据Hessian矩阵所求得的光条法线方向的单位向量为(nx,ny),以当前点(x0,y0)为基点,对结构光条纹横截面上的灰度分布函数进行二阶泰勒展开,则条纹横截面上的点(x0+tnx,y0+tny)的灰度可以表示为z(x0+tnx,y0+tny)=Z(x0,y0)+N(rxry)T+NH(x,y)NT/2其中N=(tnxtny),由_Z/_t=0,可以得到t=-nxrx+nyrynx2rxx+2nxnyrxy+ny2ryy]]>则光条中心点的精确位置为(x0+tnx,y0+tny)。
本发明的优点是本发明提出的卷积递归快速算法在不牺牲精度和鲁棒性的前提条件下,大大地减小了算法的运算量,实现了结构光条纹中心线的快速提取,为算法的实时应用奠定了基础。


图1是三种不同算法的运算量对比。图中,上面的虚线是采用真实二维高斯卷积实现算法的卷积运算量;下面的虚线是部分采用本发明方法即卷积分离实现算法的卷积运算量;下面的实线是全面采用本发明卷积递归实现算法的卷积运算量。
图2是采用卷积分离方法和卷积递归方法处理同一幅结构光纹图像的效果比较,图2a是原始图象,图2b是采用卷积分离方法得到的结果,图2c是采用本发明方法得到的结果。
图3是本发明提出的结构光条纹中心提取流程图。
具体实施例方式
下面对本发明做进一步详细说明。首先,简要介绍基于Hessian矩阵的结构光条纹中心提取方法的基本原理。
基于Hessian矩阵的亚像素精度结构光条纹中心提取算法的基本思路是首先利用Hessian矩阵确定线条的法线方向,然后在其法线方向上利用泰勒展开求出光条纹中心的亚像素位置。
线条的法线方向就是图像z(x,y)(其中x,y分别为图像的横、纵坐标)中二阶方向导数绝对值取极大值的方向,该方向可以通过计算Hessian矩阵的特征值和特征向量来确定。Hessian矩阵可以表示为H(x,y)=∂2g(x,y)∂x2∂2g(x,y)∂x∂y∂2g(x,y)∂x∂y∂2g(x,y)∂y2⊗z(x,y)]]>甲=rxxrxyrxyryy]]>其中g(x,y)为二维高斯函数,_表示卷积运算。点(x0,y0)的法线方向由图像z(x,y)在该点的Hessian矩阵最大特征值绝对值由对应的特征向量给出。
假设根据Hessian矩阵所求得的光条法线方向的单位向量为(nx,ny),以点(x0,y0)为基点,对结构光条纹横截面上的灰度分布函数进行二阶泰勒展开,则条纹横截面上的点(x0+tnx,y0+tny)的灰度可以表示为z(x0+tnx,y0+tny)=Z(x0,y0)+N(rxry)T+NH(x,y)NT/2乙其中N=(tnxtny),rx,ry由图像z(x,y)分别与相应微分形式的高斯核卷积得到,即rx=(∂g(x,y)/∂x)⊗z(x,y)ry=(∂g(x,y)/∂y)⊗z(x,y)]]>丙由_Z/_t=0,根据式乙得到t=-nxrx+nyrynx2rxx+2nxnyrxy+ny2ryy]]>丁则光条中心点的精确位置为(x0+tnx,y0+tny)。
由上面的叙述可以看出,由于在求Hessian矩阵的过程中要对整幅图像的每点进行至少5次大模板的二维高斯卷积,这导致算法的运算量很大,很难实现结构光条纹中心的实时提取。因此,需要在保证提取精度的前提条件下尽量减小算法的运算量,提高算法的实现性。
根据高斯函数的可分离性(见贾云得,《机器视觉》,北京科学出版社,2000.),对图像z(x,y)的二维高斯卷积可以等效为一次高斯行卷积和一次高斯列卷积。对于一个大小为n×n的二维高斯模板,一次二维卷积的运算量为n2次乘加,而二次一维卷积的运算量为2n次乘加。显然,高斯卷积的可分离性可以减小卷积的运算量。微分形式的高斯卷积核也满足这个性质。利用高斯卷积的可分离性,将算法中对图像的5次二维卷积转化为10次一维卷积,其中有2次一维卷积是完全相同的,合理安排卷积的计算顺序后可减少为8次一维卷积。图像中一个像点的卷积运算量由直接计算的二维卷积的5n2次乘加减小为8n次乘加。
本发明方法又可称为“卷积递归快速算法”。事实上,在计算图像中每点的二维高斯卷积过程中,相邻两点之间同一模板覆盖重叠部分为n(n-2)大小,因此存在大量冗余计算。上述的卷积分离计算方法并不能从根本上减小算法的运算量,尤其对于大模板的高斯卷积运算,因此本发明引入递归的处理方法。
算子f(k)对一幅图像的卷积为y(i)=Σk=0N-1f(k)x(i-k)]]>戊其传递函数为F(z)=Σn=0N-1f(n)z-n,]]>i表示图像中像点的序号,z-1为Z变换算子。
对式戊进行Z变换可得Y(z)=F(z)X(z),F(z)=Y(z)/X(z)。F(z)为N阶函数,则有F(z)=Σi=0n-1aiz-i/(1+Σi=1nbiz-i)=Y(z)X(z)]]>已Y(z)(1+Σi=1nbiz-i)=X(z)Σi=0n-1aiz-i]]>庚对式庚进行Z反变换得到y(i)=Σj=0n-1ajx(i-j)-Σk=0nbky(i-k)]]>辛假设输入图像为I(n),图像的高斯卷积、一阶微分和二阶微分的高斯卷积的前向递归输出分别为T(n),T′(n)和T″(n),后向递归输出分别为O(n),O′(n)和O″(n),则有T(n)=BI(n)+Σi=13ciT(n-i)O(n)=BI(n)+Σi=13ciO(n+i)T′(n)=B(I(n+1)-I(n-1))/2+Σi=13ciT′(n-i)O′(n)=BT′(n)+Σi=13ciO′(n+i)T′′(n)=B(I(n)-I(n-1))+Σi=13ciT′′(n-i)O′′(n)=B(T′′(n+1)-T′′(n))+Σi=13ciO′′(n+i)---[3]]]>式中的系数c1,c2,c3,B为q=0.98711σ-0.96330,σ>2.53.97156-4.145541-0.26891σ,0.5≤σ≤2.5]]>c0=1.57825+2.44413q+1.4281q2+0.422205q3c1=(2.44413q+2.85619q2+1.26661q3)/c0c2=-(1.4281q2+1.26661q3)/c0c3=0.422205q3/c0B=1-(c1+c2+c3)根据高斯函数的可分离性,可以先后对图像进行行方向和列方向上的递归卷积,得到的结果与直接对图像进行二维卷积一致。因此,本发明结构光条纹中心卷积递归快速提取算法归纳如下
1、将图像z(x,y)与微分形式的高斯核卷积,分别得到rx,ry,rxx,rxy,ryy,如式[1];rx=(∂g(x,y)/∂x)⊗z(x,y)ry=(∂g(x,y)/∂y)⊗z(x,y)rxx=(∂2g(x,y)/∂x2)⊗z(x,y)ryy=(∂2g(x,y)/∂y2)⊗z(x,y)rxy=(∂2g(x,y)/∂x∂y)⊗z(x,y)---[1]]]>1.1、利用高斯函数的可分离性,将对图像的二维卷积转化为一维卷积;对图像z(x,y)的二维高斯卷积等效为一次高斯行卷积和一次高斯列卷积,对于一个大小为n×n的二维高斯模板,式[1]所示的二维卷积的运算量为5n2次乘加,而一维卷积的运算量为10n次乘加,因此,将式[1]所示的二维卷积转化为式[2]所示的两次一维卷积;rx=g(y)⊗((dg(x)/dx)⊗z(x,y))ry=(dg(y)/dy)⊗(g(x)⊗z(x,y))rxx=g(y)⊗((d2g(x)/dx2)⊗z(x,y))ryy=(d2g(y)/dy2)⊗(g(x)⊗z(x,y))rxy(dg(y)/dy)⊗((dg(x)/dx)⊗z(x,y))---[2]]]>1.2、利用递归方法实现高斯一维卷积,减少运算过程中的冗余计算量,递归实现的过程分为前向递归和后向递归两个部分,后向递归的输入为前向递归的结果;假设输入图像的某一行或某一列为I(n),图像的高斯卷积、一阶微分和二阶微分的高斯卷积的前向递归输出分别为T(n),T′(n)和T″(n),后向递归输出分别为O(n),O′(n)和O″(n),则有T(n)=BI(n)+Σi=13ciT(n-i)O(n)=BI(n)+Σi=13ciO(n+i)T′(n)=B(I(n+1)-I(n-1))/2+Σi=13ciT′(n-i)O′(n)=BT′(n)+Σi=13ciO′(n+i)T′′(n)=B(I(n)-I(n-1))+Σi=13ciT′′(n-i)O′′(n)=B(T′′(n+1)-T′′(n))+Σi=13ciO′′(n+i)---[3]]]>式中的系数c1,c2,c3,B为q=0.98711σ-0.96330,σ>2.53.97156-4.145541-0.26891σ,0.5≤σ≤2.5]]>
c0=1.57825+2.44413q+1.4281q2+0.422205q3c1=(2.44413q+2.85619q2+1.26661q3)/c0c2=-(1.4281q2+1.26661q3)/c0c3=0.422205q3/c0B=1-(c1+c2+c3);2、求解Hessian矩阵的特征值和特征向量,得到线条的法线方向(nx,ny);Hessian矩阵的表达式H(x,y)如式[4]所示,法线方向(nx,ny)由图像z(x,y)的Hessian矩阵最大特征值绝对值所对应的特征向量给出;H(x,y)=∂2g(x,y)∂x2∂2g(x,y)∂x∂y∂2g(x,y)∂x∂y∂2g(x,y)∂y2⊗z(x,y)---[4]]]>=rxxrxyrxyryy]]>3、根据泰勒展开求解光条纹中心的亚像素坐标;假设根据Hessian矩阵所求得的光条法线方向的单位向量为(nx,ny),以当前点(x0,y0)为基点,对结构光条纹横截面上的灰度分布函数进行二阶泰勒展开,则条纹横截面上的点(x0+tnx,y0+tny)的灰度可以表示为z(x0+tnx,y0+tny)=Z(x0,y0)+N(rxry)T+NH(x,y)NT/2其中N=(tnxtny),由_Z/_t=0,可以得到t=-nxrx+nyrynx2rxx+2nxnyrxy+ny2ryy]]>则光条中心点的精确位置为(x0+tnx,y0+tny)。
实施例通过实验,从运算量,提取精度,鲁棒性三个方面比较了原算法与快速算法的性能。
运算量比较。
参见图1,这是模板大小不同时三种实现方法的运算量对比。假设一幅带有结构光条纹的图像大小为768×576,选取高斯参数σ=2.5,高斯卷积模板的大小取n=[8σ]+1。当σ=2.5时,n=21。采用真实二维高斯卷积实现算法的卷积运算量为5n2×768×576=975421440次乘加;采用卷积分离实现算法的卷积运算量为8n×768×576=74317824次乘加;采用卷积递归快速实现算法的卷积运算量为8×8×768×576=28311552次乘加。显然,卷积递归快速提取算法的运算量大大减小,并且算法的运算量与高斯参数的选取无关。
在主频Pentium 2.4G的PC机上,利用VISUAL C++6.0分别卷积分离算法和卷积递归算法,处理同一幅大小为768×576的图像,取σ=4处理所需时间分别为650ms和200ms。由此可知,同卷积分离算法相比,本发明卷积递归快速算法大大减小了计算量,显著地提高了算法的速度。
算法提取精度比较。
采用了真实图像,对卷积分离算法和本发明卷积递归快速算法的提取精度进行了比较,结果如表1所示。
表1 两种算法的提取结果比较

由表1可以看出本发明卷积递归快速算法与卷积分离法之间的误差约为0.113个像素,由此表明,卷积递归快速算法在提取光条的过程中,提高了速度,但仍然获得了与卷积分离法的提取精度。
算法鲁棒性比较。
参见图2,图2a是原始图象,图2b是采用卷积分离方法得到的结果,图2c是采用本发明方法得到的结果。通过比较两种算法处理同一幅结构光纹图像的效果,这两种方法都有很好的鲁棒性。
权利要求
1.一种结构光条纹中心快速提取方法,其特征在于,1.1、将图像z(x,y)与微分形式的高斯核卷积,分别得到rx,ry,rxx,rxy,ryy,如式[1];rx=(∂g(x,y)/∂x)⊗z(x,y)ry=(∂g(x,y)/∂y)⊗z(x,y)rxx=(∂2g(x,y)/∂x2)⊗z(x,y)ryy=(∂2g(x,y)/∂y2)⊗z(x,y)rxy=(∂2g(x,y)/∂x∂y)⊗z(x,y)---[1]]]>1.1.1、利用高斯函数的可分离性,将对图像的二维卷积转化为一维卷积;对图像z(x,y)的二维高斯卷积等效为一次高斯行卷积和一次高斯列卷积,对于一个大小为n×n的二维高斯模板,式[1]所示的二维卷积的运算量为5n2次乘加,而一维卷积的运算量为10n次乘加,因此,将式[1]所示的二维卷积转化为式[2]所示的两次一维卷积;rx=g(y)⊗((dg(x)/dx)⊗z(x,y))ry=(dg(y)/dy)⊗(g(x)⊗z(x,y))rxx=g(y)⊗((d2g(x)/dx2)⊗z(x,y))ryy=(d2g(y)/dy2)⊗(g(x)⊗z(x,y))rxy=(dg(y)/dy)⊗((dg(x)/dx)⊗z(x,y))---[2]]]>1.1.2、利用递归方法实现高斯一维卷积,减少运算过程中的冗余计算量,递归实现的过程分为前向递归和后向递归两个部分,后向递归的输入为前向递归的结果;假设输入图像的某一行或某一列为I(n),图像的高斯卷积、一阶微分和二阶微分的高斯卷积的前向递归输出分别为T(n),T′(n)和T″(n),后向递归输出分别为O(n),O′(n)和O″(n),则有T(n)=BI(n)+Σi=13ciT(n-i)O(n)=BT(n)+Σi=13ciO(n+i)T(n)=B(I(n+1)-I(n-1))/2+Σi=13ciT′(n-i)O′(n)=BT′(n)+Σi=13ciO′(n+i)T′′(n)=B(I(n)-I(n-1))+Σi=13ciT′′(n-i)O′′(n)=B(T′′(n+1)-T′′(N))+Σi=13ciO′′(n+i)---[3]]]>式中的系数c1,c2,c3,B为q=0.98711σ-0.96330,σ>2.53.97156-4.145541-0.26891σ,0.5≤σ≤2.5]]>c0=1.57825+2.44413q+1.4281q2+0.422205q3c1=(2.44413q+2.85619q2+1.26661q3)/c0c2=-(1.4281q2+1.26661q3)/c0c3=0.422205q3/c0B=1-(c1+c2+c3);1.2、求解Hessian矩阵的特征值和特征向量,得到线条的法线方向(nx,ny);Hessian矩阵的表达式H(x,y)如式[4]所示,法线方向(nx,ny)由图像z(x,y)的Hessian矩阵最大特征值绝对值所对应的特征向量给出;H(x,y)=∂2g(x,y)∂x2∂2g(x,y)∂x∂y∂2g(x,y)∂x∂y∂2g(x,y)∂y2⊗z(x,y)---[4]]]>=rxxrxyrxyryy]]>1.3、根据泰勒展开求解光条纹中心的亚像素坐标;假设根据Hessian矩阵所求得的光条法线方向的单位向量为(nx,ny),以当前点(x0,y0)为基点,对结构光条纹横截面上的灰度分布函数进行二阶泰勒展开,则条纹横截面上的点(x0+tnx,y0+tny)的灰度可以表示为z(x0+tnx,y0+tny)=Z(x0,y0)+N(rxry)T+NH(x,y)NT/2其中N=(tnxtny),由_Z/_t=0,可以得到t=-nxrx+nyrynx2rxx+2nxnyrxy+ny2ryy]]>则光条中心点的精确位置为(x0+tnx,y0+tny)。
全文摘要
本发明属于测量技术,涉及对结构光条纹中心提取方法的改进。其步骤是将图像z(x,y)与微分形式的高斯核卷积,分别得到r
文档编号G06T17/00GK1763472SQ20051012372
公开日2006年4月26日 申请日期2005年11月22日 优先权日2005年11月22日
发明者周富强, 张广军, 江洁, 胡坤 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1