qianyi-zhou offline RGB-D 三维重建(1)
来源:互联网 发布:人工智能医疗大会 编辑:程序博客网 时间:2024/05/20 05:29
写在前面
微软 Kinect 出来以后,大多数人都做实时三维重建,qianyi-zhou做离线的三维重建,离线的三维重建对于算法的实时性没要求,重建的精度自然要高。先看下zhou大牛近几年在离线三维重建领域发的论文:
“Robust Reconstruction of Indoor Scenes”
“Depth Camera Tracking with Contour Cues”
“Color Map Optimization for 3D Reconstruction with Consumer Depth Cameras”
“Simultaneous Localization and Calibration: Self-Calibration of Consumer Depth Cameras”
“Elastic Fragments for Dense Scene Reconstruction”
“Dense Scene Reconstruction with Points of Interest”
两篇一区,四篇顶会!
project 主页
http://qianyi.info/scene.html
读完zhou的这几篇论文,感觉他离线重建是在围绕一个思路在做,三维重建或者SLAM随着相机的移动,轨迹的累积误差会逐渐增大,SFM或者SLAM的后端优化,通常会有一个全局的优化,通过优化全部帧的位姿把求解的累积误差摊开,而zhou的思路不是这样的,zhou的思路是相机移动距离很大的时候累积误差会很大,但是当移动距离小的时候累积误差并不大,那好,我把整个图像序列划分成好多个小块,每个小块几十帧图像,划分的小快间会有重叠的图像。每个小块单独重建,小块内几十帧图像的重建累积误差会很小,重建完之后再根据每个小块重叠的部分将小块配准,计算小块间的位姿变换,再根据位姿变将小块融合到一起重建完整的三维模型。
先从最早的 13 年的文章说起,后面再介绍其它文章。
“Dense Scene Reconstruction with Points of Interest”
这篇文章的思路是,对于输入的图像序列检测兴趣点,兴趣点是在扫描的时候重点关注的地方,如下图中重点扫描的地方是人的雕塑。然后根据检测出来的兴趣点,将整个图像序列划分成
1、检测关键点
作者首先用现有的三维重建/SLAM算法对于序列图像进行配准,在序列图像中均与抽取一些 3D 点,根据配准计算得到的位姿,将3D点变换到同一个坐标系,变换到同一个坐标系后,根据3D点用RANSAC算法那抽取主平面,最后根据主平面上的点计算兴趣点,计算兴趣点用的是 mean shift 算法。
2、轨迹分割
计算得到兴趣点后,根据兴趣点将整个轨迹进行分割,分割的依据是如果帧和兴趣点比较相近,则将帧归为兴趣点所在的 fragments,分割还会得到的 fragments 之间的连接段 segments,既这些帧和所有的关键点都离得不近,轨迹分割用的是图割算法。
3、two pass 配准
前面说过,作者对每个 fragment 和 segment 进行两次独立配准,第一次配准对于每个 fragment 和 segment 会分别重建三维模型,第二次将每一帧和重建的三维模型再配准,得到的更加精确的位姿,第二次配准只是为了得到精确位姿,不重建三维模型。
4、全局位姿优化
作者对于没对 fragments 用 ICP 算法检测回环,并且将回环建立的约束和前面 two pass 配准前后帧之间的建立的约束放到一起,用 g2o 算法优化。优化的时候在同一个 fragments 内的约束作为硬约束(权值无穷大),其它约束作为软约束(前后帧约束设为单位权重,回环约束权重设为100)。通过这种方式,可以保持 fragments 内优化对于 pose 没影响(因为 fragments 内配准帧数少,累积误差本身就小,不用优化),优化改变 segments 帧间的 pose,segments 在重建时是不重要的区域。
5、融合重建
融合的时候同 KinectFusion 算法,博客地址(http://blog.csdn.net/fuxingyin/article/details/51417822)也是加权融合。不同的是由于 segments 和 fragments 会有重合,在融合 segments 帧时,这里会把 segments 部分的权值减小,这样来减弱 segments 和 fragments 重叠部分对于 fragments 重建影响。
再讲讲zhou另一个比较相关的工作
“Robust Reconstruction of Indoor Scenes”
前面讲的那篇论文,过程有些复杂,这篇文章思路相对较简单。“Dense Scene Reconstruction with Points of Interest”思路是保证在兴趣点周围累计误差小,并且用全局的优化把各个 fragments 整合到一起。这篇文章的思路是直接将整个图像序列划分成等大小的小块,每个小块50帧图像,将这些小块独立进行重建,然后将重建好的小块两两配准,并且在小块间检测回环,由于检测出的回环准确率非常低,作者最后用优化的方式去掉错误的回环。
1、局部小块重建
作者将图像序列等大小划分成 fragments,每个 fragment 50 帧图像,然后将每个 fragment 单独重建,由于每个 fragment 帧数很少,从而基本没有累积误差。
2、geometric 配准
作者用三维特征将 fragments 两两进行配准,配准的目的是检测回环(两个 fragments 有重叠的部分),作者还做实验比较了当前几个三维特征配准算法,利用三维特征配准检测出的回环准确率是非常低的,小于20%。
3、robust 优化
这里优化的目的在于检测出来错误的回环,优化的目标函数如下:
公式里面
但是,这里优化的目的不是为了优化每个 fragments 的位姿
这个式子中优化项多了一项,
上式中
通过对(2)式用 g2o 优化得到
作者实验验证通过这种方式可以将回环的准确率提高到 95% 以上,检测错误回环是作者这篇论文的核心工作。
- qianyi-zhou offline RGB-D 三维重建(1)
- qianyi-zhou offline RGB-D 三维重建(2)
- RGB-D 实时三维重建/SLAM 中的 ICP 算法解析
- 从照片的三维重建(3D Reconstruction)——MVS系列(1)
- RGB-D
- offline日志分析(1)
- 从照片的三维重建(3D Reconstruction)(1)——获得Camera parameter & Intrinsic Matrix & K
- 【转】一起做RGB-D SLAM (1)
- 一起做RGB-D SLAM (1)
- 一起做RGB-D SLAM (1)
- 一起做RGB-D SLAM (1)
- 一起做RGB-D SLAM (1) 前言
- 一起做RGB-D SLAM (1)
- 一起做RGB-D SLAM(1)
- RGB-D(深度图像) & 图像深度
- 一起做RGB-D SLAM(6)
- 一起做RGB-D SLAM(8)
- 基于RGB-D数据的人体检测(People detection in RGB-D data)
- 今目标的高效利用
- bit与byte的转换
- 数据库key
- 1. Two Sum
- SPI flash原理
- qianyi-zhou offline RGB-D 三维重建(1)
- JAVA锁和同步
- 2016级计算机C++助教工作(7)第一次上机题
- byte和char的区别
- Problem 2 Even Fibonacci numbers (fibonacci 数学规律)
- ubuntu系统使用dnw下载程序
- git简介和使用/git的cmd命令/git界面使用
- linux内存管理-分段管理
- Android LayoutInflater.inflate()方法的参数用途