《On Building an Accurate Stereo Matching System on Graphics Hardware》(2011)

摘要:本文介绍了一种基于GPU的双目匹配系统,它拥有良好的精度效果和较快的速度。匹配代价由AD-Census初始化,用动态Cross-based代价聚合,Scanline代价聚合优化(SO),之后再使用多种细化方式。

概述:1、代价计算AD-Census有效地结合了绝对值差(AD)和census转换。

      2、在代价聚合种改进了Cross-based区域聚合。

      3、SO(Scanline Optimization)方法属于一种半全局能量最小化优化算法。

      4、通过迭代区域处理,插值,深度不连续性调整和子像素增强来处理各种视差错误的系统细化过程。 这一多步骤过程证明对于改善视差结果非常有效。

      5、使用CUDA在GPU上实现高效的系统实施。

 

算法

Step 1. AD-Census 代价计算:

由于计算可以在每个像素和每个视差水平上同时执行,因此这一步本质上是平行的。

将AD和Census结合的好处可以由以下看出,Census用局部图像结构对强度值本身以外的像素强度的相对排序进行编码,因此会出现由于辐射变化和图像噪声而产生的异常值。该方法还可能在图像区域中引入与重复或类似的局部结构相匹配的模糊。为了解决census方法的这些弊端,更详细的信息,应在计算时被结合。局部的颜色和像素强度信息可以帮助减少误差。而对于颜色分布相似的区域,Census变换窗口比基于像素的强度差异更为稳健。

Census原理很简单,在指定窗口内比较周围亮度值与中心点的大小,匹配距离用汉明距表示。Census保留周边像素空间信息,对光照变化有一定鲁棒性。论文说立体匹配中对无纹理区域有改善效果。

两者结合用到:

变化范围在[0,1],同时可以用?调节异常值的影响。

AD-Census效果对比:

AD在重复结构区域有较好的处理效果,Census算法在低纹理区域有较好的处理效果,结合的效果图如上。

Step 2. Cross-based 代价聚合

Cross-based代价聚合为分自适应窗口的构建和代价聚合两步。自适应加权方法的另一个优点是可以为每个像素构建一个明确的支持区域,这可以在以后的后处理步骤中使用。

构建窗口:

对于点p,在设定的最大窗口范围内搜索,满足下面三个约束条件确定每个像素的十字坐标,完成自适应窗口的构建。

代价聚合计算需要先水平后垂直共4次。第一和第三次迭代是先水平后垂直,第二次和第四次迭代是先垂直后水平。

 

Step 3. Scanline 代价聚合优化

扫描线优化

D1,D2分别是左右图中,像素p与p-r处的颜色差异。

通过对来自所有四个方向的路径成本进行平均来获得像素p和视差final的最终成本?2(p,?)。

Step 4. 多种Refinement

Outlier Detection : 跟传统的左右一致性检查一样,对于左右一致性约束条件不满足

条件的异常点被分为遮挡点和误匹配点,其中对于异常点p的左视差Disp(p),如果极线范围内右Disp(p)被check则该点定义为误匹配点,否则该点为遮挡点。

Iterative Region Voting : 传播异常视差点

这里再次用到cross-based自适应窗口,对于异常视差点p,统计窗口内所有有效视差点构成直方图Hp,如果满足下面条件

其中,https://images2017.cnblogs.com/blog/1102213/201711/1102213-20171116001228093-1950898516.png 表示直方图内最高投票所在d值,https://images2017.cnblogs.com/blog/1102213/201711/1102213-20171116001241015-155383833.png 表示https://images2017.cnblogs.com/blog/1102213/201711/1102213-20171116001312421-1671530148.png

对于预定的阀值,不断传播进入遮挡区域,并将覆盖后的点标记点“有效点”迭代参与下次异常点投票过程中。

Proper Interpolation : 根据异常点分类采取不同的修复方式
大体可以理解为对于遮挡点,该点来自背景的可能性比较大,采用周围16点相邻点视差最小值进行填充;否则采用相邻颜色相似度最高点的视差值进行填充。

Depth Discontinuity Adjustment : 非连续视差适应,先求下边缘检测,对于视差值在边缘上的点p找到边缘两侧点p1, p2,该点视差 https://images2017.cnblogs.com/blog/1102213/201711/1102213-20171116001410687-2115054141.png 取这两个侧点中代价最小的那个视差值。该方法可以减少非连续性错误。

Sub-pixel Enhancement : 二次线性插值https://images2017.cnblogs.com/blog/1102213/201711/1102213-20171116001445015-1222866181.png

最后常规添加一个中值滤波。

 

采用left-right-check的方法将像素点分类成为三种:遮挡点,非稳定点,稳定点。对于遮挡点和非稳定点,只能基于稳定点的视差传播来解决,本文在视差传播这一块采用了两种方法,一个是迭代区域投票法,另一个是16方向极线插值法,后者具体来说:沿着点p的16个方向开始搜索,如果p是遮挡点,那么遇到的第一个稳定点的视差就是p的视差,如果p是非稳定点,那么遇到第一个与p点颜色相近的稳定点的视差作为p的视差。针对于视差图的边缘,直接提取两侧的像素的代价,如果有一个代价比较小,那么就采用这个点的视差值作为边缘点的视差值,至于边缘点是如何检测出来的,很简单,对视差图随便应用于一个边缘检测算法即可。做完这些之后,进行亚像素求精,中值滤波。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值