PatchMatch Stereo

PatchMatch Stereo - Stereo Matching with Slanted Support Windows

出发点

传统的stereo matching,隐含的假设以像素点为中心的滑动窗口内的所有点具有恒定的视差值,然而窗口中的像素可能来自多个平面或者来自一个倾斜平面。自适应权重可以解决不同平面的问题,而本文主要解决倾斜平面的问题。
PatchMatch Stereo_第1张图片
绿色为重建表面,红色为滑动窗口。传统方法用前端-平行的方法,即窗口在disp=1的面上滑动;而patch match对每个点估计一个三维平面,即可匹配倾斜的重建平面。显然传统方法不能找到准确的视差,因为视差值位于亚像素而且平面是倾斜或者旋转的。
(问题:1. 计算亚像素视差点;2. 如何找到每个点的法向去拟合平面)

亚像素精度计算视差图
在matching中直接将计算提升到亚像素精度。简单的方法,添加标签空间,即添加分数视差值(1/2像素或者1/4像素)

估计法向
如果使用初始视差图提取平面,在matching中会失败因为最适合的平面可能不在初始平面中
而对于高度倾斜的平面,前向-平行窗口的匹配结果很差,无法判断正确的平面方向

构建部分cost volume,遍历它的一部分?
联合估计平面和将像素分配到平面,有效的避免缺失正确平面的问题(没看懂)

PatchMatch 近似稠密最近邻算法:对于一幅图像的每个patch,计算到另一幅图像中具有相似像素值的patch的一个整数值(x,y)向量。使用PatchMatch随机搜索和传播的idea,根据一个平面找到极线上的最近邻点。(没看懂)

算法

模型

对于两帧图像的每个像素点p,寻找一个平面fp
计算左右视差图,通过左右一致性检查进行遮挡处理
paper 公式1
a,b,c平面参数,d视差,和sps一样的平面拟合
通过最小化聚合匹配成本找到平面fp
paper 公式2
F为无穷大的平面集合
根据平面f匹配像素p的总代价计算为
paper 公式3
Wp是以p为中心的正方形窗口。引入时间序列,将W看作3D窗口,第三维由视频序列的前帧和连续帧的像素组成。?
权重函数w(p,q)用于克服edge-fattening问题,实现自适应支持权重思想
通过观察像素的颜色来计算p和q在同一平面上的可能性,如果颜色相似,则返回高值
paper 公式4
γ为指定变量,L1范数计算点对(p,q)在RGB空间的颜色距离
对于ρ:
首先根据平面f来计算q的视差,然后通过视差找到其他视数对应点q’
ρ(q,q’)计算像素点差异
paper 公式5
第三项计算灰度值梯度的绝对值误差,
由于q‘的横坐标在连续域中,所以可通过线性插值得到其颜色和梯度值
α用于平衡颜色和梯度误差,τ 为设置的阈值,截断遮挡区域代价

PatchMatch 双目

以下为解决在两视图中的每个像素处找到三维平面的问题,即最小化第三个公式
PatchMatch的基本思想是在自然立体对中,相对较大的像素区域可以用近似相同的平面来建模

先为每个像素初始化一个随机平面,然后找到一个平面区域。假设平面区域中至少有一个像素随机化生成的平面与真实平面相近。如果假设成立,则可通过传播步骤将该平面传递到区域内的其他像素。

随机初始化每个像素点的平面

随机化平面可通过对平面参数a,b,c赋值确定一个平面。但是,这种策略不会对所有平面空间进行均匀采样。
计算像素点(x, y)处的随即平面,首先选择一个随机视差z(在允许的连续视差值范围内)。它给出了随即平面上的点P=(x, y, z)。现在计算平面法向,设置为一个随机单位向量n=(nx, ny, nz)。转换为平面方程:
paper 平面方程
(注意n=(0 ,0, 1)即前端-平行窗口,此外可通过强制z为整数值视差取消亚像素精度)

迭代

在一次迭代中,每个像素都经过以下四个阶段。首先处理左视图的所有像素然后处理右视图。
偶数迭代,从左上角像素点开始,以行为顺序遍历像素,直到到达右下角像素点。
奇数迭代,反转顺序,即从右下到左上。

空间传播

思想:空间相邻像素点可能具有相似平面
设p为当前像素,fp为它的平面。
将p的空间邻接点q的平面fq赋值给p,判断是否减少第三式的代价
paper condition
如果条件成立,则将fq作为p的新平面,即fp:=fq
偶数迭代中,考虑左邻域和上邻域;奇数迭代中,考虑右邻域和下邻域

视图传播

利用左右视差图的一致性,一个像素及其在另一个视图中的匹配点可能具有相似的平面
当前点p的另一视图匹配点为p’,如果paper condition
则设置fp:=fp’

时间传播

这种传播形式只能在处理视频序列时使用。
也是假设当前视频帧的像素点p与前一帧或连续图像中具有相同坐标的像素点p’可能具有相似的平面

平面细化

通过改变平面参数来逼近最优平面,即减小第三式的代价
将fp转换为点法式表示,两个参数,
视差范围
定义视差变化的最大范围
法向分量变化范围
限制法向量分量的变化范围(三个分量)
通过在限定范围中随机调整视差和法向分量计算新的代价,如果优于原代价则取代其视差值和平面参数
这个细化过程是迭代的,首先设置视差变化范围为maxdisp/2,法向分量变化范围为1;每次迭代完成都将变化范围减小一半(二分查找);直到视差范围小于0.1
其思想是允许在第一次迭代中进行较大的更改,如果当前平面是完全错误的,那么这样做是有意义的;后面的得带中,对非常接近当前平面的平面进行采样,这允许捕获差异细节,例如在旋转曲面上

后处理

左右一致性检测处理遮挡和不匹配的像素点
对于无效像素点的填补:无效像素p,搜索左右最接近的有效像素,记录两个点的平面fl和fr,计算p点新的两个视差值,选择较小的作为p的填充视差。但是,这种策略下会在视差图中产生水平条纹,所以对填充的视差应用加权中值滤波,权值mask由公式四计算。

弊端

  1. 时间:因为对每个点估计法向需要大量的时间,论文中记录运行时间为一分钟
  2. 边界视差
  3. 无纹理区域

你可能感兴趣的:(立体匹配,计算机视觉)