《A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms》

摘要

  对现有的多种立体匹配算法进行了比较和进行试验,收集了便于评估的数据集,同时加入了一些新的具有 ground truth 的多帧立体数据集,该数据集和代码都在网站中能找到。建立了具有一般性的软件平台,设计了一种独立灵活地 C++ 实现,该实现能评估独立组分并且能扩展至新的算法。

简介

  立体匹配方法: (1) 对于已知相机几何的两帧图像的操作;(2) 产生稠密视差图,即对每一个像素的视差估计。
  本文两个研究目的: (1) 对既有立体匹配算法进行分类,将各算法分解为独立组件进行比较。(2) 提供量化评价平台,可见 http://vision.middlebury.edu/stereo/(在线评价和数据集)

  本文强调的是已标定的两帧图像的立体匹配方法的基本组分的分析上。并且本文方法很容易就被推广到多帧图像的立体匹配方法上,尤其是多基线立体方法及其平面扫描法的一般化。本文不考虑基于稀疏和特征的方法,除非后面跟着一个表面拟合步骤(三角、样条或种子 - 生长)。
  本文在第三节,介绍了稠密两帧图像对应立体匹配算法的分类。第四节讨论了测试平台的实现,包括算法组件、交互、参数。第五节描述了评估的方法,包括我们如何得到已标定的、已知地面真值的数据集。第六节介绍了评估不同算法组分的实验。第七节对 20 种当前的立体匹配算法进行了全局比较。第八节讨论未来工作。

动机和范围

动机 很有必要有一个比较性的评估,来评价已有的和新的算法的性能,才能计量该领域的进度。不单是使得研究者更好理解一般使用的算法的性能,还有就是新发布的算法需要在先前发布的技术上在某些方面有所改善。
  本文工作是由 Szeliski 和 Zabih 开始进行的工作 [116] 的继续,他们的工作比较了多种流行算法的性能,但并未给出详细的分类,或者是完成对各种算法的覆盖。这篇文章最初的版本是在 2001 年的 CVPR 关于立体和多基线视觉的研讨会上出现的 [99]。
  如果每种方法都看成是一个黑箱只把最终结果进行比较会有一定的局限性。而通过测试各个算法的独立组件能得到更多的见解。比如说,假设一个基于全局能量最小化的方法比其他方法好。那原因是因为有更好的能量函数还是更好的最小化方法呢?该最小化方法能否通过带入不同的匹配代价来改善?

计算理论

  从物理世界是由分段平滑的表面组成的这一事实出发,算法嵌入了平滑度的假设(通常是隐性的),如果没有该假设匹配问题将变得过少约束且病态的。在第3节,为了对已经存在的立体方法进行分类,我们对匹配假设和平滑假设进行了测验。大多数算法假设相机标定和对极几何。因而文中我们假设使用的是校正后的一对图像作为输入。对于立体相机标定和校正参考 [130,70,131,52,39]。

表示

  由于我们的目标是在一个通用框架内比较大量方法,因此我们专注于单值的视差图 d (x,y) 作为输出。这一方法的核心是视差空间的概念(x、y、d)。视差这一术语最先产生于人类视觉,用来描述左眼和右眼所看到的对应特征的定位差异 [72]。水平视差是普遍研究情况,但是如果眼睛接近的话垂直视差也是可能的。
  计算机视觉领域,视差长被当做深度的同义词 [20,85]。最近,几个研究者将视差定义为三维空间 (X, Y, Z) 的三维投影变换 (直射或单应)。在这样一个一般化的视差空间,能很容易通过平面扫描算法 [30,113] 列举出所有可能的匹配,对于每一个视差 d,通过透视映射将所有图像映射到一个共同的平面。(注意这与计算机几何中的平面扫描的意义不同)。
  通常,我们更喜欢一般性的视差解释,因为这能是搜索空间适应输入相机的几何学 [113,94];我们计划将这个扩展到将来的针对多图像的工作中。(平面扫面方法能推广到其他表面扫描上,如圆柱扫描)。
  本文中,由于我们所有的图像都是在与摄像机位移垂直的光轴的线性路径上拍摄的,所以经典的反演深度解释就足够了。视差空间的(x, y) 坐标与从输入数据集中选择的参考图像的像素坐标一致。图 r 中的像素坐标 (x,y) 与图 m 中的像素坐标 (x’,y’) 对应关系表示为
x ′ = x + s d ( x , y ) , y ′ = y ( 1 ) x^{\prime}=x+s d(x, y), \quad y^{\prime}=y \qquad (1) x=x+sd(x,y),y=y(1)

  式中 s = ± 1 s=\pm 1 s=±1,表示深度总是为正。注意到由于我们图像编号是从最左边到最右边的,那么像素是从最右边移到左边。
  指定视差空间后,来介绍视差空间图 DSI 。通常,DSI 是指任何的连续或离散版本的视差空间 (x,y,d) 的图像或者函数。实际上,DSI 常代表的是 d (x,y) 隐含的一个特定匹配的置信或对数似然函数(即 cost)。
  立体匹配算法的目的在于创建能正确描述场景视差空间的形状的单值函数。这可以看成是找一个嵌在具有最佳性能(如最低代价或最好的平滑度)[127] 的视差空间图像里的表面。图 1 通过切开一个典型的视差空间图像展示了该例子。
fig1

