EMVS: Event-based Multi-View Stereo 阅读笔记
0. 摘要
EMVS目的:从已知轨迹的event相机,估计半稠密的3D结构
传统的MVS算法目的:从已知视点的图片集,去估计场景的稠密3D结构。
EMVS2个固有属性:
(1) 当传感器发生相对运动时,响应场景的边(提供场景的结构信息)
(2) 传感器运动时,进行连续时间的测量
1. 介绍
只在场景发生亮度变化时,产生event,输出是一系列毫秒分辨率的异步event流
当然还有很多优点比如:低功耗,高动态范围(130dB),没有运动模糊,毫秒级的延时,kilobates的低速数据率。
适用场景:需要快速响应,效率重要,光照变化大
没有一个前人工作是解决使用单个event进行深度估计的。相关的前人工作是:使用多个event相机(彼此之间是刚体固定连接:基线固定;并且共享一个clock)进行3D重建。该方法主要分为2步:(1)解决像平面上event的对应关系(2)三角测量得3D点的位置。
event之间的匹配有两种方法进行:(1)通过一定的时间累计生成手工帧,使用传统的立体声方法进行。(2)利用event相机之间的同时性和event间的时间相关性匹配。
传统MVS与基于event的MVS方法比较:
(1)传统的MVS是从已知视点的图片集,去估计场景的稠密3D结构。需要在全图的基础上工作;不能使用传感器提供的异步的event流。
EMVS需要考虑event的稀疏性和异步性。
(2)event相机需要与场景之间发生相对运动,不然无视觉内容输出。而传统的相机不需要。
(3)EMVS估计半稠密的3D结构,因为event自然响应强度边。
【总结】:EMVS是从具有已知视点的移动的event相机获取的稀疏异步事件流中获取场景的三维重建。
由于传统的MVS作用在强度图上,故不能直接作用于EMVS问题。但是该论文提出的方法建立在传统的MVS方法之上。
主要参考了场景空间MVS方法的求解策略,分为两步:通过变换图像测量来计算感兴趣的离散体积(视差空间图像DSI)中的聚合一致性分数,然后在该体积中找到三维结构信息。
主要使用空间扫描投票和最大化策略去估计半稠密深度图,融合深度图去生成更大的3D模型。(建立一个只包含边缘的虚拟相机的DSI,并在其中找到三维点)
2. 基于Event的空间扫描方法
2.1 传统的空间扫描方法
空间扫描方法依赖于场景的二进制边缘图,该方法有3步:
(1)变换(反投影)图象特征成为通过DSI的光线
(2)记录通过每个DSI体素的光线的数量
(3)判断每个DSI体素中是否有一个3D点(DSI得分表示:边的几何一致性。)
2.2 基于event的空间扫描方法
(1)通过event反投影 的 特征-观察光线:光线密度高的地方对应着特征点。
(2)将包含3D场景的体积离散化,并使用DSI计算通过每个体素的观察光线的数量
(3)通过最大化光线密度函数,决定场景结构
下面就这三方面进行详细说明:
(1)其中,x,y是像素坐标,t是时间,p是亮度的极性。
使用DVS输出的event流{ek},作为类点特征,输入到变换的DSI中。
每一个event ek,根据 tk 时刻的DVS的视点进行反投影。下面左图是传统的MVS方法的反投影步骤,右边是基于event的反投影步骤。
基于event的反投影无明确的数据关联,通过分析高密度区域可以得到空间点位置。
(2)离散化包含3D场景的体积,使用DSI计数 通过每个体素的可见光的数量。
为了实现场景的可缩放,我们沿着DVS轨迹将包含3D场景的体积切分为更小的体积,计算局部3D重建,然后再融合深度图。
如何从event子集中进行局部3维重建?
首先创建一个 [位于参考视点] 虚拟相机;
在体积V中定义一个DSI,( DSI使用像素宽高 和 深度平面进行定义:w x h x Nz )
函数 f(X)=经过每个体素中心的反投影光线的数目。(体素光线的角点,2步就能算出来)
(3)通过算光线密度的最大值,检测场景结构
存储在DSI中的光线密度函数 f(X) 可以决定是否有一个3D点出现在每个DSI体素中,从而决定场景的半稠密结构。
f(X)的局部最大值——光线的高密度区域——光线的角点——场景的3D点——焦点区域
两步就可以检测出局部最大值:
(1)在虚拟相机处生成一个稠密深度图Z*(x,y), 通过记录沿每个像素(x,y)的观察光线中的体素行的 [最佳局部最大值] 的位置和大小来确定相关的置信度图c(x,y).
(2)对置信图c(x,y)进行阈值处理,在深度图Z*(x,y)选出最confidence的像素,生成半稠密深度图。
本文使用迭代高斯阈值:
令T(x,y)=c(x,y)*G(x,y)+6, 如果c(x,y)>T(x,y)则选择这个像素(x,y)
(4)从多个参考视图中融合深度图
当到上一个关键参考视图的距离超过平均场景深度的一定百分比时,我们选择一个新的关键参考视图,并使用event子集直到下一个关键参考视图来估计场景的相应半密集深度图。
深度图转换为点云,从孤立点(给定半径内相邻点的数量小于阈值的点云)中清除,并使用虚拟相机的已知位置合并到全局点云中。
----------------------到这里论文的方法已经结束,下面开始整理实验结果
实验分为2部分,一个是真实数据集,一个是合成的数据集。
(1)合成数据集。
使用groundtruth信息,通过event相机模拟器来生成3个合成数据集
空间分辨率是240 x 180.
数据集包含沿着event相机视点的强度图,但是它们在EMVS方法中没有被使用,只是为了帮助用我们的方法获得的半致密深度图的可视化。
下图是测试关于深度平面Nz 去采样DSI的 灵敏度。(d)展示了关于Nz的函数,平均相对深度误差)
之后的深度平面就选择Nz=100进行,下表是实验结果包括平均深度误差,相对深度误差和深度范围等。
(2)真实数据集
DAVIS是包括一个基于帧的相机(24Hz)和一个event传感器(DVS),位于同一像素阵列中,尺寸为240×180。
使用两种方法去提供相机的pose:(1)电动线性滑块,去分析受控实验的性能 (2)基于帧的视觉里程计算法SVO,证明我们的方法在手持(即无约束)6自由度运动中的适用性。
在这一部分展示:EMVS算法有能力重建精确的半稠密场景:(1)HDR(2)高速运动
1.HDR环境:
2.高速运动实验:
EMVS: Event-based Multi-View Stereo 阅读笔记的更多相关文章
- [读论文]Shading-aware multi view stereo
如何实现refine的? 几何误差和阴影误差如何加到一起? 为了解决什么问题? 弱纹理或无纹理:单纯的多视图立体算法在物体表面弱纹理或者无纹理区域重建完整度不够高,精度也不够高,因此结合阴影恢复形状来 ...
- 个性探测综述阅读笔记——Recent trends in deep learning based personality detection
目录 abstract 1. introduction 1.1 个性衡量方法 1.2 应用前景 1.3 伦理道德 2. Related works 3. Baseline methods 3.1 文本 ...
- Wordpress Calendar Event Multi View < 1.4.01 反射型xss漏洞(CVE-2021-24498)
简介 WordPress是Wordpress基金会的一套使用PHP语言开发的博客平台.该平台支持在PHP和MySQL的服务器上架设个人博客网站.WordPress 插件是WordPress开源的一个应 ...
- [学习笔记]编译sensetime发表的Single View Stereo Matching(SVS)遇到的问题
最近在研究用深度学习预测图像深度信息的方法,一开始用的是2017年CVPR上Godard大神的monodepth,代码在这里.这篇文章介绍了利用双目的consistency训练网络以对单张图像进行深度 ...
- 阅读笔记——《How a Facebook rejection pushed me to start and grow a profitable business in 12 months》
阅读笔记——<How a Facebook rejection pushed me to start and grow a profitable business in 12 months> ...
- guavacache源码阅读笔记
guavacache源码阅读笔记 官方文档: https://github.com/google/guava/wiki/CachesExplained 中文版: https://www.jianshu ...
- 3.View绘制分析笔记之onLayout
上一篇文章我们了解了View的onMeasure,那么今天我们继续来学习Android View绘制三部曲的第二步,onLayout,布局. ViewRootImpl#performLayout pr ...
- 4.View绘制分析笔记之onDraw
上一篇文章我们了解了View的onLayout,那么今天我们来学习Android View绘制三部曲的最后一步,onDraw,绘制. ViewRootImpl#performDraw private ...
- 2.View绘制分析笔记之onMeasure
今天主要学习记录一下Android View绘制三部曲的第一步,onMeasure,测量. 起源 在Activity中,所有的View都是DecorView的子View,然后DecorView又是被V ...
随机推荐
- C# sbyte[]转byte[]
http://stackoverflow.com/questions/2995639/sbyte-vs-byte-using-methodssbyte[] orig = ... byte[] arr ...
- [Xcode 实际操作]八、网络与多线程-(25)实现ShareSdk的社会化分享功能
目录:[Swift]Xcode实际操作 完成开发包的安装和配置之后,本文将演示社会化分享功能的具体开发步骤. 在项目导航区,打开并编辑程序代理文件[AppDelegate.swift] import ...
- 第一次运行PHP项目(phpstorm+wampserver)
1.配置环境 1)vcredist_x64,wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b,如下图 (1)安装vcredist_x64 ...
- hyperledger fabric 1.0.5 分布式部署 (六)
如何在相同的peer 节点上创建多个 channel 作者在hyperledger fabric 1.0.5 分布式部署 (五)已经向读者们介绍了一个简单的fabric 的部署流程,那么根据上一篇博客 ...
- C# 基础之构造函数
什么是构造函数? 构造函数主要用于创建类的实例对象,当调用一个构造函数创建对象时,构造函数会为对象分配内存空间并初始化类的成员. 构造函数分为:1.实例构造函数.2.静态构造函数 1.实例构造函数 使 ...
- UVA297:Quadtrees(四分树)
题目描述 四象树是每个内结点均有4个子结点的特殊四叉树,它可用于描述平面上黑白图像.平面上的黑白图像是32行×32列的正方形,每个格子称为1个象素,是最小的图像单位.正方形图像可分成四个相等的小正方形 ...
- 转 Linux SendMail发送邮件失败诊断案例(四)
http://www.cnblogs.com/kerrycode/p/7826036.html
- C#操作Windows用户
首先需要引入System.DirectoryServices.dll using System; using System.Collections.Generic; using System.Dire ...
- I/O————字符流和流的关闭
Reader字符输入流 Writer字符输出流 用于字符的形式读取和写入数据 FileReader与FileWriter分别是Reader与Writer的子类 public class CharScr ...
- log4j日志工具类
/** * log4j日志Util */public class LogUtil { private static Logger logger=null; static{ StackTraceElem ...