关键词:

  • 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. 使用order by和group by的分析

    mysql 写sql的顺序:         select -> from-> where->group by->having->order by.  但mysql的解析 ...

  2. 1-Kong文章记录

    参考: https://www.cnblogs.com/duanxz/p/9770645.html 系列博客可参考: 开源API网关系统(Kong教程)入门到精通 https://www.cnblog ...

  3. HighChat 动态绑定数据记录

    最近刚开始做图形操作,纠结了一上午,highchat 动态绑定数据这块一直不知道怎么绑定,后来多次尝试,发现 1.x轴的数据是个数组格式,我从后台传到前台的时候,js中用数组进行处理数据,然后赋值到c ...

  4. 锁、分布式锁、无锁实战全局性ID

    1.为什么要使用锁 当发生并发时,会产生多线程争夺一个资源,为保证资源的唯一性. JVM锁:对象锁,死锁,重入锁,公平锁,偏向锁 分布式锁:数据库 nosql .zookeeper 面试题:如何排查死 ...

  5. 监控微信小程序wx.request请求失败

    在微信小程序里,与后台服务器交互的主要接口函数是wx.request(),用于发起 HTTPS 网络请求.其重要性不言而喻.然而,却经常遇到请求失败的问题,笔者特意谷歌"wx.request ...

  6. PHP如何创建文件夹(mkdir的用法,mkdirs的语法)【转】

    (PHPmkdir如何创建多级目录)    在开始之前,我先说明一下,可能许多朋友与我一样认为只要给一个路径,mkdir就可以创建文件夹,其它不是那样,单个的MKDIR只能创建一级目录,对于多级的就不 ...

  7. OPATCH在线补丁

    如果补丁中有online目录就是在线补丁,不需要数据库停机,在线的又分集群和非集群,如下 查看readme可以得知在线补丁打法 $ cat README.txt Oracle Database 11g ...

  8. properties文件属性值@Value注解为 java entity属性赋值

    一.使用@Value为 java entity类中的非static属性赋值 举个栗子,一目了然 1.1 properties文件 1.2 servlet.xml 文件增加的配置: 1.2.1 serv ...

  9. 让Linux中的Nginx支持中文文件名

    原文:https://blog.csdn.net/soeben/article/details/79525964 首先你的服务器需要安装了UTF-8字符集在命令行里输入env|grep LANG如果显 ...

  10. Layer获取iframe的dom元素及调用iframe页的js方法

    1. 父页面点击第一个按钮触发,获取子页面中的body元素,调用子页面中定义的js方法 yes : function(index,layero){ //获取iframe的body元素 var body ...