立体匹配算法分类

  分类基于立体算法通常执行 (子集) 以下四个步骤的观察 :
  1.matching cost computation; (匹配代价计算)
  2. cost (support) aggregation; (代价/支撑聚合 )
  3. disparity computation/optimization; (视差计算 / 优化)
  4. disparity refinement. (视差计算/优化)
  所执行步骤取决于特定算法。例如,局部(基于窗口)算法给定点的视差值计算仅取决于有限窗口内的灰度值,常通过聚合代价进行隐性的平滑假设。其中一些算法完全可以分为3步,像传统平方差 (SSD) 算法: 1. 匹配代价是给定窗口的灰度值的平方差。 2. 在具有恒定视差的方形窗口内对匹配代价进行求和来实现代价聚合。 3. 通过选择每个像素的最小聚合值来计算视差。
  一些局部算法将第 1 步和第 2 步结合起来,使用基于支撑域的匹配代价,例如归一化互相关 [51,19] 和秩变换 [129]。(这也可认为是预处理步骤,见 3.1) 全局算法做出明确的平滑度假设,然后解决优化问题。此类算法通常不执行聚合步骤,而是寻求差异分配(步骤 3),从而最小化将数据(步骤 1)和平滑度项相结合的全局成本函数。这些算法的主要区别在于所使用的最小化过程,像模拟退火 [75,6],概率 [平均场] 扩散 [97],或图形分割 [23]。
  有一些迭代算法没有明确说明要最小化的全局函数,但与其密切相关 [73,97,132]。分层(粗-精细)算法类似于此类迭代算法,但通常操作于图像金字塔,其中来自较粗级别的结果用于在更精细的级别上约束更局部的搜索 [126,90,11]。

匹配代价的计算

  常见的基于像素的匹配代价包括灰度平方差 [51,1,77,107] 和灰度绝对差 [58]。在视频处理领域,这些匹配标准被称为均方误差(MSE)和平均绝对差(MAD)方法;取代帧差异的项常常被用到 [118]。
  更近的,鲁棒性方法,包含了截断二阶方法和污染高斯 [15,16,97]。这些度量值很有用,因为它们限制了聚合期间不匹配的影响。
  其他传统匹配代价包括标准化互相关 [51,93,19],这与平方差之和很相似,还包括二值匹配代价(匹配 / 不匹配)[73],基于二值特征如边缘 [4,50,27] 或者是拉普拉斯迹象 [82]。然而,二值匹配代价步长用在稠密立体方法中。
  一些代价对于相机的增益和偏差并不敏感,比如说,基于梯度的方法 [100,95] 以及非参量变换方法如秩和统计变换 [129]。当然,也可以通过针对偏执增益和直方图均衡化 [48,32] 的预处理步骤来纠正不同相机的特征。其他的匹配标准还包括相位和滤波组件的匹配响应 [74,63,56,57]。最后,Birchfield 和 Tomasi 提出一种对图像取样不敏感的匹配方法 [12]。不仅仅是比较通过积分数值偏移来比较像素值(仅仅比较积分数值偏移会漏掉有效的匹配),他们将参考图像中的每一个像素与其他图像的线性插值函数进行比较。
  所有像素的匹配成本值和所有视差构成初始差异空间图像 C0(x、y、d)。虽然我们的研究目前仅限于两帧图像上。由于 DSI 与一个固定的参考图像 r 相关联(公式一),初始 DSI 只需汇总每个匹配图像 m 的成本值,即可轻松合并来自两个以上图像的信息。这是多基线 SSSD 和 SSAD 方法背后的理念 [85,62,81]。如第 2.2 节所述,此想法可概括为使用平面扫描算法的任意摄像机配置 [30,113]。

代价聚合

  局部和基于窗口的方法通过对视差空间图C( x、y、d) 中的支撑域求和或求平均来聚合匹配代价。一个支撑域可以是一幅固定视差(适用平行表面)中的二维区域,也可以是一幅 x-y-d 空间(适用斜面表面)中的三维区域。二维区域使用方形窗口、高斯卷积来进行聚合,或者是多窗口锚点的方法(即窗口可变的方法 [2.18]),或者是自适应窗口方法 [84,60,124,61],以及基于恒定视差连接分量的窗口 [22]。三维区域提出了有限的视差差异 [50],有限的视差梯度 [88],以及相关性原则 [89]。
  可以使用 2D 或 3D 卷积执行具有固定支持区域的聚合
C ( x , y , d ) = w ( x , y , d ) ∗ C 0 ( x , y , d ) ( 2 ) C(x, y, d)=w(x, y, d) * C_{0}(x, y, d) \qquad (2) C(x,y,d)=w(x,y,d)C0(x,y,d)(2)   或者当窗口是矩形的情况时,用高效的箱式滤波(移动平均数)。可变窗口也可以使用可分离的滑动最小滤波来高效执行(4.2 部分)。一个不一样的聚合方法是迭代传播,即一种聚合(或者是求平均)操作,该操作通过重复将领域像素的代价加权值加到每一个像素的代价中去 [113,103,97]。

视差计算优化

局部方法。在局部方法中主要强调的是匹配代价计算和代价聚合的步骤。计算最终的视差并不困难:只需在每个像素上选择与最低成本值相关的视差。因此这些方法的执行是一个局部的 “赢家通吃” 的过程。此方法(和许多其他对应算法)的限制是匹配的唯一性仅对一个图像(参考图像)执行,而另一个图像中的点可能会匹配多个点。
全局方法。相比之下,全局方法几乎在整个视差计算阶段进行所有的工作并且略过了代价聚合这一步骤。许多全局方法都定制了能量最小化架构 [119]。目的在于寻找使全局能量最小化的视差函数 d。
E ( d ) =

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值