PatchMatch笔记

关键词:

  • slanted surfaces: 倾斜的平面
  • fronto-parallel windows: ???
  • remedy: 补救
  • disparity: 视差图

对每一个像素都估计一个3D平面。所以这个方法的挑战就是找到一个最优的3d平面。当平面 (f_p) 被找到以后,就可以用下面的式子计算视差图。

[d_{p}=a_{f_{p}} p_{x}+b_{f_{p}} p_{y}+c_{f_{p}} ]

这里((p_x, p_y))表示图像的坐标。

我们要找的平面满足下面的要求

[f_{p}=underset{f in mathscr{F}}{operatorname{argmin}} m(p, f) ]

黄金公式,patch match的重点:

[m(p, f)=sum_{q in W_{p}} w(p, q) cdot holeft(q, q-left(a_{f} q_{x}+b_{f} q_{y}+c_{f} ight) ight) ]

  • 这里的(w(p, q))通过看颜色来计算在平面上的可能性,如果颜色很近似的话就返回比较大的值。(left|I_{p}-I_{q} ight|)计算的p和q在RGB空间的距离。

[w(p, q)=e^{-frac{left|I_{p}-I_{q} ight|}{gamma}} ]

  • 公式( holeft(q, q^{prime} ight))计算q和q‘的不相似度。

[ holeft(q, q^{prime} ight)=(1-alpha) cdot min left(left|I_{q}-I_{q} ight|, au_{c o l} ight)+alpha cdot min left(left| abla I_{q}- abla I_{q^{prime}} ight|, au_{g r a d} ight) ]

这儿(left| abla I_{q}- abla I_{q^{prime}} ight|)表示灰度梯度的差异。

Inference via PatchMatch

然后我们来关注如何为每一个点找到一个3D平面。

首先先随机初始化一个平面。然后希望这个随机的初始化能让至少一个像素blah blah.

有一个传播的步骤会把这个平面传播到这个区域的其他像素。

我们引入了两种传播的四路:

  • view propagation
  • temporal propagation

最后有一个plane refinement step来算去最优平面。

随机初始化

我们首先会选择一个random disparity (z_0), 然后会得到一个在随机平面上的点(P = (x_0, y_0, z_0)), 然后计算这个平面的垂直向量 (vec{n}=left(n_{x}, n_{y}, n_{z} ight))

[a_{f} :=-frac{n_{x}}{n_{z}}, b_{f} :=-frac{n_{y}}{n_{z}} ext { and } c_{f} :=frac{n_{x} x_{0}+n_{y} y_{0}+n_{z} z_{0}}{n_{z}} ]

  • [ ] In addition, we can switch off sub-pixel precision by enforcing an integer-valued disparity for (z_0).

Iteration

  • spatial propagation
  • view propagation
  • temporal propogation
  • plane refinement

在每一次迭代中,我们从左上角的像素开始,然后以行为方向进行遍历,直道遍历到右下角的像素。

在基数(ODD)迭代中,我们 reverse the order.i.e. 从右下角开始遍历到左上角。

Spatial Propagation

  • 思路: 这里认为在空间中领进的点很可能有一样的平面。

假设(p)是当前点,(f_p)是它的平面。

检查条件:

[mleft(p, f_{q} ight)<mleft(p, f_{p} ight) ]

如果上述的不等式为true, 则接受(f_q)作为(p)的新平面

  • 在偶数次迭代中检车左上的邻居,在基数词迭代中检车右下的邻居

View Propagation

  • 四路: 一个像素和它在另一张图的匹配点有可能有相似的平面。

我们检查在第二张图中所有跟当前像素(p)匹配的点。

If (mleft(p, f_{p^{prime}} ight)<mleft(p, f_{p} ight)), we set (f_{p} :=f_{p^{prime}}).

Temporal Propagation

这个传播只在stereo video sequences中使用。

  • 四路:在连续帧中同一个帧可能会有相同的平面(小运动中更可能)。

If (mleft(p, f_{p^{prime}} ight)<mleft(p, f_{p} ight)), we set (f_{p} :=f_{p^{prime}}).

Plane Refinement

。。。

后处理

使用occlusion treatment via left/right consistency checking.

检查条件(left|d_{p}-d_{p^{prime}} ight| leq 1),如果不满足的话,像素(p)就是无效的。

这种一致性检查一般会使被遮挡的像素失效,对于错误的匹配也有效果。

对于一个失效的像素(p), 我们从左右搜索最近的有效点,两个平面(f^l), (f^r)被记录。然后把像素往两个平面上投,并计算disparity,然后选择不一致性比较低的。

  • [ ] 思路:the fact that occlusion occurs at the background.
原文地址:https://www.cnblogs.com/tweed/p/10883091.html