Tips

MVS: Multi-View Stereo

Abstract

  • 思路:一般的局部立体方法是一个具有整形数值视察(disparity)的支持镜头进行匹配,其中有一个隐藏的假设:再支持区域的像素中具有恒定的视差。这个假设在倾斜的表面是不成立的。
  • 每个像素有一个单独的3D平面。
  • 除了PatchMatch的空间传播方法外,还有
    • 在立体中左右视图传播的图传播。
    • 时间传播,从视频的前和连续帧中传播平面。
  • 倾斜支持窗口可以用来计算全球立体方法的代价,允许明确的遮挡处理,可以处理大的非纹理区域。
  • 重构了高度倾斜的表面,并以亚像素精度实现了视差细节。

Introduction

原来局部立体匹配中,恒定时差不太可能发生的原因有二:

  • 支持的窗口包含与中心像素位于不同表面的像素。
  • 窗口捕捉到倾斜的表面,不是fronto-parallel。
  • [ ] ??? 这篇论文提出了一种基于PatchMatch的算法,有效地解决了在每个像素点找到一个“好的”倾斜支持平面的问题。与其他局部算法相比,算法没有构建完整的cost-volume,这在本论文算法中是不可能的,因为标签空间包含了无限个3D平面。相反,算法巧妙地遍历了其中的一部分。这使得一次优化成为可能,平面以及分配给平面的像素能够联合估计,这有效地绕过了错失正确平面的问题。PatchMatch本身就是一个近似稠密的最近邻算法。这篇论文利用随机搜索和传播的PatchMatch思想来寻找平面极线上的最近邻。这使得能够处理倾斜的表面和亚像素精度。

Algorithm

对于两张图像中的每个像素\(p\), 寻找一个平面\(f_p\),视差公式:
\[
d_p = a_{f_p}p_x+b_{f_p}p_y+c_{f_p} (1)
\]
总的优化函数如下:
\[
f_p = argmin_{f\in\xi}m(p,f)(2)
\]
其中\(\xi\)表示所有可能的平面,它的大小是无限的。

代价公式如下:
\[
m(p,f)=\sum_{q\in W_p}w(p,q)\rho(q, q-d_p)
\]
其中\(W_p\)表示以像素\(p\)作为中心的方形窗口。但是与现有方法不同,\(W_p\)不再是2D的,而是3D的。权重函数\(w(p,q)\)用来解决边缘育肥问题,并且实施自适应支持权重的思想,它通过像素之间的颜色来计算他们之间的相似性:
\[
w(p,q) = e^{-||I_p-I_q||}
\]
其中,\(||I_p-I_q||\)计算像素\(p\)和\(q\)在RGB空间的L1距离。

