立体匹配分类及一些名词解释

刚刚接触立体匹配这块的时候是很蒙的,因为之前接触较少,很多东西都是不熟悉,对一些大家习以为常的名词还要去翻资料,通过一段时间的学习,整理了一些资料,希望对刚刚接触这块的童靴一些帮助。

立体匹配

 

分类

匹配效果(1,稀疏匹配  2,稠密匹配(密集匹配))

匹配采取的算法(1,全局匹配 2,局部匹配 3,半全局匹配)

步骤

匹配代价计算;代价累积;视差优化;视差细化

 

局部匹配算法:

主要是基于窗口进行代价累积,并且在视差优化方面直接采用胜者为王的策略获得视差图。对于每一个像素而言,都有一个单独窗口进行计算,对于不同的算法而言,窗口的大小、形状以及窗口内像素之间的计算关系和权重都是不一样的。

局部算法研究历史:

Kanade提出了经典的绝对误差和算法(sum of absoulute difference,SAD);

 

绝对平和差算法(Sum of squared difference,SSD);

 

带了上限的绝对误差和算法(sum of turncated absoulute difference,STAD);

[以上算法实现简单,算法好事少,但是精度有限]

Mattoccia提出了归一化的互相关匹配(Normalized CrossCorrelation,NCC)及零均值的变种(Zero mean Normalized Cross Correlation),

[这种算法利用像素之间的相似性进行匹配,算法的效率较高,耗时较少但抗噪声的能力比较弱,容易被噪声因素影响。]

Zabih和Woodfill提出了Census变化,该算法通过计算两个Census变化后的像素点之间的Hamming距离而获得代价值。而Census变化基于像素之间的相对关系而非灰度值。它在强光照下依然有效,鲁棒性很好,实用性很广。

[上述算法在纹理大面积相同的情况下并不理想,精度较差,获得的匹配效果并不理想。]

像素点的任意大小、任意形状的代价窗口是非常困难的,属于N P-hard问题

Yoon和Kweon提出了自适应窗口(adaptive support-weight window,ADSW ),对于窗口内的所有像素点,根据它们与中心点在灰度值和距离方面的关系,给予每个点一个权值,然后就能模拟出任意大小和形状的窗口。

[整个算法能很好的保留边缘信息,当窗口足够大时,能取得很高的精度,但是所需的计算量也比较大]

组合的匹配方法:Sun提出了一种混合的代价计算AD-Census融合了绝对误差和算法以及Census算法。

[这个算法综合了两种算法的优点,获得的视差图效果较好。]

全局算法:

与局部匹配不同,而全局匹配算法针对整张图片的数据提出了能量函数,并对此能量函数求全局最优解,总体而言全局算法消耗的时间更多,取得的匹配效果也相应更好。

全局算法研究:

图割法(Graph Cut ) 就是通过不断地调整像素点的标签,迭代收敛,使得能量函数最小来解决立体匹配的问题。

Sun等人提出了置信度传播算法(Belief Propagation),该算法将立体匹配问题当做马尔科

夫随机场求解。

动态规划(Dynamic Programming,DP),粒子群算法(Particle Swarm Optimization,PSO)、遗传算法(Genetic Algorithm,GA)等优化算法都是常用的求解能量最小化的方法

半全局算法:

Hirsch提出了基于互信息的半全局匹配( Semi-global matching,SGM ),这种算法首次将局部匹配和全局立体匹配算法相结合,其中匹配代价选取的是分层互信息,视差优化采用了动态规划,提高了算法的实时性和鲁棒性。

机器学习:

除此以外,随着机器学习的兴起,卷积神经网络也在立体匹配获得很多应用。很多研究着重于通过深度学习计算匹配代价,然后利用SGM算法进行后续的处理计算。

Dosovitskiy等提出的F1owNet和Mayer等提出的DispNet都是利用深度学习获得端到端的立体匹配。

[这些算法取得了比较好的精度,但在实际场合中仍然存在计算量过大,耗时的问题。]

研究热点:

    综上所述,立体匹配算法创新性主要体现在以下几个方面:匹配代价的计算方法,代价聚合中支持窗口的选择、相似度测量函数设计和优化理论。尽管立体匹配己经被研究了多年,也提出了优秀的算法,但是如今仍然是一个难点,如何有效的解决立体匹配过程的歧义问题如遮挡、深度不连续和误匹配,并兼顾匹配精度和算法的实时性,仍然是立体匹配算法研究的热点

 

局部算法:

    局部算法一般是在限定窗口内进行代价计算和累积。最简单的局部算法就是计算单个像素的匹配代价,例如计算单个像素点之间的绝对值,对绝对值进行胜者为王(WTA)策略,如图12,横坐标是视差可能值d,纵坐标是左右对应点的绝对值,其中lR参考图,行是目标图,x, y是坐标点。对于区间[0, dmax]之间的所有值而言,最佳视差值就取代价值最低的那个值,即胜利者。但是对于单个像素计算代价的算法而言,有的像素之间相似度很大,所以导致噪声很多。

