一种双目图像的立体匹配方法及系统与流程

文档序号:14679305发布日期:2018-06-12 21:58阅读:305来源:国知局
一种双目图像的立体匹配方法及系统与流程

本发明涉及双目立体视觉领域,具体涉及一种双目图像的立体匹配方法及系统。



背景技术:

双目立体视觉系统是一个根据获取的平面图像恢复3D图像的系统。场景中的光线在人眼这个精密的成像系统中被采集,通过神经中枢被送入包含有数以亿计的神经元的大脑中被并行的处理,得到了实时的高清晰度的准确的深度感觉信息。这使得人类对环境的适应能力大大提高,很多复杂的动作能够得以完成:如行走、体育运动、驾驶车辆以及进行科学实验等。

计算机视觉是一门研究使用计算机来模拟人的视觉系统的学科。当前计算机立体视觉的水平与人类的双目视觉水平还相距甚远,因此对它的研究仍然是一个非常活跃的领域。以双目立体视觉为例,它是计算机视觉领域的重要分支,它通过模拟人的视觉系统来处理现实世界,对于立体视觉匹配的研究,能够大大的增强计算机或机器人对环境的感知能力,使得机器人能够更好的适应环境、更加智能,从而能够更好的为人们服务。双目立体视觉中最重要但又非常困难的问题就是立体视觉匹配问题,即从不同视点图像中找到匹配的对应点。



技术实现要素:

针对上述问题,本申请提供一种双目图像的立体匹配方法及系统。

根据第一方面,一种实施例中提供一种双目图像的立体匹配方法,其特征在于,包括:

获取左图像和右图像;

计算其中一幅图像的像素点的匹配代价矢量特征;

至少基于该像素点的匹配代价矢量特征,计算匹配代价,以得到该像素点在另一幅图像中匹配点。

在一实施例中,计算左图像的任一像素点(x,y)的匹配代价矢量特征,包括:

计算左图像的该像素点和右图像中若干像素点的距离 c(x,y,d)=|IL(x,y)-IR(x-d,y)|;其中d的取值范围为0~N,N为整数;IL(x,y)为左图像中像素点(x,y)的属性,IR(x-d,y)为右图像中像素点(x-d,y)的属性;

根据计算得到的距离c(x,y,d)构造左图像的像素点(x,y)的匹配代价矢量特征feature_vector(x,y)。

在一实施例中,计算右图像的任一像素点(x,y)的匹配代价矢量特征,包括:

计算右图像的该像素点和左图像中若干像素点的距离 c(x,y,d)=|IR(x,y)-IL(x+d,y)|;其中d的取值范围为0~N,N为整数;IR(x,y)为右图像中像素点(x,y)的属性,IL(x+d,y)为左图像中像素点(x-d,y)的属性;

根据计算得到的距离c(x,y,d)构造右图像的像素点(x,y)的匹配代价矢量特征feature_vector(x,y)。

在一实施例中,根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:

feature_vector(x,y)=[c(x,y,0),c(x,y,1),c(x,y,2),...,c(x,y,N)]。

其中,或者,σ为预设的常数,cmin=mind∈{0,...,N}{c(x,y,d)}。

在一实施例中,像素点的属性包括像素点的颜色和梯度中一者或多者。

在一实施例中,所述至少基于该像素点的匹配代价矢量特征,计算匹配代价,包括:计算该像素点与同一幅图像中附近点的像素点的匹配代价矢量特征的差异性和/或相似性;和/或,计算该像素点与另一幅图像中的相应点的匹配代价矢量特征的差异性和/或相似性。

在一实施例中,计算两个像素点的匹配代价矢量特征的差异性包括计算这两个像素点的匹配代价矢量特征的均方误差;,计算两个像素点的匹配代价矢量特征的相似性包括计算这两个像素点的匹配代价矢量特征的相关系数。

根据第二方面,一种实施例中提供一种双目图像的立体匹配系统,包括:

存储器,用于存储程序;

处理器,用于通过执行所述存储器存储的程序以实现上述任一实施例所述的方法。

要把第三方面,一种实施例中提供计算机可读存储介质,其特征在于,包括程序,所述程序能够被处理器执行以实现上述任一实施例所述的方法。

依据上述实施例的双目图像的立体匹配方法、系统及计算机可读存储介质,提出了一种像素点的特征,即匹配代价矢量特征来对双目图像进行立体匹配,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。

附图说明

图1为一种实施例的双目图像的立体匹配方法的流程图;

图2为一种实施例的双目图像的立体匹配方法的中计算左图像的任一像素点(x,y)的匹配代价矢量特征的流程图;

