一种基于全局和局部算法的计算机双目视觉匹配方法 【技术领域】
本发明涉及图像处理、计算机视觉、计算方法、数学、数值方法领域,尤其是计算机视觉的双目图像匹配方法。
背景技术
目前,立体视觉匹配问题的研究已经取得了很大的进展。特别是基于全局优化的匹配算法,已经成为了解决匹配问题的主要方法,得到了广泛的运用。其能得到如此关注的原因是因为匹配问题可以很好地被建模为一个马尔可夫随机场(MRF)或条件随机场(CRF)的优化问题。这类问题在许多学科中都有设计,由此产生的很多算法都可以运用到匹配问题的解决当中来,比如图割法(Graph Cuts)(1、Y.Boykov,O.Veksler,and R.Zabih,“Fast approximate energyminimization via graph cuts”,IEEE Transaction on Pattern Analysis andMachine Intelligence,2001,23(11):pp.1222-1239.博依科夫,范克斯勒,扎比,“使用图割算法的快速能量最小化估计”,美国电气电子工程师学会模式识别与智能机器学报,2001,23(11):页1222-1239 2、V.Kolmogorov and R.Zabih,“What energy functions can be minimizedvia graph cuts?”,European Conf.on Computer Vision,2002,pp.65-81.科尔莫格洛夫,扎比,“图割算法可以最小化什么形式的能量函数?”欧洲计算机视觉会议,2002,页65-81),置信度扩散法(BeliefPropagation)(1、P.Felzenszwalb and D.Huttenlocher,“Efficient beliefpropagation for early vision”,Int.J.of Computer Vision,2006,70(1),pp.41-54.费尔赞茨沃,赫顿洛契,“底层视觉中的高效置信度扩散算法”,计算机视觉国际期刊,2006,70(1),页41-54 2、J.Sun,Y.Li,S.Kang,and H.Y.Shum,“Symmetric stereo matching for occlusion handling”,InProc.IEEE Computer Vision and Pattern Recognition,2005,2,pp.399-406.孙,李,康,舒姆,“使用对称匹配的遮挡剔除算法”,美国电气电子工程师学会计算机视觉与模式识别会议,2005,2,页399-406),二次多项式伪二值优化法(Quadratic Pseudo BooleanOptimization)(1、O.J.Woodford,P.H.S.Torr,I.D.Reid and A.W.Fitzgibbon,“Global stereo reconstruction under second order smoothnesspriors”,IEEE Computer Vision and Pattern Recognition,2008,1-12,pp.2570-2577.伍德福德,托尔,雷德,斐茨格本,“基于二次光滑假设的全局重建算法”,美国电气电子工程师学会计算机视觉与模式识别会议,2008,1-12,页2570-2577 2、C.Rother,V.Kolmogorov,V.Lempitsky,and M.Szummer,“Optimizing binary MRFs via extended roofduality”,In Proc.IEEE Computer Vision and Pattern Recognition,2007,1-8,pp.1784-1791.罗瑟,科尔莫格洛夫,兰皮茨基,舒莫,“基于扩展的顶对偶方法的二值马尔可夫随机场模型的优化算法”,美国电气电子工程师学会计算机视觉与模式识别会议会报,2007,1-8,页1784-1791)等。这些方法都使用一个能量函数来表征多幅图像见的关系,并且假设该能量函数的最小值对应于最佳匹配。然而,事实是这样的能量函数越复杂,这个假设才越正确。在实际应用中,为了使问题可以得到有效解决,通常都采用比较简单的能量函数,这些能量函数会使得最终结果失去很多细节特征,但从另外一个方面来看,一些经典的全局匹配算法可以结合这种比较简单的能量函数得到一个比较准确的分层匹配结果,同时,这些方法可以结合对称可见性检测和非对称可见性检测使得结果更为准确。这种分层的结果提供了一个很好的粗匹配结果,并在很大程度上减小了再优化的搜索空间。
目前,许多研究者主要在两个方面优化分层匹配结果。一个方面,通过改造优化算法,使其可以适应更复杂的能量函数;另一个方面,通过采用一些预先定义的表面模型来消除分层现象。一般来说,有两种表面模型最多被采用,一种是平面模型,该模型假设场景是由许许多多的不同朝向,不同形状的平面组成。这种假设使得在处理一些特定测试数据时显示出良好的结果,但在实际应用中的结果往往不是很理想;另一种是样条曲面,通常使用的三阶B样条曲面可以描述绝大多数物体的表面,但是对于这类表面假设,一般没有比较高效的优化算法。Lin(M.H.Lin,and C.Tomasi,“Surfaces with occlusions fromlayered stereo”,IEEE Transaction on Pattern Analysis and MachineIntelligence,2004,26(8),pp.1073-1078.林,托马西,“基于分层匹配的带遮挡检测的表面重建算法”,美国电气电子工程师学会模式识别与智能机器学报,2004,26(8),页1073-1078)提出了一种采用这种表面假设的优化算法,对于一般的测试图像对,需要进行几个小时的优化,而在一些尖角处仍会留有比较大的错误。
局部匹配算法也存在着许多问题。像经典的基于窗口的赢家通吃(winner-takes-all)算法,因为缺少更多的信息,匹配局限在一个小的局部,往往会导致结果的不准确。所以,对于局部匹配算法的改进,往往需要增大其搜索空间。但当搜索空间太大时,场景的几何结构所产生的影响就会增大,从而影响到结果的准确性。为了减小这种几何结构的影响,Li和Zucker(G.Li and S.W.Zucker,“Differential geometricconsistency extends stereo to curved surfaces”,In Proc.EuropeanConference on Computer Vision,2006,3(3953),pp.44-57.李,促克,“一种满足微分几何连续性的从匹配结果扩展到曲面的方法”,欧洲计算机视觉会议会报,2006,3(3953),页44-57)提出了一种可变窗口的SSD匹配算法。该算法将场景几何结构在窗口中的投影和窗口的形变之间建立了一种联系,虽然这种方法可以极大地减少错误匹配,但其算法复杂度却从O(n)上升到了O(n3),效率下降明显。
当全局匹配结果经过局部匹配算法的优化后,由于局部算法的局部性,其结果还需要进行再优化。Li和Zucker(G.Li and S.W.Zucker,“Differential geometric consistency extends stereo to curved surfaces”,InProc.European Conference on Computer Vision,2006,3(3953),pp.44-57李,促克,“一种满足微分几何连续性的从匹配结果扩展到曲面的方法”,欧洲计算机视觉会议会报,2006,3(3953),页44-57)提出了一种融合多个局部匹配结果得到一个光滑的结果的算法,但由于其没有考虑遮挡区域的问题,使得最后的结果在物体边缘处产生很多的错误匹配。而物体遮挡在全局匹配算法中有着相当广泛地讨论,而这种情况在真实场景中也是普遍存在的。
【发明内容】
为了克服已有的计算机双目立体视觉匹配方法的不能兼顾全局最优和局部特征、匹配结果不精确的不足,本发明提供一种能够兼顾全局最优和局部特征、得到更精确的匹配结果的基于全局和局部算法的计算机双目立体视觉匹配方法。
本发明解决其技术问题所采用的技术方案是:
一种基于全局和局部算法的计算机双目立体视觉匹配方法,所述计算机双目立体视觉匹配方法包括以下步骤:
(1)、对双目立体视觉传感器获得的左右两幅图像使用图割法获得一个分层的匹配结果;
(2)、使用不同窗口大小的窗口匹配法在全局匹配结果的一个小的领域里获得多个不同的局部匹配结果;
(3)、将这多个局部匹配结果置于一个带有二阶光滑能量函数(O.J.Woodford,P.H.S.Torr.I.D.Reid and A.W.Fitzgibbon,“Global stereoreconstruction under second order smoothness priors”,IEEE ComputerVision and Pattern Recognition,2008,1-12,pp.2570-2577.伍德福德,托尔,雷德,斐茨格本,“基于二次光滑假设的全局重建算法”,美国电气电子工程师学会计算机视觉与模式识别会议,2008,1-12,页2570-2577)的马尔可夫随机场中使用二次多项式伪二值优化法(QPBO)进行迭代优化,得到匹配结果。
进一步,在所述步骤(1)中,将双目立体视觉传感器获得的左右两幅图像进行匹配的问题,描述为如下能量函数,即该能量函数的最小值对应于最优匹配:
E(D)=Edata(D)+Esmooth(D) (1)
其中
Edata(D)=Σx|IL(x)-IR(π(x,D(x)))|---(2)]]>
Esmooth(D)=λ·Σx,y∈Nmin(T,|D(x)-D(y)|)---(3)]]>
其中,N表示4邻域集合,T表示最大的惩罚值,IL和IR表示左右两幅图像;D表示视差图,视差图D将和IL联系,而IR将作为参考图像,左图上的一个像素点表示为IL(x),其在右图上的视差值为d的匹配点表示为π(x,d);
使用α-expansion算法进行匹配得到一个分层的匹配结果。
再进一步,在所述步骤(2)中,将分层的匹配结果作为一个表面约束,每个层次被看成一个连续的表面,首先给出的是一个路径连通性的递归定义:
con(x)=1 (4)
con(x,y)=1|D(x)-D(y)|<σ,(x,y)∈N1∃z,con(x,z)=true,con(y,z)=true0otherwise---(5)]]>
其中σ表示一种连接范围,由此,一个表面使用路径连通性定义如下:
Surf(x,S)={x|∀y∈S,con(x,y)=1}---(6)]]>
其中S是定义域,它总是被表示成一个矩形窗口;Surf(x,S)表示一个以x为中心,定义在S上的表面;
根据所述表面定义,步骤(1)中得到的全局匹配结果被分为几个连续的表面,局部匹配算法以这些连续表面为约束,使得同时跨越多个表面的窗口被分割成几个不同的小部分,各自在其所属的表面进行匹配,约束条件:真实的视差值和分层结果的误差不超过0.5个像素,即求解范围被限定在分层匹配结果的±0.5像素的邻域里,使用经典的窗口匹配算法,其定义如下所示:
D(x)=argmindangle(v(Surf(x,S)),v(Surf(x+d,S)))---(7)]]>
其中v(x)表示原点在x处的窗口中所有灰度值为元素所组成的一维向量,angle(x,y)表示向量x和y的夹角;
每一种窗口大小得到一个局部匹配结果。
更进一步,在所述步骤(3)中,将步骤(2)得到的一系列局部匹配结果两两置于一个马尔可夫随机场模型中使用QPBO算法进行迭代优化,如下所示:
D(x)=D1(x) (8)
D(x)=D(argminBE((1-B)·D(x)+B·Di(x))),i∈[2,k]---(9)]]>
其中B是一个二值矩阵,当B(x)=0时,取值D(x),否则,取值Di(x)。Di(x)表示第i个局部匹配结果;
采用带有二阶光滑项的能量函数表示如下:
E(D)=Edata(D)+Esmooth(D) (1)
其中
Edata(D)=Σx|IL(x)-IR(π(x,D(x)))---(2)]]>
二阶光滑项使用邻接的3个像素来定义表面的光滑性,能量函数的数据项将保持不变,但光滑项定义为如下形式:
Esmooth(D)=Σ(x,y,z)∈N|D(x)-2D(y)+D(z)|·---(10)]]>
采用二次多项式伪二值优化法来进行优化,得到匹配结果。
再进一步,在所述步骤(1)中,采用不带遮挡检测方法。
在所述步骤(2)中,使用小的视差步长,在进行匹配时使用线性插值计算小数单位像素的灰度值。
本发明的技术构思为:为了利用全局匹配和局部匹配算法各自的优点,同时克服他们各自的缺点,本文提出了一种融合全局与局部特点的新算法。该算法主要分为三步:首先,使用图割法获得一个分层的匹配结果;然后,使用不同窗口大小的窗口匹配法在全局匹配结果的一个小的领域里获得多个不同的局部匹配结果;最后,将这多个局部匹配结果置于一个带有二阶光滑能量函数的马尔可夫随机场中进行迭代优化。
本发明的有益效果主要表现在:能够兼顾全局最优和局部特征、得到更精确的匹配结果。
【附图说明】
图1是对于Venus测试数据的结果分析的示意图,其中Errorthreshold(pixel):误差容许范围(像素),即横坐标表示的含义;Badpixels(%):错误率(%),即纵坐标表示的含义;Layered result:分层匹配结果;Several local results:多个局部匹配结果;Final result:最终结果。
【具体实施方式】
下面结合附图对本发明作进一步描述。
参照图1,一种基于全局和局部算法的计算机双目立体视觉匹配方法,所述计算机双目立体视觉匹配方法包括以下步骤:
(1)、对双目立体视觉传感器获得的左右两幅图像使用图割法获得一个分层的匹配结果;
(2)、使用不同窗口大小的窗口匹配法在全局匹配结果的一个小的领域里获得多个不同的局部匹配结果;
(3)、将这多个局部匹配结果置于一个带有二阶光滑能量函数的马尔可夫随机场中使用QPBO算法进行迭代优化,得到匹配结果。
全局匹配过程:一个好的全局匹配结果是后续优化算法的基础。在本文所述算法中,全局匹配是对整个场景的一个基本估计,在后续的优化中都将保持不变,这个估计满足的假设是它和真实结果的差不超过0.5个像素,所以这个全局匹配结果必须相对光滑,并且在物体边缘处能够保持足够的准确性。
基于图割法的算法,比如α-expansion,在处理带有满足正则条件(regularity condition)能量函数的马尔可夫随机场的优化问题中表现得非常高效。本文采用的能量函数是在使用α-expansion算法进行匹配时最常用到的能量函数,如下所示:
E(D)=Edata(D)+Esmooth(D) (1)
其中
Edata(D)=Σx|IL(x)-IR(π(x,D(x)))|---(2)]]>
Esmooth(D)=λ·Σx,y∈Nmin(T,|D(x)-D(y)|)---(3)]]>
其中,N表示4邻域集合T表示最大的惩罚值。IL和IR表示左右两幅图像;D表示视差图。考虑到效率,这里我们采用非对称的模型,因此,视差图D将和IL联系,而IR将作为参考图像。左图上的一个像素点表示为IL(x),其在右图上的视差值为d的匹配点表示为π(x,d)。这里我们没有引入遮挡检测,这是因为在这个阶段的匹配结果如果带有噪声,那么这种噪声将会带到后续的优化中去,影响最后的匹配结果。而一些比较高效的遮挡检测算法,比如Wei和Quan(Y.Weiand L.Quan,“Asymmetrical occlusion handling using graph cut formulti-view stereo”,In Proc.IEEE Computer Vision and PatternRecognition,2005,2,pp.902-909.魏,全,“使用图割法的多视图非对称遮挡剔除算法”,美国电气电子工程师学会计算机视觉与模式识别会议会报,2005,2,页902-909)提出的非对称遮挡检测算法会在结果中引入一些噪声,所以我们这里采用不带遮挡检测的图割算法来产生全局匹配结果。图1显示了带遮挡检测和不带遮挡检测的全局匹配结果的比较,其中图的构造和文献中所提出的方法类似,其优化过程是采用QPBO-P方法(C.Rother,V.Kolmogorov,V.Lempitsky,and M.Szummer,“Optimizing binary MRFs via extended roof duality”,In Proc.IEEE Computer Vision and Pattern Recognition,2007,1-8,pp.1784-1791.罗瑟,科尔莫格洛夫,兰皮茨基,舒莫,“基于扩展的顶对偶方法的二值马尔可夫随机场模型的优化算法”,美国电气电子工程师学会计算机视觉与模式识别会议会报,2007,1-8,页1784-1791),右图是由中定义直接获得的结果。
局部匹配:在得到全局匹配的分层结果后,将分层结果作为一个表面约束,运用基于亚像素的局部匹配算法可以得到一个更为精确的匹配结果。其中,每一个层次被看成是一个连续的表面,其更准确的定义将在后面给出。
首先给出的是一个路径连通性的递归定义:
con(x)=1 (4)
带可见性检测的全局匹配结果和不带可见性检测的全局匹配结果:
con(x,y)=1|D(x)-D(y)|<σ,(x,y)∈N1∃z,con(x,z)=true,con(y,z)=true0otherwise---(5)]]>
其中σ表示一种连接范围。由此,一个表面可以使用路径连通性定义如下:
Surf(x,S)={x|∀y∈S,con(x,y)=1}---(6)]]>
其中,S是定义域,它总是被表示成一个矩形窗口。Surf(x,S)表示一个以x为中心,定义在S上的表面。根据这个表面定义,之前得到的全局匹配结果可以被分为几个连续的表面,由此,局部匹配算法作用于这些连续的表面上,将避免对深度不连续处产生影响。
因为先前给出的约束条件的成立,即真实的视差值和分层结果的误差不超过0.5个像素,则我们可以使用局部算法得到更精确的结果。考虑到算法的效率,我们使用经典的窗口匹配算法,其定义如下所示:
D(x)=argmindangle(v(Surf(x,S)),v(Surf(x+d,S)))---(7)]]>
其中v(x)表示原点在x处的窗口中所有灰度值为元素所组成的一维向量,angle(x,y)表示向量x和y的夹角。为了得到更精确的匹配,这里将使用更小的视差步长,由于像素点都是整数步长,所以在进行匹配时,就必须进行差值计算。出于效率考虑,这里将使用线性插值计算小数单位像素的灰度值。
因为采用了更小步长的视差值,并且其搜索范围被限制在全局匹配结果的一个小邻域中,使得得到的匹配结果会更精确,新的方法具有明显的优越性。
在传统的窗口匹配算法中,噪声是不可避免的,但使用本文提出的方法,噪声被明显抑制。另一方面,由于采用了亚像素级的局部匹配算法,全局匹配结果中存在的分层现象被明显消除了。
当更加近距离地观察匹配结果,亚像素级的光滑性还是比较差的,。这是由局部匹配算法的独立性决定的。每个窗口的匹配都是各自独立的,和其他的匹配窗口无关。尽管进行了亚像素级的匹配,但这种独立性还是存在的。所以为了使得结果更光滑,还需要进行再优化。
局部匹配结果的优化:为了优化前面得到的一系列局部匹配结果,本文提出的方法是将它们两两置于一个马尔可夫模型中进行迭代优化,如下所示:
D(x)=D1(x) (8)
D(x)=D(argminBE((1-B)·D(x)+B·Di(x))),i∈[2,k]---(9)]]>
其中,B是一个二值矩阵,当B(x)=0时,取值D(x),否则,取值Di(x)。Di(x)表示第i个局部匹配结果;
这里我们采用形如式(1)的能量函数。考虑到先前采用的能量函数会产生比较明显的分层效果,这里将采用更为复杂一点的能量函数,即带有二阶光滑项的能量函数。二阶光滑项使用邻接的3个像素来定义表面的光滑性,可以在一定程度上抑制分层现象的产生。产生的结果会好于传统的带有一阶光滑项的能量函数。
因为全局的分层结果已经被分成了一系列的连续表面,现阶段的优化也将分别在这些连续表面上进行。所以这里我们不需要考虑可见性的问题,从而可以简化优化的过程。这里我们采用的能量函数的数据项将保持不变,但光滑项定义为如下形式:
Esmooth(D)=Σ(x,y,z)∈N|D(x)-2D(y)+D(z)|·---(10)]]>
这样的光滑项可以被证明不符合正则条件(V.Kolmogorov and R.Zabih,“What energy functions can be minimized via graph cuts?”,European Conf.on Computer Vision,2002,pp.65-81.科尔莫格洛夫,扎比,“图割算法可以最小化什么形式的能量函数?”欧洲计算机视觉会议,2002,页65-81),所以我们无法使用α-expansion算法来对其进行优化。作为一种替代,这里将采用二次多项式伪二值优化法(Quadratic Pseudo Boolean Optimization)来进行优化。这种优化算法在处理不满足正则条件的函数的优化问题时,将得到一个部分最优的解。为了估计其余部分解的合理性,一般采用估计的方法。这里,我们采用QPBO-P算法。该算法和众多的同类算法相比,可以得到较好的结果,但其效率不高。由于本阶段优化中所采用的能量函数相对比较简单,同时也为了得到更好的结果,我们还是采用了该方法来进行优化。
经过本阶段的优化,我们可以得到一个在视觉上比较好的结果。如图4所示,大部分的噪声影响已经被消除,并且也没有产生和明显的分层效应。
我们将使用Middlebury(D.Scharstein and R.Szeliski.“A taxonomyand evaluation of dense two-frame stereo correspondence algorithms”,International Journal of Computer Vision,2002,47(1),pp.7-42.沙斯坦,切利斯基,“一种对双目密集点匹配算法的分类和评价”,计算机视觉国际期刊,2002,47(1),页7-42)的测试数据集来测试所提出的算法。为了使得实验结果更客观,在所有的实验中,我们使用一组同样的参数:T=2,λ=10,σ=1。同时,在第二阶段的优化中,我们分别使用边长为3,5,7,9,11,13,15,17,19和21的窗口来获得10组局部匹配结果。当窗口比较小时,更多的细节信息可以得到保持,当窗口比较大时,一些大尺度的几何信息将显现出来。
图1显示了对于Venus测试数据的结果分析。从图中可以明显看出,红色线条表示的全局匹配得到的分层结果在0.1像素的误差分辨率下具有很高的错误率。在接下来的局部匹配中,处于高分辨率处的错误率明显下降,但另一方面,一些低分辨率处的错误率却出现了升高。在最后的优化过程后,如图中蓝色线条表示,处于低分辨率和高分辨率处的错误率都得到了明显的下降。换一个角度来说,最后阶段的优化得到的是一系列局部匹配结果的最优组合。