当前位置:   article > 正文

基于Patachmatch的stereo matching笔记(一):《PatchMatch Stereo》

patchmatch stereo

Patchmatch Stereo

论文:PatchMatch Stereo - Stereo Matching with Slanted Support Windows(2011)

Patchmatch Stereo属于传统方法

1. Introduction

传统的局部匹配
某个像素在假设视差d上的局部匹配代价计算步骤:以该像素为中心,取一个窗口,窗口内所有像素视差都是d,在右图中找到移位后的窗口,计算匹配代价。
一般假设视差都是整数值,范围为0-192。

存在的问题
在这个过程中有一个隐含的假设,即支持窗口内的所有像素都具有恒定的视差。在实际中,这个假设不太可能成立,原因有两个:
(1) 支持窗口包含位于与中心像素不同的表面上的像素。
(2) 窗口捕获倾斜的表面,即不是正面平行的。
之前很多的研究表明使用自适应支持权重可以较好地解决问题(1),对问题(2)关注很少。
(自适支持应权重:匹配代价计算就是计算两个窗口对应位置像素的相似度然后求和,自适应支持权重就是根据窗口图像特性为每个像素生成一个权重,匹配代价为各个像素相似度的加权和)

主要工作

  1. 提出倾斜的支持窗口
  2. 使用patchmatch算法

倾斜的支持窗口如下图(b)所示,图(a)是普通的正面平行的窗口,黄色的线是物体表面,红色的线段就是窗口,倾斜窗口可以很好地贴合倾斜表面。使用倾斜窗口还可以得到亚像素精度的视差估计(其他得到亚像素精度估计的方法:扩展假设视差,如考虑0.5pixel、0.25pixel)。
在这里插入图片描述


2. Method

2.1 Model

对于左右图的每个像素 p,搜索一个平面 fp(左右图都搜索的原因:大多数其他局部方法一样,通过左/右一致性检查执行遮挡处理)。 一旦找到了 fp,就可以计算 p 的视差为
在这里插入图片描述
其中 afp 、 bfp 和 cfp 是平面 fp 的三个参数,px 和 py 表示 p 的 x 和 y 坐标(这个式子就是一个平面方程,在空间上的示意图如下图所示,左右为前向平行窗口,右图为倾斜窗口)。
在这里插入图片描述

我们希望找到的平面 fp 是所有可能平面中最小聚合匹配成本之一:
在这里插入图片描述
其中 F 表示所有可能的平面的集合。 请注意,这个无限的标签空间阻止我们简单地检查所有可能的标签,就像在标准局部立体匹配中所做的那样,其中标签对应于离散视差值。 根据平面 f 匹配像素 p 的代价计算为
在这里插入图片描述

其中Wp 表示以像素 p 为中心的方形窗口。权重函数 w(p,q) 用于克服边缘权重问题并实现自适应支持权重思想。 它通过查看像素的颜色来计算 p 和 q 位于同一平面上的可能性,即,如果颜色相似,则返回高值:
在这里插入图片描述

这里,γ 是用户定义的参数,而 ||Ip − Iq|| 计算 RGB 空间中 p 和 q 颜色的 L1 距离。

代价计算的第二部分ρ是计算两个像素之间的相似度。 首先根据平面 f 计算 q 的视差,并通过从 q 的 x 坐标中减去该视差来推导出 q 在另一个视图 q‘ 中的匹配点。 函数 ρ(q,q‘) 现在计算 q 和 q’:
在这里插入图片描述
上式各参数定义:
在这里插入图片描述
由于 q’ 的 x 坐标位于连续域中,通过线性插值推导出它的颜色和梯度值。 用户定义的参数 α 平衡了颜色和梯度项的影响。 参数 τcol 和 τgrad 截断了遮挡区域鲁棒性的成本。

2.2 Inference via PatchMatch

PatchMatch相关知识:Patchmatch-笔记_粟悟饭&龟波功的博客-CSDN博客

通过用随机平面初始化每个像素来找到区域的平面。除了在空间相邻像素之间传播平面之外,我们引入了两个新的传播步骤,即视图传播和时间传播。最后,还有一个平面细化步骤,改变平面参数以接近最佳平面。

1. Random Initialization

我们将两个视图的每个像素分配给一个随机平面。 原则上,可以通过直接为平面 f 的三个参数 af、bf 和 cf 分配随机值来获得随机平面。 但是,此策略不会均匀地采样所有允许的平面的空间。 因此本文采用的方法:在像素 (x0,y0) 处,首先选择一个随机视差 z0,它位于允许的连续视差值的范围内,点 P=(x0,y0, z0) 即为窗口中心像素在空间(HxWxD)中的位置,然后将平面的法向量计算为随机单位向量n = (nx,ny,nz),然后转换为平面表示方程:
在这里插入图片描述
简单地说就是传统的正面平行窗口只用一个随机视差z0表示,所以它的方向只能是固定的,而本文的窗口增加了法向量,所以其朝向是任意的,称为倾斜窗口。

2. Iteration
在迭代中,每个像素经过四个阶段,即(1)空间传播,(2)视图传播,(3)时间传播和(4)平面细化。 首先处理左图的所有像素,然后是右图像的所有像素。

(1)空间传播
邻域传播,patchmatch中最基本的传播

(2)视图传播
左右图之间的传播,利用左右视差图之间存在的强相关性,即另一个视图中的像素及其匹配点可能具有相似的平面。 检查第二个视图的所有像素,这些像素根据它们的当前平面将当前像素 p 作为匹配点。设 p‘ 是这样一个像素,其平面为fp’,用 fp’ 平面转换p。 如果匹配代价 m(p, fp‘ ) <m(p, fp),设置 fp = fp’ 。

(3)时间传播
这种传播形式只能在处理视频序列时使用,假设是当前视频帧的像素 p 和前面或连续图像中相同坐标处的像素 p 很可能具有相似的平面。

(4)平面细化
平面细化就是patchmatch中的随机搜索,搜索的是视差z0和法向量n。

2.3 Post-Processing

通过左/右一致性检查应用遮挡处理。 对于每个像素 p,我们在另一个视图中计算其匹配点 p’。我们现在检查条件 |dp−dp’| ≤ 1.如果此条件为假,则像素 p 无效。 被遮挡的像素通常不满足一致性条件,同样不匹配的像素也会不满足。

然后填充无效像素的视差。对于无效像素 p,在左侧和右侧搜索其最近的有效像素。两个点的平面 fl 和 fr 都被记录下来。我们现在计算将 p 分配给 fl 和 fr 时的视差,并选择两者中较低的作为 p 的填充视差。选择较低视差的动机是遮挡发生在背景中。请注意,此填充方案是外推平面(每个像素的x、y不同,所以在空间上就像是外推),而不是像通常所做的那样复制恒定视差。因此,这个阶段可以正确处理倾斜的表面。然而,明显的问题是这种策略会在视差图中产生水平条纹。为了削弱这个问题,对填充的视差应用加权中值滤波器。中值滤波器的权重掩码和2.1中的一样。后处理前后的视差图分别如图 3b 和 3c 所示。
在这里插入图片描述


3. Conclusions

倾斜窗口能够能够得到亚像素精度的视差估计,对倾斜表面具有很好的重建效果,patchmatch的结合使得在连续空间中搜索平面变成可能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/298180
推荐阅读
相关标签
  

闽ICP备14008679号