图3为一种实施例的双目图像的立体匹配系统的结构示意图;

图4为一种实施例的双目图像的自适应权重立体匹配方法的流程图;

图5为一种实施例的待匹配的图像和另一个视点的图像中视差为d的像素点的对应关系的示意图;

图6为一种实施例的双目图像的自适应权重立体匹配系统的结构示意图;

图7为一种实施例的双目图像的自适应支持窗立体匹配方法的流程图;

图8为一种实施例的自适应支持窗口计算的方向扩展的示意图;

图9为一种实施例的双目图像的自适应支持窗立体匹配系统的结构示意图;

图10为一种实施例的双目图像基于最小生成树的立体匹配方法的流程图;

图11为另一种实施例的双目图像基于最小生成树的立体匹配方法的流程图;

图12为一种实施例的双目图像基于最小生成树的立体匹配系统的结构示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。

本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。

在双目视觉的立体匹配中,一个关键问题是寻找在左右图像中的匹配点,以得到两幅图像中对应像素的水平位置差,也称之为视差,从而进一步可以计算出该像素点的深度。

不在同一深度的像素点,完全可能有相同的颜色、纹理和梯度等,所以这常常会导致立体匹配时发生误匹配,从而进一步导致视差计算出现较大的错误,大大影响了双目视觉在深度测量中的应用。

为了克服这一点,在现有的双目图像的立体匹配方法中,一般会采用像素点周边区域的像素点来估计该像素点,例如用一个矩形区域,用自适应生长的区域,还有用最小生成树等等,但这些方法中,对像素的匹配代价的加权仍然只能采用上面的颜色、纹理和梯度等与视差没有直接关系的特征来计算,因此这些方法还有较大的不鲁棒性。

本申请一实施例中公开了一种双目图像的立体匹配方法,提出了一种像素点的特征,即匹配代价矢量特征,它是一种可以用来衡量两个像素点是否在同一深度(或同一视差)的特征。本发明一实施例中公开的双目图像的立体匹配方法,其可以是在现有的方法中,在用像素点周边区域的像素点来估计该像素点或最小生成树来估计像素点时,可以在估计过程中再加入本发明提出的匹配代价矢量特征,或者单独用本发明提出的匹配代价矢量特征来估计,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。下面具体说明。

请参照图1,本申请一实施例中公开一种双目图像的立体匹配方法,包括步骤S100~S300。

步骤S100:获取左图像和右图像。

步骤S200:计算其中一幅图像的像素点的匹配代价矢量特征。

在一实施例中,请参照图2,计算左图像的任一像素点(x,y)的匹配代价矢量特征,包括步骤S210和S220。

步骤S210:计算左图像的该像素点和右图像中若干像素点的距离 c(x,y,d)=|IL(x,y)-IR(x-d,y)|;其中d的取值范围为0~N,N为整数,在一实施例中,N为正整数,为最大视差,可以由ground truth获取;IL(x,y)为左图像中像素点(x,y)的属性,IR(x-d,y)为右图像中像素点(x-d,y)的属性。在一实施例中,像素点的属性包括像素点的颜色和梯度中一者或多者。当包括像素点的属性包括多者时,例如包括像素点的颜色和梯度时,则在计算两个点的距离时,可以计算这两个点的颜色差值以及梯度差值,再相加或加权平均得到距离。

使c(x,y,d)达到最小的d的取值,就是该像素点的视差。

步骤S220:根据计算得到的距离c(x,y,d)构造左图像的像素点(x,y)的匹配代价矢量特征feature_vector(x,y)。本发明一实施例中将feature_vector(x,y)定义为像素点(x,y)的一个基本特征,经发明人研究发现,两个处于同一深度的像素点,通常它们的匹配代价矢量特征也比较相近,反过来,如果两个像素点在不同深度,那么它们的匹配代价矢量特征也会相差比较大,因此将feature_vector(x,y)定义为像素点(x,y)的匹配代价矢量特征是非常具有价值的,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。

在一实施例中,根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:

feature_vector(x,y)=[c(x,y,0),c(x,y,1),c(x,y,2),...,c(x,y,N)]。

由于像素点(x,y)的匹配代价矢量特征feature_vector(x,y)通常只在其使 c(x,y,d)达到最小的d的取值的附近才会比较小,其他地方则存在较大的不确定性,因此在一实施例中,可以将距离c(x,y,d)进行了一个转换后再来构造匹配代价矢量特征feature_vector(x,y),这样可以突出最小值附近特性。因此,在一实施例中,为了突出最小值附件的值的特性,并且让较大的匹配代价值迅速趋向于零,我们令或者,σ为预设的常数,用于控制预制较大误差走向于零的幅度,cmin=mind∈{0,...,N}{c(x,y,d)};因此根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:

