1、资料
Kinect有两篇论文,一篇《KinectFusion: Real-Time Dense Surface Mapping and Tracking》偏向学术,另一篇《KinectFusion:Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera》偏向工程实践。
还有官方的PPT,讲的更清楚。
付兴银在泡泡机器人上讲《KinectFusion和ElasticFusion三维重建方法》
官方资料
https://blog.csdn.net/kiara_wei/article/details/70145640
《随机蕨编码在三维重建中的应用——刘洋》中第四章引言有kinectFusion的介绍及改进,及论文引用。
2、CUDA
CUDA可以理解为NVIDIA GPU的c/c++开发套件。
一个线程(thread)处理一个图像的像素或TSDF Volume中一列体素。线程是最小的执行单位。
许多线程组成线程束(warp),每个warp的活跃线程在任意时刻执行相同的指令,但线程的数据可能不同。一般一个warp内含32个thread。一个warp应避免分支指令,尽量执行同样的操作。一个warp分享的是相同的指令。
多个线程组织为一个block,一个block中的线程共享一片shared memory,线程数目上限一般为512或1024,维度为1-3.
显存(global memory),全局访问(包含CPU),片外,不加指定默认存储在这里,容量大,速度慢(相对)
Shared memory,片内,每个block都有自己的仅同一个block下的线程可以访问的shared memory,容量大,速度快(相对)

3、 程序在CPU 上,但CPU调用GPU,所以CPU理解为主机,GPU理解为设备端。数据从CPU到GPU需要“上传”,数据从GPU到CPU需要“下载”,CUDA中提供了API

__host__只能在CPU上调用、运行的函数,就是普通写的函数,CUDA中不加前缀默认为__host__属性;__global__可以在CPU上调用,GPU上运行的函数,__device__只能在GPU上调用和运行的函数,host__不能调用__deviceglobal__和__device__能调用__device

4、流程
kinectFusion首先由图像估计点云和法线,再根据当前的点云、法线和上一帧的点云、法线估计R、T,然后surface reconstruction,最后融合。Kinectfusion主要用深度图,彩色图是用来做表面文理的。

KinectFusion第一步是做金字塔,彩色图像的金字塔,深度图的金字塔,深度图金字塔还要双边滤波去噪点,然后计算深度图金字塔每一层的顶点和法线。
计算顶点就是根据图像像素和相机内参计算在相机坐标系下的点。
计算法线,采用计算点左右上下的四个点,连线做叉乘。


求位姿采用ICP方法,对金字塔每一层从顶层到底层均要迭代计算,每一层计算过程一样,下面红色框内是每一层的步骤。顶层计算得到的位姿粗糙,但可以作为下一层计算的初始值。
计算考虑每一帧和上一帧之间的移动很小
point-to-plane的清晰推导在B站的计算机视觉life中《KinectFusionLib代码详解下》

kinectFusion的点云模型存在于显存,由于显存空间有限,使得kinectFusion支持的建模受限。
5、kinectFusion有许多实现,包括OpenCV4和PCL、KinectFusionLib。KinectFusionlib运用许多新的C++的新特性,看着舒服。KinectFusionlib只是一个库,需要搭配kinectFusionAPP使用。
kinectFusionlib中的CUDA文件先通过nvcc编译成一个中间库,KinectFusionlib中的C++(CPU)文件通过g++编译成另一个库,通过kinectFusionlib把两个连在一起形成一个库,KinectFusionAPP中的C++文件(CPU)通过g++编译,最有KinectFusionAPP调用kinectFusionlib库和KinectFusionAPP中的C++文件(CPU),很多算法都是这样,CUDA单独编译成一个库,然后调用。
KinectFusionApp:https://github.com/chrdiller/KinectFusionApp
KinectFusionLib:https://github.com/chrdiller/KinectFusionLib
KinectFusionLib代码注释:https://github.com/DreamWaterFound/KinectFusionAppLib_comments
6、位姿估计时,将当前帧以位姿初始值,转换到上一帧的视角下,计算数据关联。
7、相机在volume前面

8、TSDF值

9、raycast