现在来关注\(\rho(q,q')\)部分,首先根据平面\(f\)计算像素\(q\)的视差,并且从\(q\)的x坐标减去这个视差得到在另一张图上的匹配点\(q'\),函数\(\rho(q,q')\)用来计算像素\(q\)和\(q'\)之间的不相似性:
\[
\rho(q,q')=(1-\alpha)min(||I_q-I_{q'}||,\tau_{col})+\alpha min(||-||,\tau_{grad})
\]

2.2 PatchMatch计算视差

随机初始化

给两张图像的一个像素的一个随即平面。

  1. Somehow,得到一个随机平面的一个点\(P(x_0, y_0, z_0)\)。
  2. 然后计算平面法向量\(n=(n_x, n_y, n_z)\)
    • \(a_f=-n_x/n_z\)
    • \(b_f=-n_y/n_z\)
    • \(c_f=(n_xx_0 + n_yy_0+n_zz_0)/n_z\)

迭代和传播

四种步骤。(1). spatial propagation, (2). view propagation, (3). temporal propagation, (4). plane refinement。

首先处理左图的所有像素,然后处理右图的所有像素。

  • 在奇数次迭代中,从左上角的像素开始,逐行遍历。
  • 在偶数次迭代中,颠倒顺序。

Search

简单三步骤

  • 初始化:两张图A和B,将A图中的每一个像素,随机赋予一个偏移量,在B图中找到一个与之对应。

  • 传播:每个像素检查来自相邻块的便宜是否提供了更好的匹配,如果是则采用邻居的偏移量。

  • 搜索:每一个像素点在以现在的偏移量位中心的同心圆内部,找到一个更加匹配的偏移量。

搜索的半径以图片为尺寸,然后以1/2的收敛速度减少,直到半径为1.

PatchMatch Stereo - Stereo Matching with Slanted Support Windows的更多相关文章

  1. Calculating Stereo Pairs

    Calculating Stereo Pairs Written by Paul BourkeJuly 1999 Introduction The following discusses comput ...

  2. Paper Reading: Stereo DSO

    开篇第一篇就写一个paper reading吧,用markdown+vim写东西切换中英文挺麻烦的,有些就偷懒都用英文写了. Stereo DSO: Large-Scale Direct Sparse ...

  3. PatchMatch小详解

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

  4. Windows上使用“LogView”打开大文件

    最近因为工作需要要打开一个300+MB的文件,试过了N个编辑器不是打不开就是软件直接挂掉或是占用内存太大,已经严重影响了我的工作 还好在网络上找到老外写的一个免费软件,官网上说是可以打开4G+的文件( ...

  5. windows安装redis

    下载安装包,由于redis不提供windows版本,但是通过官网了解,如下: The Redis project does not officially support Windows. Howeve ...

  6. 64位Windows下安装Redis教程

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/104.html?1455868495 Redis对于Linux​是官方支持 ...

  7. Native code on Windows Phone 8(转)

    Windows Phone 8 introduces the ability to use native code to implement Windows Phone. In this sectio ...

  8. Windows下安装并设置Redis

    Redis对于Linux是官方支持的,安装和使用没有什么好说的,普通使用按照官方指导,5分钟以内就能搞定.详情请参考: http://redis.io/download 但有时候又想在windows下 ...

  9. redis 在windows 上的安装与使用

    1.redis-windows 最近在做一个抢拍模块,由于过于平凡的insert与update I/O受不了,故只好把东西放内存里,等拍卖结束了,在写入磁盘. 至于为什么要用window呢? 因为服务 ...

随机推荐

  1. C#专业的音视频采集录制类库SharpCapture介绍

    SharpCapture是高性能.轻量级.接口清晰.使用简单的C#语言编写的.NET音视频采集.屏幕录制类库.本类库可以采集系统声卡.麦克风.摄像头.屏幕画面,支持声卡和话筒混音采集. 可以应用到直播 ...

  2. python plotly 画饼状图

    代码 import pandas as pd import numpy as np import plotly.plotly as py import plotly.graph_objs as go ...

  3. Centos 7 JDK 安装(默认之前没有安装过)

    第一步: 安装JDK,先检查JDK是否存在,输入以下命令回车: java -version 没有安装过会显示: [root@heyouhao /]# java -version [root@heyou ...

  4. 解决IIS Web部署 svg/woff/woff2字体找不到问题(vue部署后找不到)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/smartsmile2012/articl ...

  5. echarts 更改tooltip提示框CSS样式

    最近 做项目,用过echarts,发现tooltip提示z-index级别很高,想更改下,看了下文档:https://www.echartsjs.com/zh/option.html#tooltip. ...

  6. maven 学习---Maven启用代理访问

    如果你的公司正在建立一个防火墙,并使用HTTP代理服务器来阻止用户直接连接到互联网.如果您使用代理,Maven将无法下载任何依赖. 为了使它工作,你必须声明在 Maven 的配置文件中设置代理服务器: ...

  7. java全套学习资料

    1.背景 技术需要大家的共同努力,在这里我将平时学习过的觉得比较好的资料分享给大家; 当然,最好的学习就是输出,与大家分享,在分享的资料中有的是自己的总结,有的是分享来自互联网,如果有侵权请联系删除; ...

  8. centos7安装mysql注意点

    yum安装yum -y install mariadb-server 启动服务systemctl start mariadb.service 开机自动启动systemctl enable mariad ...

  9. Shell 编程 文本处理工具 sed

    本篇主要写一些shell脚本文本处理工具sed的使用. 概述 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加 ...

  10. NLP中的预训练语言模型(一)—— ERNIE们和BERT-wwm

    随着bert在NLP各种任务上取得骄人的战绩,预训练模型在这不到一年的时间内得到了很大的发展,本系列的文章主要是简单回顾下在bert之后有哪些比较有名的预训练模型,这一期先介绍几个国内开源的预训练模型 ...