feature_vector(x,y)=[e(x,y,0),e(x,y,1),e(x,y,2),...,e(x,y,N)]。

当然,类似地,也可以计算计算右图像的任一像素点(x,y)的匹配代价矢量特征,其包括:计算右图像的该像素点和左图像中若干像素点的距离 c(x,y,d)=|IR(x,y)-IL(x+d,y)|;其中d的取值范围为0~N,N为整数,为最大视差,可以由ground truth获取;IR(x,y)为右图像中像素点(x,y)的属性,IL(x+d,y) 为左图像中像素点(x+d,y)的属性;根据计算得到的距离c(x,y,d)构造右图像的像素点(x,y)的匹配代价矢量特征feature_vector(x,y)。

步骤S300:至少基于该像素点的匹配代价矢量特征,计算匹配代价,以得到该像素点在另一幅图像中匹配点。在一实施例中,步骤S300包括:计算该像素点与同一幅图像中附近点的像素点的匹配代价矢量特征的差异性和/或相似性;和/或,计算该像素点与另一幅图像中的相应点的匹配代价矢量特征的差异性和/或相似性。在一实施例中,计算两个像素点的匹配代价矢量特征的差异性包括计算这两个像素点的匹配代价矢量特征的均方误差;计算两个像素点的匹配代价矢量特征的相似性包括计算这两个像素点的匹配代价矢量特征的相关系数。

请参照图3,本发明一实施例中公开了一种双目图像的立体匹配系统,包括存储器10和处理器20。存储器10用于存储程序;处理器20用于通过执行上述存储器存储的程序以实现上述任一实施例所述的双目图像的立体匹配方法。

本发明在基于该像素点的匹配代价矢量特征,计算匹配代价,以得到该像素点在另一幅图像中匹配点后,可以基于左、右图像的匹配点再计算视差,进一步可以计算深度。

实施例一

自适应权重(Adaptive Support-Weight)立体匹配技术,是Kuk-Jin Yoon等人从人类视觉心理学出发,提出的匹配算法,根据像素之间的位置和颜色差异对窗口内原始像素代价赋以不同的加权,然后再加以聚合。一般地,对于待匹配的像素点,在它的窗口内与之空间坐标越接近、颜色越相似的像素点,会被分配更大权重,而与之空间坐标越接远、颜色越相异的像素点,则会被分配更小的权重。

本发明是基于自适应权重立体匹配算法以及基于该算法的变种算法,提出了一种双目图像的自适应权重立体匹配方法及系统,针对Kuk-Jin Yoon等人提出的经典的自适应权重立体匹配算法以其他人对该经典算法的改进算法,进行了改进,具体地,在计算权重时,引入了一个匹配代价矢量特征,是一种可以用来衡量两个像素点是否在同一深度(或同一视差)的特征,在具体实施例中,可以单独用本发明的匹配代价矢量特征来计算权重,当然也可以用本发明的匹配代价矢量特征,联合其他的特征例如颜色特征和几何特征(空间坐标特征) 中的一者或多者,来共合计算权重。本发明可以使得权重的计算更加有效和合理,从而有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。下面具体说明。

请参照图4,本发明一实施例中提供一种双目图像的自适应权重立体匹配方法,包括步骤S1100~S1500。

S1100:获取至少两个视点的图像。

S1200:对任意一个待匹配的像素点p,计算它与支持窗内其他任意一像素点 q,两者的匹配代价矢量特征的距离Δfpq。

在一实施例中,计算一幅图像中任意像素点(x,y)的匹配代价矢量特征通过以下方式计算得到:

计算该幅图像中该像素点(x,y)和另一幅图像中若干像素点的距离 c(x,y,d)=|I1(x,y)-I2(x-d,y)|;其中d∈Sd={dmin,...,dmax},为所有可能的视差的集合,I1(x,y)为像素点(x,y)的属性,I2(x-d,y)为另一幅图像中像素点(x-d,y)的属性。在一实施例中,像素点的属性包括像素点的颜色强度属性、灰度强度属性和梯度中一者或多者。当像素点的属性包括多者时,例如包括像素点的颜色和梯度时,则在计算两个点的距离时,可以计算这两个点的颜色差值以及梯度差值,再相加或加权平均得到距离。例如,当只考虑颜色属性时:

c(x,y,d)

=|I1(x,y)-I2(x-d,y)|

