双目密集匹配及SGM算法

提示:


前言

提示:
因为要用到双目密集匹配,因此记录了此文


一、双目密集匹配

1、双目密集匹配概述

2、双目密集匹配四大步骤

密集匹配算法一般分为4个步骤:代价计算->代价聚集->视差计算->视差后处理
在这里插入图片描述

(1)代价计算(per-pixel-cost):

代价计算是指在给定的视差范围内,计算出每个像素不同视差值下,对应的代价值
相似度越高,代价值越小。
常用的匹配代价函数有SAD(sum of absolute differences),SSD(sum
of squared differences ),NCC(normalized cross correlation ),ZNCC(zero mean NCC ), Census,MI, BT(Brichfield and tomasi ),

代价函数是一种度量相似性的函数,可分为三种:颜色差异绝对值基于窗口的度量互信息


接下来,分别介绍这三种代价函数的计算:
颜色差异绝对值:
SAD(sum of absolute difference):
在这里插入图片描述

绝对色彩差异ADc(absolute difference on color channels):
在这里插入图片描述
截断的绝对色彩差异TADc(Truncated absolute differences on color channels):

在这里插入图片描述
截断的梯度差异TADg(truncated absolute differences on gradients )
在这里插入图片描述
通常会使用颜色差异和梯度差异组合的初始代价值
在这里插入图片描述

基于窗口的度量
常用的此类代价计算方式有:
a) NCC(normalized cross correlation )
b) ZNCC(zero mean NCC)
c) Census
在这里插入图片描述

互信息

(2)代价聚集(cost-aggregation):


代价聚集(或者说代价累积)是将初始视差空间中的匹配代价一定邻域范围内进行求和或加权操作,计算出新的匹配代价。
计算方式本质为对代价计算获取的初始匹配代价图进行卷积运算,因此代价聚集可以理解为基于窗口或不规则区域的加权平均。
研究发现,直接在初始代价值上使用WTA(winner-take-all),往往会出现很多错误结果,在聚集后的代价上使用WTA策略,会有显著的效果提升。
常用算法有: ASW(adaptive support weight ),SASW(segment-based adaptive support weight),BF(bilateral filtering),GF(guided filtering),NLC(non-local cost aggregation ),ST(segment tree)


代价聚集可解释为基于窗口或不规则区域的加权平均,因此,代价聚集关注两个问题:窗口确定窗口内各像素的加权计算方法
窗口确定
窗口分为:固定的矩形窗口、自适应的不规则窗口。
窗口内各像素的加权计算方法
加权方法分为:由参数控制的固定权值,根据影像灰度值计算的权值。


(3)视差计算:

密集匹配的最终目的是确定一个以左图像为参考的视差场(即左图像上每个像素相对于右图像的视差值)。
就单个像点而言,每个视差候选值对应一个匹配代价值,同时相邻点之间视差平滑约束关系也可映射为匹配代价,因此视差场的确定可转化为能量函数最小化。
如果只考虑当前像素视差候选值对应的匹配代价,则为局部算法
如果不仅考虑当前像素视差候选值对应的匹配代价,还考虑相邻点之间的视差平滑约束关系,则为全局算法的思想。

视差计算分为局部算法,全局算法,半全局算法。

局部算法:

局部算法通常使用WTA(winner-take-all)策略,即选择最小代价对应的视差作为最优结果。

全局算法:

全局算法是对视差影像空间在一定邻域范围内进行能量传递,从而计算出累积后的代价。其通过建立全局能量函数,将最优视差估计转换为能量最小化问题
全局能量函数通式:全局能量函数由数据项平滑项两部分构成。
(一种区分局部算法和全局算法的方式:仅包含数据项的匹配算法是局部方法,融合平滑约束的匹配方法是全局方法。)

在这里插入图片描述
数据项,平滑项,平衡系数的关系
数据项,平滑项及平衡系数均会对能量方程产生影响。因此若想通过全局能量最优化确定真实视差场,可靠的数据项,合理的平滑项及合适的平衡系数缺一不可。


数据项由原始匹配代价构成,其反映了两像点在相应特征空间的相似度。理想情况下,数据项完全可靠,即对于每个像点,匹配代价最小的视差值即为真值,此时无需平滑项即可得到可靠的视差场。然而由于几何,辐射差异及噪声的存在,使得匹配代价并不能完全真实地反映像点之间的相似性,因此引入平滑项以减弱噪声的影响是必要的。


平滑项反应了对某种先验知识的符合程度,符合度越高,平滑值越小。先验知识可以是视差值的分布假设、部分已知的视差场分布等信息。先验知识可靠与否及平滑项对于先验知识表达的准确程度,均会对最优化求解产生影响。
平滑项可以认为是密集匹配过程中的匹配约束
常见的匹配约束分为三种:视差平滑约束控制信息先验知识
视差平滑约束是指在局部范围内视差的分布应当连续平滑。
SGM算法中,就使用了视差平滑约束。其形式如下( 后面SGM部分会详细介绍) :使用p1,p2两个参数约束曲面,斜坡,或者视差不连续处。
在这里插入图片描述