KinectFusion相关推荐

  1. KinectFusion基于深度的实时稠密三维重建TSDF开山之作

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨安如夏@知乎 来源丨https://zhuanlan.zhihu.com/p/281482545 ...

  2. KinectFusion简介

    KinectFusion是微软在2011年发表的一篇论文里提到的点云重建的方法,论文题目是:KinectFusion: Real-Time Dense Surface Mapping and Trac ...

  3. KinectFusion——微软基于KINECT的实时三维重建项目(KINECT)

    微软正在进行一个名为KinectFusion的项目.目标是利用一台围绕物体移动的kinect实时重建物体的三维模型.(是不是可以理解为Kinect版本的SLAM?)不同于的简单的三维点云的拼接,该项目 ...

  4. 三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)

    KinectFusion算法原理依据2011年发表的Fusion重建的论文,主要重建方法为TSDF算法,并在GitHub上开源了相关代码,可以直接编译使用.Github: https://github ...

  5. Kinect-Fusion解读

    原文链接:KinectFusion: Real-time dense surface mapping and tracking | IEEE Conference Publication | IEEE ...

  6. KinectFusion原理介绍

    KinectFusion原理介绍 1 简介: 2 基础知识 2.1 点云(Point Cloud) 2.1 TSDF(Truncated Signed Distance Function)地图 3 原 ...

  7. Kinect与KinectFusion重建

    有关Kinect应用开发正日新月异,稍有懈怠就会被远远甩在身后.不过,Kinect目前带给我们的仍只是一个充满无限可能的远景,正如App store能吸引年仅11岁的开发者一样,Kinect未来将对& ...

  8. 三维重建KInectFusion 学习笔记

    目录 KInectFusion实战笔记 有icp 步骤和条件: 从零开始复现实时三维重建KInectFusion KInectFusion实战笔记 有icp KinectFusion实战笔记_kine ...

  9. kinectfusion解析_KinectFusion介绍

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

  10. kinectfusion的详细介绍

    转载:https://blog.csdn.net/eric_e/article/details/81008437 最近一直在做dynamicfusion所以也查看了下kinectfusion 很经典的 ...

最新文章

  1. ACM模板--邻接表 无向图 Prim Kruskal Dijkstra
  2. 串口通信模块3:串口通信编程基础(读写、关闭)
  3. uva 10271——Chopsticks
  4. [Android源码]Android源码之高仿飞鸽传书WIFI热点搜索与创建(一)
  5. 微型计算机方面的论文,微型计算机论文.doc
  6. 作者:王建新(1969-),博士,中南大学信息科学与工程学院教授,中国计算机学会高级会员。...
  7. 配置tomcat 7控制台账号
  8. tensorrt安装_基于TensorRT的BERT推断加速与服务部署
  9. linux环境配置sonarqube
  10. Node.js:npm下载很慢,设置国内淘宝镜像
  11. 基础知识(四)C++常用函数.txt
  12. 【 PG 入门系列 】PostgreSQL的客户端工具(五)
  13. 分布式室内空气质量监测系统设计
  14. 基于STM32(F103ZE)的LD3320语音控制系统
  15. 计算机组成原理期末复习
  16. 最简单小米设备怎么不root激活xposed框架
  17. Python爬虫实战 | 利用多线程爬取 LOL 高清壁纸
  18. 跨境电商如何搭建独立站?
  19. Python爬虫之bili站的正确打开方式
  20. Android textview设置ttf字体库本地库和网络库使用的两种方式

热门文章

  1. PTA创建视图,包含商品打折前后的价格信息
  2. 计算机无法为u盘保存所有数据,U盘不能写入数据怎么办
  3. python操作excel表格【自定义表格样式基础】
  4. Linux学习(2)---绝对路径和相对路径
  5. PCB电路板EN 45545-2:2020最新标准的测试要求
  6. oracle 挖掘日志,使用Oracle的Logminer工具进行日志挖掘
  7. XSS线上靶场---haozi
  8. 科技爱好者周刊(第 194 期):悲观者正确,乐观者成功
  9. 融入动画技术的交互应用——简单弹幕游戏
  10. php日期函数实际应用,PHP日期函数的使用介绍