=|I1R(x,y)-I2R(x-d,y)|+|I1G(x,y)-I2G(x-d,y)|+|I1B(x,y)-I2B(x-d,y)|;

其中I1R(x,y)、I1G(x,y)、I1B(x,y)分别表示在上述的一幅图像中像素点(x,y)在 RGB颜色空间的R、G、B分量,I2R(x-d,y)、I2G(x-d,y)、I2B(x-d,y)分别表示在上述的另一幅图像中像素点(x-d,y)在RGB颜色空间的R、G、B分量;当然当只考虑颜色属性时,类似地也可以用CIELab颜色空间来计算,在此不再赘述。

根据计算得到的距离c(x,y,d)构造像素点(x,y)的匹配代价矢量特征 feature_vector(x,y)。本发明一实施例中将feature_vector(x,y)定义为像素点(x,y)的一个基本特征,经发明人研究发现,两个处于同一深度的像素点,通常它们的匹配代价矢量特征也比较相近,反过来,如果两个像素点在不同深度,那么它们的匹配代价矢量特征也会相差比较大,因此将feature_vector(x,y)定义为像素点 (x,y)的匹配代价矢量特征是非常具有价值的,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。

在一实施例中,根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:

feature_vector(x,y)=[c(x,y,dmin),...,c(x,y,dmax)]。

由于像素点(x,y)的匹配代价矢量特征feature_vector(x,y)通常只在其使c(x,y,d)达到最小的d的取值的附近才会比较小,其他地方则存在较大的不确定性,因此在一实施例中,可以将距离c(x,y,d)进行了一个转换后再来构造匹配代价矢量特征feature_vector(x,y),这样可以突出最小值附近特性。因此,在一实施例中,为了突出最小值附件的值的特性,并且让较大的匹配代价值迅速趋向于零,我们令或者,σ为预设的常数,用于控制预制较大误差走向于零的幅度,因此根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:

feature_vector(x,y)=[e(x,y,dmin),...,e(x,y,dmax)]。

定义了任意一像素点的匹配代价矢量特征后,相应地,也就可以计算任意两个像素点的匹配代价矢量特征的距离,例如两个矢量特征的距离可以通过它们的差值来计算,例如像素点q和像素点p的匹配代价矢量特征的距离可以通过下式来计算:Δfpq=|feature_vector(p)-feature_vector(q)|。

S1300:至少根据计算得到的匹配代价矢量特征的距离Δfpq,得到像素点q对像素点p的支持权重w(p,q)。

在一实施例中,可以单独根据计算得到的匹配代价矢量特征的距离Δfpq,得到像素点q对像素点p的支持权重w(p,q)。例如

在一实施例中,还计算像素点p与像素点q的颜色距离Δcpq和/或几何距离Δgpq;根据匹配代价矢量特征的距离Δfpq,以及颜色距离Δcpq、几何距离Δgpq中的一者或两者,来共同得到像素点q对像素点p的支持权重w(p,q)。例如:

或者,

或者,

其中,γ1、γ2、γ3分别为设置的匹配代价矢量特征的距离控制参数、颜色距离控制参数、几何距离控制参数,在一实施例中,用户可以根据经验进行设置。两个像素点的颜色距离Δcpq、几何距离Δgpq可以采用现有或未来出现的方法来计算。不妨以CIELab颜色空间为例,计算像素点p和像素点q的颜色距离Δcpq,可以通过公式来计算:Δcpq=|Lp-Lq|+|ap-aq|+|bp-bq|,或者,通过公式来计算:Lp、ap、bp分别表示像素点p在CIELab颜色空间的L、a、b的颜色分量,Lq、aq、bq分别表示像素点q在CIELab颜色空间的L、a、b的颜色分量。计算像素点p和像素点q的几何距离Δgpq可以通过公式来计算:Δgpq=|xp-xq|+|yp-yq|,或者,通过公式来计算:其中(xp,yp)表示像素点p的空间坐标,(xq,yq)表示像素点q的空间坐标。

S1400:计算累积匹配代价函数。在一实施例中,计算累积匹配代价函数包括通过以下公式来计算累积匹配代价函数

其中,像素点p、像素点q分别为待匹配的图像中的待匹配的像素点、该待匹配的像素点的支持窗内的像素点,Np表示所述待匹配的图像中像素点q的支持窗;像素点分别为另一幅图像中与像素点p视差为d的像素点、该像素点的支持窗内的像素点,表示所述另一幅图像中像素点的支持窗。如图 5所示,一般地,像素点p、像素点q为待匹配的图像(例如两个视点的图像中的左视图)中的像素点,像素点为另一幅图像(例如两个视点的图像中的右视图)中的像素点,像素点p和像素点的视差为d,像素点q相对像素点 p的空间位置,与像素点相对像素点的空间位置,是相同的。