控制信息通常是利用特征匹配得到的稀疏同名点作为约束,此类同名点通常具有较高的可靠性。
先验知识主要是关于视差分布的知识,比如通过其他手段或从公开数据集中得到的较低分辨率与精度的DSM,金字塔约束密集匹配中上层金字塔影像的匹配结果等。


平衡系数在于调节数据项与平滑项之间的权值。相较于弱纹理区域,纹理丰富区域的数据项更为可靠;相较于视差不连续区域,视差连续区域的平滑项可靠性更高。因而通过平衡系数,适当调整二者之间的权值,可以提高能量方程的鲁棒性。


与局部算法相比,全局匹配算法通常可以减少纹理稀疏区域匹配的模糊性以及改善在视差不连续处的匹配效果。

常用的全局优化方法包括:动态规划算法, BP(belief propagation)算法,MRF算法,Graphcut算法,SGM算法。

半全局算法:

(4)视差优化:

经过上述步骤获取的视差图通常会存在一些噪声,误匹配,漏匹配等情况,其次由于大部分立体匹配算法获取的视差都是针对整像素的离散空间中得到,仍需进行拟合,以获取亚像素级的精度。
常用的视差优化操作包括: 无效区域插值,亚像素级精化, LRC(left-to-right-cross-checking),中值滤波(MF,median filter),加权中值滤波(WMF, weighted median filter ), 小区域移除(small area suppress)等。

二、动态规划算法

二、SGM算法详解

1. SGM算法概述

半全局匹配算法是基于动态规划(一种全局匹配算法)改变的。对于某一像素点采取8条或16条路径求解求和,模拟全局优化函数,将全局算法简化为多个一维路径求解问题。通过两个约束项对能量函数进行优化,分别对斜面和不连续点进行约束补偿。从立体匹配的四个步骤而言,半全局算法,主要是在代价累积的步骤进行了改善。
相比于全局算法,半全局算法更快速,消耗的计算量更小,特别是多路径求解可以采取GPU并行处理的方式,容易在硬件平台上实现。

2.匹配代价计算

经典的SGM算法采用互信息(MI)计算匹配代价,当然,其他也可以使用其他代价函数,像 SAD(sum of absolute difference),Census

3.视差计算

SGM算法虽然命名为半全局匹配算法,但是其思想与全局匹配算法一致,都是将最优视差估计转换为 能量函数最小化问题。
半全局算法依旧采用全局匹配算法框架,但是在计算能量函数最小化的步骤时使用高效率的一维路径聚合方法来代替全局算法中的二维最小化算法,使用一维最优来近似二维最优,得到的视差图在效果上和全局算法没有太大的差别,但是算法效率却有非常大的提升。
SGM的能量函数
在这里插入图片描述
SGM的能量函数,依然分为两部分,数据项和平滑项。数据项为计算不同视差对应的代价值,平滑项则对相邻像素的视差值进行约束。
在这里插入图片描述
SGM的平滑项对像素p的邻域内计算视差,与像素p的视差相差等于1的像素加上一个惩罚项p1,相差大于1的像素加一个更大的惩罚p2。
p1惩罚较小的视差变化,例如场景中倾斜表面上的视差变化;p2惩罚较大的视差变化,例如视差不连续处。也可以说p1是为了适应倾斜或弯曲的表面,p2是为了保留不连续性。

但是对于存在高程突变的场景,该约束不再适用,引入平滑约束反而可能会降低代价聚合的可靠性。由于视差分布未知,想要在影像空间处处采用适当的平滑约束难以实现。但如果能够获得一些视差分布的先验知识或控制信息,从而归纳出更接近真实场景的匹配约束,不失为提高密集匹配可靠性的一个有效思路。

4.亚像素优化

上述计算的视差图是像素级别的,在实际使用中精度是无法满足需求的。为了进行亚像素精度的视差估计,需要通过视差最小值的邻域匹配代价,拟合一条二次曲线,取极值所在的视差值为最后的优化结果。
例如抛物线法:是将已知的视差和能量值拟合成一个抛物线,然后求其最优解。如下图所示:
在这里插入图片描述
更直观的亚像素优化的效果图展示:
在这里插入图片描述

四、tSGM—改进的金字塔层级匹配策略

多数密集匹配算法均使用了金字塔匹配策略,即根据上层金字塔影像的密集匹配结果为下层金字塔影像提供视差参考,再给定一个较小视差浮动值,得到下层金字塔影像的视差范围。
Mathias在SGM中引入金字塔约束的视差范围传递策略,发展为tSGM(tube shaped semi-global matching)

在这里插入图片描述
金字塔策略的缺点
金字塔策略实际上是一种较强的视差约束,当上层金字塔影像某点匹配视差值与真值相差较大时,由其得到的下层金字塔影像对应区域的视差范围往往并不包含真值,此时误匹配在所难免,且随着金字塔约束的传递无法恢复。


总结

提示:

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值