KinectFusion 介绍

KinectFusion简介

KinectFusion是微软在2011年发表的一篇论文里提到的点云重建的方法,论文题目是:KinectFusion: Real-Time Dense Surface Mapping and Tracking。点云是用Kinect采集的,然后算法把这些点云注册对齐,融合成一个整体点云。

Kinect是一个RGBD扫描仪,它可以同时采集彩色图像和深度图像。这是第一代Kinect和第二代Kinect的外观比较。

Kienct每秒可以获取30帧的RGBD图像,光线暗的情况下帧率会下降一些。

你的浏览器不支持Video标签, 请换一个浏览器,比如Google浏览器

这是一个典型的KinectV2的数据。左边是带颜色的点云,右边的点云去掉了颜色,并且计算了法线信息。KinectFusion处理的是深度数据,像右边这种没有带颜色的点云。Kinect数据的详细介绍可以参考专题 Kinect数据

KinectFusion的核心有两个技术,一个是ICP注册,一个是符号距离函数。它的思路是一边注册,一边融合。由于是深度视频,帧与帧之间的位置差别不大,点云可以看作是初始注册好的,所以可以直接应用ICP进行精细注册。融合采用了符号距离函数技术,它在空间中定义了一个曲面的距离场,0等值面则为测量的曲面。

KinectFusion算法

下面介绍一下KinectFusion的算法步骤:

1. 生成三维点云:Kinect采集的原始数据是深度图像,可以用KinectSDK把深度图像转化为三维点云。

2. 点云预处理:预处理包含很多可选的算子,比如法线计算,点云范围裁剪(有些扫描仪在一定范围内的误差是可以接受的,故可以剔除掉误差范围大的区域),去噪(低精度的扫描数据可以去噪提高注册稳定性),边界点剔除(边界点的误差通常很大),孤立项剔除(孤立项的误差通常也很大)等。

3. 点云位姿估计:KinectFusion是一边注册,一边融合,所以它会维护一个当前融合的整体点云,记为PointCloud。新扫描的点云Depth,就是与PointCloud进行ICP注册。ICP注册的详细介绍可以参考专题 点云ICP注册。

4. 点云融合:Depth与PointCloud注册好以后,它会与PointCloud再进行融合,更新PointCloud。

5. 整个扫描过程,每帧的点云重复步骤1-4,最后就得到一个整体点云PointCloud。

符号距离场函数(Signed Distance Function)

符号距离场函数,简称SDF,源自1996的一篇Siggraph论文:A volumetric method for building complex models from range images

SDF是定义在三维空间中的一个函数,它度量了空间点到曲面的距离。距离为0的点即为曲面上的点。我们把SDF离散化,定义在空间体素上。每个体素有三个变量:D,W,Flag。其中D为体素到曲面的距离值,W是权重,Flag是体素是否有效。

下面介绍点云如何融入SDF:点云是相机在某个视角下观察采集到的,如左图所示。单从一个视线观测一点来分析,如右图所示,这个视线上的点到曲面的距离可以定义如下,视线方向上,观测点前面的距离为负,观测点后面的距离为正。由于SDF是定义在空间中的体素里,我们这里也把距离离散化到体素里,其中d是体素宽度。由于系统误差的存在,我们给这些体素值一个权重,越靠近点云的体素权重越大。

点云注册后,不断的往SDF里进行融合更新,最后把SDF的0等值面提取出来,就是融合的点云了。

SDF把点云通过距离函数的形式,离散化到空间体素里。而它的精髓在于给距离函数定义了一个范围,这个范围使得距离函数有了一定程度的光滑性。因为Kinect数据精度是很低的,两次观测的点云,会有很大的误差,如图所示。多个点云融合在一起,如何达到平均的效果,就是通过平均距离函数来实现的。我们知道,光滑函数的叠加,也是一个光滑函数。所以,每个距离函数光滑化以后,使得融合后的距离函数也是光滑的。而这个光滑性,就使得融合点云是光滑的,并且一定程度上能消掉点云重影。

KinectFusion算法分析

下面点评一下KinectFusion算法:

KienctFusion属于SLAM前端,高质量的点云重建还需要加入后端全局优化

KienctFusion注册时采用了Frame-to-Model的方式,也就是采集的点云与SDF融合的点云进行注册。有时候也可以用Frame-to-Frame的方式,也就是点云与前帧点云进行注册。这样速度可以更快一些。

点云注册只应用了深度图像,这个算是一个优点,比如有些场景下只有深度数据。有些时候,扫描对象的几何特征不明显,如果能借助彩色图像的辅助,点云注册可以更加的稳定。