WTA(winner take all) 胜者为王,赢者通吃。摄影测量领域常用的影像相关方法本质上为局部匹配算法,该方法利用以每个像素为中心的窗口内的灰度信息的相似性来确定该像素的视差值,将匹配代价最小的视差值作为该像素的最佳视差值,即“赢者通吃”(WTA)法。如图所示:

 

    为了解决噪声问题,需要对代价值进行平滑处理,因此基于窗口进行代价计算就代替了单个像素点的计算方法。其中的一种方法就是对窗口内的所有代价值进行累积作为该点的匹配代价,然后再进行下一步的计算:

 

上式中,求的是像素点P的视差值。

其中Wp是以点P为中心的窗口,q是窗口内的像素点,其中C(q, q-d)表明窗口内像素点与它对应点之间的计算代价。

    对于局部算法而言,考虑的主要有两点,一点是窗口形状大小的选择,还有一点则是像素间相似关系的计算。对于窗口大小,尺寸不能过小,尺寸过小的话会导致代价计算噪声过大,精确度太低,在弱纹理区域会有很大干扰,造成二义性。同时尺寸也不能过大,窗口过大会导致算法的复杂度增大,整个算法的计算时间会增加。除此之外,尺寸过大会导致窗口出现深度不连续的区域,单纯地在区域内进行累积,会使得边缘部分出现较大误差。

全局算法:

全局算法主要是通过能量函数来拟合整个匹配过程,而找到能量最小化的点就是视差值。整个函数是由数据项约束项构成的,如式:

 

E:能量值 d:视差值  Edate:图片的数据项  Esmooth:光滑约束条件  ρ是可调参数

全局算法研究:

例如图割法、置信度传播法、动态规划法。很多全局算法的数据项就是匹配代价,能量函数就是全图的累积代价,最终通过胜者为王的策略获得视差图。全局算法的匹配效果比较好,视差图的精度高,但是计算量大,算法复杂度较高。

动态规划算法的核心思想是将一个问题是分解成若干个子问题,不断的迭代求解,便得到了整个问题的最优解,有点类似于分而治之的思想。在立体匹配中的具体做法是根据极线约束条件,不断的迭代求解每条极线上匹配点对的最小代价路径,最终得到视差图。

图像分割算法和置信度传播算法的理论依据是基于马尔科夫网络的概率模型,即网络中每一点的状态只与前一个点的状态有关。它们的最终目的都是为了求解能量函数的最优值,图割算法是通过将其图框架中的每条边都赋于一定的权值,采用最大流或最小割的方式来求解能量方程。置信度传播算法将立体匹配问题转化为马尔科夫网络的形式,采用最大后验概率求取最小能量方程值。

立体匹配约束条件:

为什么要约束?因为当三维场景映射到二维图像中时,存在很多多对一的情况,还存在许多遮挡区域以及像素失真等问题,这在立体匹配中都是非常棘手的问题。现在提出的立体匹配算法一般都是在一些约束之下。

 极线约束:极线约束是立体匹配中最基本的约束条件,对极几何理论表明空间中同一点在左右图像的位置必定在它们的极线上,因此,在搜索匹配点时,只要沿着极线方向就能搜索到,提高了算法的效率。

连续性约束:实际中物体的表面往往是崎岖不平的,严格意义上讲是不满足平滑项约束的条件的,由于我们最终的目的是要得到物体表面相对于摄像机的深度,与深度距离相比其表面的不平整度一般可以忽略不计,因此,可以认这种情况下也是满足平滑性约束的。

 唯一性约束:图像中某点的匹配点,若存在,则只有一个,除此以外再无别点,这就是唯一性约束,该约束有效的减少了匹配过程中的误匹配问题。

 顺序一致性约束:匹配点的搜索是有一定的顺序的,一般左视差图是在右图像中从右向左一次搜索的,反之,有视差图是在左图像中从左向右搜索的,因此一般生成的左右视差图的左边和右边都有一片黑色区域,这些即为遮挡区域。

相似性约束:深度连续区域内的像素点应该有着某种相同的属性,如颜色的相似性或灰度值的差异性较小,推而广之,若一个区域颜色比较接近,则该区域像素应该处于同一个面上,很多立体匹配算法就是在这个假设的基础上建立起来的。

左右一致性约束:在左右一致性判断中常常会用到这个假设,空间中某一场景点,如果在非遮挡区域,那么它在左右相机中的成像点应该是同时存在的,换句话说左视差图和右视差图在同一点的视差值应该是一样的,该约束常被用于遮挡区域的检测。

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值