关键词:

  • 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 \rho\left(q, q-\left(a_{f} q_{x}+b_{f} q_{y}+c_{f}\right)\right)
\]

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

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

  • 公式\(\rho\left(q, q^{\prime}\right)\)计算q和q‘的不相似度。

\[
\rho\left(q, q^{\prime}\right)=(1-\alpha) \cdot \min \left(\left\|I_{q}-I_{q}\right\|, \tau_{c o l}\right)+\alpha \cdot \min \left(\left\|\nabla I_{q}-\nabla I_{q^{\prime}}\right\|, \tau_{g r a d}\right)
\]

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

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}\right)\)。
\[
a_{f} :=-\frac{n_{x}}{n_{z}}, b_{f} :=-\frac{n_{y}}{n_{z}} \text { 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\)是它的平面。

检查条件:
\[
m\left(p, f_{q}\right)<m\left(p, f_{p}\right)
\]
如果上述的不等式为true, 则接受\(f_q\)作为\(p\)的新平面

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

View Propagation

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

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

If \(m\left(p, f_{p^{\prime}}\right)<m\left(p, f_{p}\right)\), we set \(f_{p} :=f_{p^{\prime}}\).

Temporal Propagation

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

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

If \(m\left(p, f_{p^{\prime}}\right)<m\left(p, f_{p}\right)\), we set \(f_{p} :=f_{p^{\prime}}\).

Plane Refinement

。。。

后处理

使用occlusion treatment via left/right consistency checking.

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

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

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

  • [ ] 思路:the fact that occlusion occurs at the background.

PatchMatch笔记的更多相关文章

  1. PatchMatch小详解

    最近发了两片patch match的,其实自己也是有一些一知半解的,找了一篇不知道谁的大论文看了看,又回顾了一下,下面贴我的笔记. The PatchMatch Algorithm patchmatc ...

  2. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  7. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  8. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  9. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

随机推荐

  1. C# vb .NET读取识别条形码线性条码gs1128

    gs1-128,ean-128是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是 ...

  2. element admin中使用nprogress实现页面加载进度条

    主要是知道是nprogress这个组件实现的就可以了,组件的使用方法可参考:https://blog.csdn.net/ltr15036900300/article/details/47321217 ...

  3. 2019 医渡云java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.医渡云等公司offer,岗位是Java后端开发,因为发展原因最终选择去了医渡云,入职一年时间了,也成为了面试官 ...

  4. 解决:ERROR 1067 (42000): Invalid default value for 'login_time'

    如图操作数据表的时候出现上图的错误 问题的原因就是出在timestamp的默认值不正确,针对以上问题的解决方案是:修改默认值为当前值. sql语言代码: Alter table user modify ...

  5. 来自数组原型 Array.prototype 的遍历函数

    1. Array.prototype.forEach() forEach() 是一个专为遍历数组而生的方法,它没有返回值,也不会改变原数组,只是简单粗暴的将数组遍历一次  参数: callback() ...

  6. Guava工具类学习

    目录 一.介绍 二.Optional类 1.定义 2.java8自带Optional 3.使用 三.Preconditions类 1.定义 2.使用 四.Ordering类 1.定义 2.使用 五.R ...

  7. 尚硅谷MySQL高级学习笔记

    目录 数据库MySQL学习笔记高级篇 写在前面 1. mysql的架构介绍 mysql简介 mysqlLinux版的安装 mysql配置文件 mysql逻辑架构介绍 mysql存储引擎 2. 索引优化 ...

  8. EFK日志搭建

    安装java 安装java1.8以上的版本并验证 [root@localhost ~]# yum install java [root@localhost ~]# java -version open ...

  9. 目标检测论文解读6——SSD

    背景 R-CNN系列算法检测速度不够快,YOLO v1检测准确率较低,而且无法检测到密集目标. 方法 SSD算法跟YOLO类似,都属于one stage的算法,即通过回归算法直接从原图得到预测结果,为 ...

  10. Latex使用过程中的一些总结

    本文主要总结在使用Latex过程中遇到的一些问题及解决方案. 一:关于参考文献 1.如何在paper同一处用\cite命令同时引用多篇文献? 用\cite{bibtex1}\cite{bibtex2} ...