点云融合的时候,KinectFusion采用了SDF技术,它擅长融合低精度数据,但是开销还是比较大的。可以采用一些性能高的融合方法来替换SDF。

原论文里面采用了GPU加速来达到实时。根据现在的CPU性能,其实是不用GPU辅助就能达到实时的。

KinectFusion算是三维SLAM前端的一个开始,之后出现了大量的三维SLAM前端方案,都是解决一些实际的问题,比如采集数据的质量差;扫描对象的特征不明显,这个特征包括几何特征和颜色特征;大数据量导致的质量和性能的平衡;多传感器的融合;面向移动设备的处理等。

kinectfusion解析_KinectFusion介绍相关推荐

  1. .NET:命令行解析器介绍

    背景 经常需要开发一下小工具,之前都是自己解析命令行参数,接触过动态语言社区以后,发现命令行解析有特定的模式和框架可以利用,本文介绍一个 .NET 平台的类库. 示例 需求 拷贝文件,如:CopyFi ...

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

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

  3. KinectFusion 解析

    第一篇基于RGB-D相机实时稠密三维重建的论文. ​ 过程梳理:对于上一帧的最后,生成一个Surface Prediction,当前帧深度图输入,由深度图生成Surface Measurement,通 ...

  4. Learning Memory-guided Normality for Anomaly Detection 论文解析——模型介绍

    Learning Memory-guided Normality for Anomaly Detection论文模型介绍 本文为对 Learning Memory-guided Normality f ...

  5. linux优化网页加载过程,HTML页面加载和解析流程 介绍

    1.浏览器加载和渲染html的顺序 1.1.IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的. 1.2.在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相 ...

  6. kinectfusion的详细介绍

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

  7. java fixflow流程设计_Fixflow引擎解析(一)(介绍) - Fixflow开源流程引擎介绍

    简介 Fixflow是一款开源的基于BPMN2.0标准的工作流引擎,由Fixflow开源联盟组织(Fixflow OpenSource Union) 进行社区化管理,引擎底层直接支持BPMN2.0国际 ...

  8. Gerber文件解析软件介绍(RS-274G-code)

    Gerber文件:test-image-offset-2.gbx 用记事本打开如下 G04 Test image offset uses current units * G04 Crosshairs ...

  9. 跨境电商小白开店必看——亚马逊从里到外全面解析+站点介绍

    5G时代已经来临,互联网的高速发展,导致国内电商市场愈加饱和,国内卖家纷纷转型做Amazon(亚马逊),今天带大家了解下亚马逊有关的知识点. 一.亚马逊运营模式 亚马逊(FBM) 自发货模式 自发货就 ...

最新文章

  1. struts 文件下载
  2. Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
  3. 为SAP Spartacus安装后台必须的Commerce Cloud
  4. 如何给FormPanel表单中的元素赋值以及获取表单元素值
  5. Java Message System简介
  6. JAVA中修改顺序表中的元素_java – 在列表中查找元素并使用stream()更改它
  7. Java笔记04-核心类库
  8. 俄罗斯方块---九宫格版
  9. goto php 源码,GoToPHP
  10. python输出隔4个字符_python怎么实现每隔几个字符分割
  11. Ubuntu安装minicom串口工具
  12. Java加密压缩文件
  13. windows环境elasticsearch安装IK分词器
  14. Java复习题及答案
  15. IE-LAB网络实验室:华为培训中华为数通HCIE考试流程
  16. DhtmlGantt案例-弹窗lightbox自定义字段
  17. RabbitMQ使用教程(超详细)
  18. 从零开始学习Prometheus监控报警系统
  19. C/C++编程学习:百行代码实现小游戏(剪刀石头布)
  20. 华为交换机dhcp获取不到_华为S7706交换机DHCP Server 配置不成功问题

热门文章

  1. 在windows上编译apr库apr-util库
  2. ISCC 2022 wp
  3. 【手把手制作三阶魔方模拟器】用MATLAB让你的魔方动起来
  4. 小米删除了文件无网络无服务器,小米手机里的文件删了怎么恢复?超详细解决方法...
  5. 如何把一张照片的像素提高_如何提升照片的像素?
  6. 默纳克调试说明书_默纳克NICE3000调试使用说明(修改版)
  7. mysql 32位4g存储_基础 - 32位操作系统最多只支持4G内存。
  8. mysql 微信用户昵称 emoji 完整保存
  9. 2033-人见人爱A+B(java)
  10. mysql特殊符号无法储存_解决MYSQL数据库无法保存emoji表情及特殊符号问题