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 \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笔记的更多相关文章
- PatchMatch小详解
最近发了两片patch match的,其实自己也是有一些一知半解的,找了一篇不知道谁的大论文看了看,又回顾了一下,下面贴我的笔记. The PatchMatch Algorithm patchmatc ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
随机推荐
- C# vb .NET读取识别条形码线性条码gs1128
gs1-128,ean-128是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是 ...
- element admin中使用nprogress实现页面加载进度条
主要是知道是nprogress这个组件实现的就可以了,组件的使用方法可参考:https://blog.csdn.net/ltr15036900300/article/details/47321217 ...
- 2019 医渡云java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.医渡云等公司offer,岗位是Java后端开发,因为发展原因最终选择去了医渡云,入职一年时间了,也成为了面试官 ...
- 解决:ERROR 1067 (42000): Invalid default value for 'login_time'
如图操作数据表的时候出现上图的错误 问题的原因就是出在timestamp的默认值不正确,针对以上问题的解决方案是:修改默认值为当前值. sql语言代码: Alter table user modify ...
- 来自数组原型 Array.prototype 的遍历函数
1. Array.prototype.forEach() forEach() 是一个专为遍历数组而生的方法,它没有返回值,也不会改变原数组,只是简单粗暴的将数组遍历一次 参数: callback() ...
- Guava工具类学习
目录 一.介绍 二.Optional类 1.定义 2.java8自带Optional 3.使用 三.Preconditions类 1.定义 2.使用 四.Ordering类 1.定义 2.使用 五.R ...
- 尚硅谷MySQL高级学习笔记
目录 数据库MySQL学习笔记高级篇 写在前面 1. mysql的架构介绍 mysql简介 mysqlLinux版的安装 mysql配置文件 mysql逻辑架构介绍 mysql存储引擎 2. 索引优化 ...
- EFK日志搭建
安装java 安装java1.8以上的版本并验证 [root@localhost ~]# yum install java [root@localhost ~]# java -version open ...
- 目标检测论文解读6——SSD
背景 R-CNN系列算法检测速度不够快,YOLO v1检测准确率较低,而且无法检测到密集目标. 方法 SSD算法跟YOLO类似,都属于one stage的算法,即通过回归算法直接从原图得到预测结果,为 ...
- Latex使用过程中的一些总结
本文主要总结在使用Latex过程中遇到的一些问题及解决方案. 一:关于参考文献 1.如何在paper同一处用\cite命令同时引用多篇文献? 用\cite{bibtex1}\cite{bibtex2} ...