第一篇基于RGB-D相机实时稠密三维重建的论文。

​ 过程梳理:对于上一帧的最后,生成一个Surface Prediction,当前帧深度图输入,由深度图生成Surface Measurement,通过Surface Prediction和Surface Measurement使用icp进行配准估计位姿,更新和融合全局TSDF。

表面测量

​ 通过当前原始的深度图生成分层稠密的顶点图和法向量图。

  1. 首先对当前帧的深度图进行双边滤波;

  2. 利用深度图信息生成当前帧的点云图;

  3. 点云图中三个点确定一个平面,利用叉乘算出这个平面的法向量,并归一化。

  4. 对深度图进行分层,最底层是原始的双边滤波深度图,每高一层,用块平均把分辨率降低一半,这里平均的深度是距离中心坐标不超过3σ3\sigma3σ。然后计算相应的法向量图。

表面更新

​ 将当前帧生成的表面融合到全局模型中。

​ 对于当前帧深度图,和当前位姿,建图就是通过TSDF融合增量的过程。TSDF模型如下简单介绍,

将要重建的场景放到这个大长方体中,每一个小正方体代表一个体素,每一个体素都有一个TSDF值,和一个权重w。

现在要做的就是,对计算每一个体素的TSDF值和权重,首先计算SDF等于相机到实际表面的距离减去相机到体素的距离,即体素到表面的距离。如果值为零或者接近零,则这个体素代表实际表面上的点。

T为截断的意思,SDF值超出一定范围,就将其置正负1。

论文中每个体素p用距离F和权重W来表示。

深度传感器测量的深度假设有误差正负uuu,经过光心的射线viewing ray,离相机光心的距离r,当前测量的深度R(u),如果r<(λRk(u)−μ),λ=∥K−1u∥2r<( \lambda R_k(u)-\mu),\lambda= \left \| K^{-1}u \right \| _2r<(λRk​(u)−μ),λ=∥∥​K−1u∥∥​2​ ,这个范围里都是空闲空间,这个范围的体素SDF值被截断,反之,则是不可观测到的空间,这个范围的体素不参与融合。

论文中计算距离公式

解释如下

体素的权值为cos⁡(θ)/Rk(x)\cos(\theta)/R_k(x)cos(θ)/Rk​(x),这里的θ\thetaθ是viewing ray 与 实际表面的夹角。实际发现,将所有权值置为1,也可以有很好的重建结果。

融合公式

上面计算SDF值时用的深度值是原始深度图的值,而不是使用经过双边滤波后的。

表面预测

​ 对当前帧生成一个表面。当前时刻的预测图是通过上一时刻构建完成的TSDF模型获得,对于知道当前时刻的位置,通过光线透射方法获得当前时刻相机能够观测的场景,(对当前时刻每个像素发出一条光线,方向是Tg,kK−1uT_{g,k}K^{-1}uTg,k​K−1u ),遍历这条路径上的体素,存储体素为零的点,或者当体素值从负到正,也停止搜索,对于搜索出来的点,通过下式计算法向量。(曲面该点的法向量由三个方向的偏导数表示)

​ 预测表面这一步完成一个顶点图(点云图),和对应的法向量。

位姿估计

​ 对当前帧生成的测量表面与预测表面进行icp配准,估计当前帧的位姿。假设两帧之间的相对运动很小,利用上一帧的位姿作为当前帧的初始值,然后通过初始位姿进行投影,找到测量表面和预测表面之间的数据关联(有深度测量,坐标相近,法向量相近),然后进行点到面的icp。

习以为常的点到面icp误差项

参考

KinectFusion

TSDF参考

参考博客
参考博客

KinectFusion 解析相关推荐

  1. kinectfusion解析_KinectFusion介绍

    KinectFusion 介绍 KinectFusion简介 KinectFusion是微软在2011年发表的一篇论文里提到的点云重建的方法,论文题目是:KinectFusion: Real-Time ...

  2. kinectfusion解析_2019/02/09 对于KinectFusion 的理解

    网上有很多关于Kinect Fusion 的详细介绍,包括各个部分的算法,思路,以及应用上的限制和优化. 在此就不多介绍了. KinectFusion 提供了非常基础的用RGB-D 相机实现的 Den ...

  3. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

  4. 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势

    SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为"同步定位与地图构建",它主要用于解决机器 ...

  5. TSDF算法原理及源码解析

    1. 先看效果 参考源码: https://github.com/andyzeng/tsdf-fusion-python 从图中可以看出,tsdf算法的重建效果还是不错的.该算法是很多牛掰3D重建算法 ...

  6. SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势

    最新人工智能论文:http://paperreading.club SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文 ...

  7. SLAM算法解析 抓住视觉SLAM难点,了解技术发展大趋势

    SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为"同步定位与地图构建",它主要用于解决机器 ...

  8. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  9. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

最新文章

  1. php gbk字符串 存utf8 html,php utf8 gbk 数组 互转(示例代码)
  2. 如何连接两个窗口JAVA_java-如何连接两个ArrayLists?
  3. QT的QGLWidget类的使用
  4. D-query SPOJ - DQUERY(主席树求区间中不同的数的个数)
  5. 第二十七期:德国工业4.0眼里“工业互联网”与“智能制造”
  6. discuz x2.5用户注册后邮箱认证后无法收到邮件或者直接进垃圾箱
  7. 极限编程创始人Ron Jeffries建议开发者放弃敏捷
  8. org.apache.commons.lang.StringUtils中常用的方法
  9. tp3.2 生成二维码
  10. error: implicit declaration of function ‘RAND_egd’ [-Werror=implicit-function-declaration]
  11. docker的离线安装方法和网络源安装方法、内网环境linux脚本批量安装docker、安装docker-compose
  12. Android隐藏app应用图标
  13. matlab中ode指令,在Matlab中使用ODE选择步长
  14. 小米进入发展关键期,雷军为5G而战
  15. (python) 1200000有多少个约数(只计算正约数)
  16. Oracle Dataguard 介绍
  17. 一个简单的GNS3拓扑结构(两台虚拟PC)
  18. Windows上哪款卸载软件最值得推荐?
  19. Scrapy爬虫入门教程五 Selectors(选择器)
  20. java按钮按行放置_java 放置按钮

热门文章

  1. pythonrandint用法_Python:randint()用法
  2. 申请Azure第三方登录
  3. 2021陇剑杯 线下记录
  4. 大连大学计算机技术考研复试题目,复试十个,录取九个,刷一个,竟是我
  5. 你不会还以为“”前后判断条件可以随便放吧?哭死
  6. 华为老员工:为何我二十年专心做技术,不转岗做领导?
  7. matlab对话框设计,MATLAB程序设计教程(11)——MATLAB图形用户界面设计
  8. Cannot run program “sh“ 的解决
  9. 生成Swagger2静态文档
  10. SpringBoot使用swagger-spring-boot-starter maven依赖包实现Swagger2