关键词:

  • 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. .Net IOC框架入门之——CastleWindsor

    一.简介 Castle是.net平台上的一个开源项目,为企业级开发和WEB应用程序开发提供完整的服务,用于提供IOC的解决方案.IOC被称为控制反转或者依赖注入(Dependency Injectio ...

  2. 基于vue+springboot+docker网站搭建【六】安装中间件

    安装中间件 去另外一台2核4G的机器先安装docker,然后安装后台项目使用的中间件 一.mysql 下载镜像:docker pull mysql:5.7 启动镜像实例:docker run -p 3 ...

  3. bugku——蹭网先解开密码(EWSA,hashcat破解wifi握手包)

    题目地址:http://ctf.bugku.com/files/77decd384a172b9a2294e6c6acfd48cc/wifi.cap 下载是个.cap的文件,破解过wifi的童鞋肯定知道 ...

  4. Java 关于函数式接口与Lambda表达式之间的关系

    java是一种面向对象的语言,java中的一切都是对象,即数组,每个类创建的实例也是对象.在java中定义的函数或方法不可能完全独立,也不能将方法函数作为参数或返回值给实例. 在java7及以前,我们 ...

  5. OGG 源端与目标端 约束不一致

    需求: 请在生产库执行下面的脚本 --删除主键并新增复合主键              alter table XXXXX  drop constraint PK_USERCHNL cascade; ...

  6. 资深P7架构师详解淘宝服务端高并发分布式架构演进之路

    1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. ...

  7. Docker搭建Nexus(Maven私库)

    0.镜像的查找:docker search nexus 1.拉取官方镜像:docker pull sonatype/nexus3 2.创建了自己的目录 (/opt/nexus/nexus-data) ...

  8. 解决Mac下SourceTree每次都让输入密码的问题

    在Mac上操作sourcetree当pull和push时每次都是让输入密码,非常烦人,虽然大概知道是因为SSH什么的问题,但搜索百度也没发现解决办法. 于是乎搜索谷歌,发现如下解决办法. Source ...

  9. 快速生成mysql上百万条测试数据

    方案:编写一个存储过程循环添加数据 1. 创建表index_test DROP TABLE IF EXISTS index_test; CREATE TABLE index_test( id ) PR ...

  10. Android端项目测试

    目录 一.概述 二.使用工具 三.测试 1.测试主要的两大功能 进入主界面,测试排行榜查看功能是否能运行 测试83端口打卡能否运行 修改个人信息已经注册功能 2.测试参数是否正确 3.测试刷新能否使用 ...