w(p,q)表示像素点q对像素点p的支持权重,表示像素点对像素点的支持权重;表示像素点q与像素点的匹配代价函数,通过这两个像素点q与像素点的颜色、梯度或匹配代价矢量特征中的一者或多者来计算,例如通过计算两个像素点的颜色距离、梯度差和/或匹配代价矢量特征的距离来计算,当通过颜色距离(例如RGB颜色空间的颜色距离)、梯度差和/或匹配代价矢量特征的距离等中的多者来计算两个像素点的匹配代价函时,可以计算通过加权平均或分配相应权重系数的方式来计算匹配代价函。

S1500:根据所述累积匹配代价函数得到像素点p的匹配点和/或视差。例如,步骤S1500包括:求解一视差dp;其中Sd={dmin,...,dmax}为所有可能的视差的集合。换句说话,根据赢者取全的机制,视差为这样就可以得到一个视点的图像中像素点p在另一个视点的图像中的视差以及匹配点。进一步地,可以计算像素点p的深度信息。

请参照图6,本发明一实施例中还公开了一种双目图像的自适应权重立体匹配系统,其包括存储器1100和处理器1200。存储器1100用于存储程序;处理器1200用于通过执行上述存储器存储的程序以实现上述任一实施例所述的双目图像的自适应权重立体匹配方法。

本实施例的双目图像的自适应权重立体匹配方法、系统及计算机可读存储介质,在计算支持权重时,引入匹配代价矢量特征,至少根据匹配代价矢量特征的距离来计算支持权重,使得支持权重的计算更加有效和合理,从而有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度

实施例二

以基于相关窗口的立体匹配算法为例,它的关键之一在于选取的匹配窗口,为了达到匹配的准确性,一方面要求匹配窗口不能太大,以避免包含投影变形和其他的噪声,另一方面窗口又不能太小,否则不能包含足够多的颜色信息或灰度信息。这就产生了匹配窗口的选择问题,针对于该问题,Takeo Kanade和 Masatoshi Okutomi提出一种自适应窗口(Adaptive Window)的立体匹配算法,用高斯模型描述窗口范围内的视差分布,然后利用该模型和视差初始值来计算视差估计的不确定性,或者说,利用窗口内的灰度方差和视差方差信息来计算视差的不确定性,从而来调节窗口的大小。

本发明是基于上述经典的自适应窗口立体匹配算法以及基于该算法的变种算法,提出了一种双目图像的自适应支持窗口立体匹配方法及系统,针对Takeo Kanade和Masatoshi Okutomi提出的经典的自适应窗口立体匹配算法以其他人对该经典算法的改进算法,进行了改进,具体地,引入了一个匹配代价矢量特征,作为每个像素的一个基本特征,单独使用本发明的匹配代价矢量特征来计算窗口的视差估计的不确定性,或者使用本发明的匹配代价矢量特征,联合其他的特征例如窗口内的灰度变化、颜色变化、视差变化等来计算窗口的视差估计的不确定性,从而自适应地调节每个像素点的支持窗口;以视差的初始估值开始,通过选取每个像素点的支持窗口,迭代更新每个像素点的视差估计,直到收敛或达到设定的最大迭代次数,从而完成视差的计算。本发明可以使得各像素点的自适应支持窗口的选定更加有效和合理,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。下面具体说明。

请参照图7,本发明一实施例中公开一种双目图像的自适应支持窗立体匹配方法,包括步骤S2100~S2400。

获取步骤S2100:获取至少两个视点的图像。

初始化步骤S2200:设置一初始的视差估计d0(x,y)。初始的视差估计d0(x,y) 可以通过现有技术或未来出的技术来获取,例如通过现有的立体匹配算法或未来出现的立体匹配算法来获取。

自适应支持窗口计算步骤S2300:对于每一个像素点,计算并选定它的自适应支持窗口,基于所选定的自适应支持窗口,计算视差增量以更新当前视差估计;其中,至少基于窗口内像素点的匹配代价矢量特征来计算并选定自适应支持窗口。

在一实施例中,任意一像素点(x,y)的匹配代价矢量特征通过以下方式计算得到:

计算该像素点(x,y)和另一幅图像中若干像素点的距离 c(x,y,d)=|I1(x,y)-I2(x-d,y)|;其中d∈Sd={dmin,...,dmax},为所有可能的视差的集合,I1(x,y)为像素点(x,y)的属性,I2(x-d,y)为另一幅图像中像素点(x-d,y)的属性;在一实施例中,像素点的属性包括颜色强度属性、灰度强度属性和/或梯度属性。当像素点的属性包括多者时,例如包括像素点的颜色强度和梯度时,则在计算两个点的距离时,可以计算这两个点的颜色差值以及梯度差值,再相加或加权平均得到距离。当只考虑颜色属性时:

c(x,y,d)

=|I1(x,y)-I2(x-d,y)|

=|I1R(x,y)-I2R(x-d,y)|+|I1G(x,y)-I2G(x-d,y)|+|I1B(x,y)-I2B(x-d,y)|;

其中I1R(x,y)、I1G(x,y)、I1B(x,y)分别表示在上述的一幅图像中像素点(x,y)在 RGB颜色空间的R、G、B分量,I2R(x-d,y)、I2G(x-d,y)、I2B(x-d,y)分别表示在上述的另一幅图像中像素点(x-d,y)在RGB颜色空间的R、G、B分量;当然当只考虑颜色属性时,类似地也可以用CIELab颜色空间来计算,在此不再赘述。

根据计算得到的距离c(x,y,d)构造像素点(x,y)的匹配代价矢量特征feature_vector(x,y)。本发明一实施例中将feature_vector(x,y)定义为像素点(x,y)的一个基本特征,经发明人研究发现,两个处于同一深度的像素点,通常它们的匹配代价矢量特征也比较相近,反过来,如果两个像素点在不同深度,那么它们的匹配代价矢量特征也会相差比较大,因此将feature_vector(x,y)定义为像素点 (x,y)的匹配代价矢量特征是非常具有价值的,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。在一实施例中,根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:feature_vector(x,y)=[c(x,y,dmin),...,c(x,y,dmax)]。在一实施例中,根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:

feature_vector(x,y)=[e(x,y,dmin),...,e(x,y,dmax)];

其中,或者,σ为预设的常数,

一实施例中,自适应支持窗口计算步骤S2300中至少基于窗口内像素点的匹配代价矢量特征来计算并选定自适应支持窗口,包括:基于窗口内像素点的匹配代价矢量特征来计算并选定自适应支持窗口;或者,基于窗口内像素点的匹配代价矢量特征,以及窗口内像素点的视差变化、颜色强度变化和/或灰度变化,来计算并选定自适应支持窗口。

请参照图8,在一实施例中,自适应支持窗口计算步骤S2300可以包括下述步骤(1)到(5)。

(1)计算以前当前像素点为中心的一个预设的小尺寸窗口的不确定性。例如一个3*3大小的窗口。

(2)分别独立地对当前窗口在上、下、左、右这四个方向进行扩展,对任意一个方向进行预扩展时,包括:计算当前窗口在该方向上扩展一个像素宽度后的窗口的不确定性,作为该方向的不确定性,如果该不确定性大于当前窗口的不确定性,则在该方向上禁止对当前窗口进行扩展,反之,则在该方向上允许对当前窗口扩展一个像素宽度。

(3)比较所有方向上的不确定性,选择具有最小不确定性的方向,在该方向上对当前窗口扩展一个像素宽度,以更新当前窗口。

(4)迭代第(2)、(3)步骤,直到所有方向都被禁止扩展,或者是更新后的窗口的大小达到了设置的限制。例如当在某次迭代中,步骤(2)中当前窗口的四个方向都被禁止进行扩展,那么迭代停止,当前窗口被选定为当前像素点的自适应支持窗口,例如在步骤(3)中更新当前窗口后,更新后的当前窗口达到了设置的限制,那么更新后的当前窗口被选定为当前像素点的自适应支持窗口。

(5)经过上述第(1)到第(4)步骤,选定了当前像素点的自适应支持窗口。

相应地,自适应支持窗口计算步骤S2300中至少基于窗口内像素点的匹配代价矢量特征来计算并选定自适应支持窗口,包括:至少根据窗口内像素点的匹配代价矢量特征来计算窗口的不确定性。在一实施例中,基于窗口内像素点的匹配代价矢量特征来计算窗口的不确定性;或者,基于窗口内像素点的匹配代价矢量特征,以及窗口内像素点的视差变化、颜色强度变化和/或灰度变化,来计算窗口的不确定性。

迭代步骤S2400:对所述自适应支持窗口计算步骤进行迭代,直到视差估计收敛,或达到设定的最大迭代次数

