算法流程
这篇文章是基于SGM的一个改进,增加了不同路径聚合代价的自适应权值,使得在视差不连续处的精度更高,并且在不占用额外内存的情况下,在四条聚合路径的基础上增加了第五条路径,使得视差图的精度更高。这篇文章 是基于FPGA平台进行实现的。
算法的流程如下:
1. 预处理:用 3 * 3 的高斯滤波对 rectified images 进行去噪,然后用 Laplace filter 来增强边缘,用于代价聚合步骤中计算P2的值。
2. 计算初始代价空间:结合TAD和Sobel gradient进行代价计算。
3. 代价聚合:五条路径进行代价聚合,惩罚项P2用预处理阶段计算的Laplace filter后的梯度图像进行规范化,让视差适应梯度的变化。然后对不同路径的代价进行加权求和。
上面就是自适应权重,其中R是沿着路径r的搜索范围,这个范围是在一个固定窗口内,如Fig.1所示。这个自适应权重有两层意思:一是增强靠近中心像素的像素的影响,二是增强和中心像素灰度值更相近的路径的影响。
然后进行加权求和:
4. 视差计算:用WTA
5. 后处理:LR-check去除误匹配和遮挡像素,SPF移除尖峰值(小连通区域),用无效像素的左右方向上最近邻的有效像素的较小视差值进行视差填充,亚像素插值得到小数视差值,3 * 3 中值滤波器移除异常点。
左右一致性检测:
SPF去除spikes,将
N
p
(
x
,
y
)
N_p(x,y)
Np(x,y)小于一定值的点视作无效点:
实验结果
数据集:
结果:
借鉴
这篇文章的路径代价的加权求和值得借鉴,但他是基于窗口的一个权值的计算,会消耗一定的时间复杂度。