请参照图9,本发明一实施例中还公开了一种双目图像的自适应支持窗立体匹配系统,其包括存储器2100和处理器2200。存储器2100用于存储程序;处理器2200用于通过执行上述存储器存储的程序以实现上述任一实施例所述的双目图像的自适应支持窗立体匹配方法。

本实施例的双目图像的自适应支持窗立体匹配方法、系统及计算机可读存储介质,引入匹配代价矢量特征,基于窗口内像素点的匹配代价矢量特征来计算并选定自适应支持窗口,使得各像素点的自适应支持窗口的选定更加有效和合理,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。

实施例三

立体匹配大致可以分为局部匹配算法、半全局匹配算法和全局匹配算法。针对全局匹配算法,Q.Yang等人提出了一种非局部代价聚合(NLCA)算法,其依赖于执行基于树结构的滤波。NLCA算法基于树结构而非基于像局部匹配算法中的支持窗来进行代价聚合。在NLCA算法中,图像中的每一个像素点都和树的节点一一对应,树的边的权重由连接该边的两个像素点的颜色距离来定义。在NLCA算法,十分关键的一步在于构造最小生成树(MST,minimum spanning tree)。在最小生成树构造好后,就可以基于最小生成树对每个像素点进行代价聚合以及进一步的视差计算。

本发明对NLCA算法进行了改进,引入了像素点的匹配代价矢量特征的概念,在构造最小生成树的过程中,最小生成树的边的权重至少由连接该边的两个像素点的匹配代价矢量特征的距离所定义,基于此,完成最终的最小生成树的构造,具体地,可以单独由连接该边的两个像素点的匹配代价矢量特征的距离来定义该边的权重,也可以由连接该边的两个像素点的匹配代价矢量特征的距离,联合颜色距离、灰度距离、几何距离、梯度差中一者或多者,来共同定义边的权重。本发明可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。下面具体说明。

请参照图10,本发明一实施例中提供一种双目图像基于最小生成树的立体匹配方法,包括步骤S4100~S4400。

步骤S4100:计算每个像素点(x,y)的匹配代价矢量特征,包括:计算该像素点(x,y)和另一幅图像中若干像素点的距离c(x,y,d)=|I1(x,y)-I2(x-d,y)|;其中 d∈Sd={dmin,...,dmax},为所有可能的视差的集合,I1(x,y)为像素点(x,y)的属性, I2(x-d,y)为另一幅图像中像素点(x-d,y)的属性;根据计算得到的距离c(x,y,d)构造像素点(x,y)的匹配代价矢量特征feature_vector(x,y)。在一实施例中,像素点的属性包括颜色强度属性、灰度强度属性和/或梯度属性。当用于计算像素点的距离包括多个属性时,例如包括像素点的颜色强度和梯度时,则在计算两个点的距离时,可以计算这两个点的颜色差值以及梯度差值,再相加或加权平均得到距离。下面举一个例子,以只考虑颜色强度属性为例:

c(x,y,d)

=|I1(x,y)-I2(x-d,y)|

=|I1R(x,y)-I2R(x-d,y)|+|I1G(x,y)-I2G(x-d,y)|+|I1B(x,y)-I2B(x-d,y)|;

其中I1R(x,y)、I1G(x,y)、I1B(x,y)分别表示在上述的一幅图像中像素点(x,y)在 RGB颜色空间的R、G、B分量,I2R(x-d,y)、I2G(x-d,y)、I2B(x-d,y)分别表示在上述的另一幅图像中像素点(x-d,y)在RGB颜色空间的R、G、B分量;当然当只考虑颜色属性时,类似地也可以用CIELab颜色空间来计算,在此不再赘述。

根据计算得到的距离c(x,y,d)构造像素点(x,y)的匹配代价矢量特征 feature_vector(x,y)。本发明一实施例中将feature_vector(x,y)定义为像素点(x,y)的一个基本特征,经发明人研究发现,两个处于同一深度的像素点,通常它们的匹配代价矢量特征也比较相近,反过来,如果两个像素点在不同深度,那么它们的匹配代价矢量特征也会相差比较大,因此将feature_vector(x,y)定义为像素点 (x,y)的匹配代价矢量特征是非常具有价值的,可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度。在一实施例中,根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:feature_vector(x,y)=[c(x,y,dmin),...,c(x,y,dmax)]。

由于像素点(x,y)的匹配代价矢量特征feature_vector(x,y)通常只在其使 c(x,y,d)达到最小的d的取值的附近才会比较小,其他地方则存在较大的不确定性,因此在一实施例中,可以将距离c(x,y,d)进行了一个转换后再来构造匹配代价矢量特征feature_vector(x,y),这样可以突出最小值附近特性。因此,在一实施例中,为了突出最小值附件的值的特性,并且让较大的匹配代价值迅速趋向于零,我们令或者,σ为预设的常数,用于控制预制较大误差走向于零的幅度,cmin=mind∈{0,...,N}{c(x,y,d)};因此根据距离c(x,y,d)构造的像素点(x,y)的匹配代价矢量特征:

feature_vector(x,y)=[e(x,y,0),e(x,y,1),e(x,y,2),...,e(x,y,N)]。

步骤S4200:构造最小生成树,其中最小生成树的边的权重至少由连接该边的两个像素点的匹配代价矢量特征的距离所定义。在一实施例中,最小生成树的边的权重由连接该边的两个像素点的匹配代价矢量特征的距离所定义。在一实施例中,最小生成树的的边的权重由连接该边的两个像素点的匹配代价矢量特征的距离,以及颜色距离、灰度距离、几何距离、梯度差中一者或多者,所共同定义。

例如,对于任意两个像素点(x,y)、(x′,y′)的匹配代价矢量特征的距离可以是它们的匹配代价矢量特征的差或差的平方,不妨以差为例:

Δf(x,y)(x′,y′)=|feature_vector(x,y)-feature_vector(x′,y′)|。

任意两个像素点(x,y)、(x′,y′)的权重则可以通过Δf(x,y)(x′,y′)来定义,例如两者的权重w(x,y,x′,y′)=Δf(x,y)(x′,y′);当然也可以稍微变换一下其中σ1为一个用于调节的参数,为常量。

而两个像素点(x,y)、(x′,y′)的颜色距离可以通过现有的方式计算,例如可以通过下式计算:

Δc(x,y)(x′,y′)=|IR(x,y)-IR(x′,y′)|+|IG(x,y)-IG(x′,y′)|+|IB(x,y)-IB(x′,y′)|;

其中,对于任意一像素点(x,y),IR(x,y)、IG(x,y)、IB(x,y)分别表示该像素点 (x,y)在RGB颜色空间上R分量、G分量、B分量。

两个像素点(x,y)、(x′,y′)的几何距离也可以通过现有的方式计算,例如可以通过下式计算:

而两个像素点(x,y)、(x′,y′)的梯度差也可以通过现有的方式计算,例如可以通过下式计算:

Δgr(x,y)(x′,y′)=|grx(x,y)-grx(x′,y′)|+|gry(x,y)-gry(x′,y′)|;

其中对于任意一像素点(x,y),grx(x,y)、gry(x,y)分别表示其沿x轴方向的梯度和沿y轴方向的梯度。

当权重由多者共同定义时,可以由它们进行加权平均来计算。例如:

w(x,y,x′,y′)=μ1Δf(x,y)(x′,y′)+μ2Δc(x,y)(x′,y′)+μ3Δg(x,y)(x′,y′)+μ4Δgr(x,y)(x′,y′);

μ1、μ2、μ3、μ4为常量,可以预先设置,例如将它们都设置为1/4。

当然也可以根据需求稍微变换一下:

σ1、σ2、σ3、σ4为用于调节的参数,为常量。

在一实施例中,构造最小生树,可以是将输入图像中的每一个像素点当作一个节点利用Kruskal算法生成最小生成树。

步骤S4300:根据所构造的最小生成树,对每个像素点进行匹配代价聚合。基于最小生成树进行匹配代价聚合,可以采用现有的方法,在此不再赘述。

步骤S4400:基于每个像素点的匹配代价聚合,计算该像素点的视差。基于匹配代价聚合,计算视差,也可以采用现有的方法,在此不再赘述。

在一实施例中,例如图11,本发明还可以包括步骤S4500:基于上述最小生成树,对计算得到的视差进行优化。基于最小生成树对计算得到的视差进行优化,也可以采用现有的方法,在此不再赘述。

请参照图12,本发明还公开了一种双目图像基于最小生成树的立体匹配系统,其包括存储器4100和处理器4200,存储器4100用于存储程序,处理器4200 用于通过执行存储器4100存储的程序以实现本发明任一实施例所公开的双目图像基于最小生成树的立体匹配。

本实施例的双目图像基于最小生成树的立体匹配方法、系统和计算机可读存储介质,引入了像素点的匹配代价矢量特征,在构造最小生成树的过程中,最小生成树的边的权重至少由连接该边的两个像素点的匹配代价矢量特征的距离所定义,基于此,完成最终的最小生成树的构造;本发明可以有效解决立体匹配时发生误匹配的问题,提高了立体匹配的精确度

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。

以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1