目录

1. 三维重建概述

2. 现有系统简要对比

2.1 VisualSFM

2.2 Meshlab

2.3 Colmap

2.4 Bundler

2.5 CMVS

2.6 MVE

2.7 MVS-Texturing

2.8 OpenMVG

2.9 OpenMVS


1. 三维重建概述

我们知道,照相机/摄像机的原理是将一个三维场景或物体投影到二维平面上,过去是胶片,现在是经过感光元件再记录到存储器。降维的过程通常不可避免地会存在信息的损失,而所谓的重建(Reconstruction),顾名思义就是要从获取到的二维图像中复原原始三维场景或物体。

相对照相机的诞生,三维重建的概念本身说年轻也算年轻;但相比从2012年开始比较火的深度学习、神经网络等概念,三维重建也算是古老的研究领域了,因为第一个基于图像的三维重建系统诞生于1992年(CMU的Tomasi等人的工作)。

三维重建的流程大致如下:

  • 首先,通过多角度拍摄或者从视频中提取得到一组图像序列,将这些图像序列作为整个系统的输入;
  • 随后,在多视角的图像中,根据纹理特征提取出稀疏特征点(称为点云),通过这些特征点估计相机位置参数
  • 在得到相机参数并完成特征点匹配后,我们就可以获得更稠密的点云(这些点可以附带颜色,从远处看就像还原了物体本身一样,但从近处能明显看出它们只是一些点);
  • 最后根据这些点重建物体表面,并进行纹理映射,就还原出三维场景和物体了。

概括起来就是:图像获取->特征匹配->深度估计->稀疏点云->相机参数估计->稠密点云->表面重建->纹理映射

目前已有不少免费系统(部分系统已开源)能够完成三维重建的整个流程,在深入研读某一个系统的代码之前,我决定先根据前人资料横向比较一下这些系统的异同。除了亲自运行了几个系统外,主要参考了这个视频的讲解(需要科学上网),以下内容的部分截图也出自这里。感谢视频原作者和以下每个系统的创造者。

2. 现有系统简要对比

以下对比图,相比原文有改动。

图中从左至右的过程依次是从原始图像到稀疏点云、重建稠密点云、重建表面和纹理映射。对应列的绿色代表该系统具备此功能,白色反之。

2.1 VisualSFM

A Visual Structure from Motion System

  • 是否开源:
  • 文档:小规模 (5k词左右)
  • 兼容性:兼容OS X/Windows/Linux
  • 主要特性:完成从图像到稠密点云的重建过程,值得注意的是,VSFM系统的输出可以放入CMP-MVS(Multi-View Reconstruction Preserving Weakly-Supported Surfaces, CVPR 2011),MVE(by Michael Goesele’s research group),SURE(by Mathias Rothermel and Konrad Wenzel), MeshRecon(by Zhuoliang Kang)等系统中进行后处理(如稠密重建)。

视频中展示的稠密点云精度比较高,但构建速度较慢(讲解者在重构一个人形塑像时用了1小时40分钟)。

配置相关

VisualSFM下载官网:http://ccwu.me/vsfm/

CMVS-PMVS下载:https://github.com/pmoulon/CMVS-PMVS

配置:将下载好的文件解压,把toolkit\PMVS2\binariesWin-Linux\Win64-VS2010下的所有文件,全部拷贝到与VisualSFM.exe的相同根目录(toolkit\VisualSFM_windows_cuda_64bit)下即可使用,VisualSFM在运算过程中会自动使用PMVS/CMVS。

2.2 Meshlab

the open source system for processing and editing 3D triangular meshes.

  • 是否开源:是
  • 文档:无详细文档,但有视频教程
  • 兼容性:兼容OS X/Windows/Linux
  • 主要特性:从稠密点云进行表面重建,并完成纹理映射
  • 附加:可选取感兴趣的区域(Region of Interest, ROI)进行编辑,比如降低面片数量、删除区域外的稀疏点等。
  • 此外,诸多其他系统的点云结果可在本系统内查看。(下图红色区域为用户选择的非感兴趣区域,可进行删除)

2.3 Colmap

a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface.

  • 是否开源:
  • 文档:有详细说明,共13章节
  • 兼容性:兼容OS X/Windows/Linux
  • 主要特性:输入多视角图像,输出稀疏点云并估计相机参数后续步骤需基于CUDA实现。采用Patch Match的信息传递策略,采用GEM进行深度估计。
  • 实际体验效果:

可见重建精度还是不错的,并且整体操作上比较快。

2.4 Bundler

Structure from Motion (SfM) for Unordered Image Collections

  • 是否开源:是
  • 文档:小规模(5k词左右),无详细接口说明
  • 兼容性:虽然已发布windows版本,但开发和测试主要集中在Linux平台
  • 主要特性:输入多视角图像,输出稀疏点云并估计相机参数,与Colmap类似,视频显示在实际处理中Bundler速度更快(30-40min)。虽然精度和点云密度不如colmap和visualSFM高,但本系统可以计算相机参数,因此可放入下面的CMVS系统中进行后处理。

下图为bundler处理后的结果(在meshlab中查看),能够明显看到点云密度不高。

2.5 CMVS

Clustering Views for Multi-view Stereo

  • 是否开源:是
  • 文档:小规模,无接口说明
  • 兼容性:有windows版本,linux为命令行版本
  • 主要特性:将SfM系统的输出(稀疏点云)作为本系统的输入,本系统可将输入图像分解成一组可管理大小的图像集群。之后可以使用MVS软件独立并且并行地处理每个集群。本系统应该与SfM软件(例如Bundler)和MVS软件(例如PMVS2)结合使用。

不过视频作者的例子中,bundler的输出放在本系统中作为输入可能会存在问题,使用时还需注意。(下图为meshlab中查看的处理结果,细节丢失较严重)

CMVS-PMVS

CMVS是PMVS的改进版,(里面包含PMVS)是Yasutaka Furukama博士写的已知一组图片和图片对应的相机参数生成dense reconstruction (稠密的三维模型)。

  • CMVS 对影像进行聚簇,以减少数据量;
  • PMVS (the patch-based MVS algorithm)方案负责重建稠密点云、重建表面和纹理映射;通过匹配、膨胀、过滤三个步骤,利用稀疏重建结果将其向空间周围扩散得到有向点云;通过增强光度一致性和满足全局可见性约束两个条件下,完成稠密匹配。

2.6 MVE

a complete end-to-end pipeline for image-based geometry reconstruction.

  • 是否开源:是
  • 文档:中等规模,有示例,有管线说明。
  • 兼容性:windows/OS X均可运行,文档说更推荐用OS X系统。
  • 主要特性:包含了SfM, 点云重建,表面重建。基本上能够完成三维重建的整个流程。
  • 实际体验:已编译运行,未进行完整操作流程。下图为MVE的用户界面

2.7 MVS-Texturing

3D Reconstruction Texturing

  • 是否开源:是
  • 文档:小规模,有用法说明。
  • 兼容性:命令行程序
  • 主要特性:能够完成大规模图像输入的纹理映射。特别是能够在缩放、模糊、遮挡物、曝光变化的情况下完成高质量的纹理映射。最后的效果比较干净

2.8 OpenMVG

open Multiple View Geometry

是否开源:是

文档:大规模,分8个章节。

兼容性:三大平台

主要功能:精确解决多视图几何中的常见问题;保证代码可读性和易用性。负责从原始图像到稀疏点云。

2.9 OpenMVS

open Multi-View Stereo reconstruction library

是否开源:是

文档:中等规模,分5节,逻辑比较顺畅。

兼容性:三大平台均可编译

主要功能:稠密点云重建、表面重建、表面细化、纹理映射。(输入是一组相机姿态加上稀疏点云,输出是一个纹理网格)

  • 1、dense point-cloud reconstruction
  • 2、mesh reconstruction
  • 3、mesh refinement
  • 4、mesh texturing

值得注意的是表面细化(mesh refinement)这一步,是其他系统中比较少见的,效果如下:

虽然OpenMVS和上面的OpenMVG并不是同一个团队所作,但这两个系统恰好一起完成了三维重建的整个流程,可以协同使用。


小结:对比现有若干系统后,我决定从文档较规范的系统入手,仔细挖掘其中的关键函数和对应的作用,试着逐渐理解。比如可视化程度比较好的meshlab,更适合OS X平台的MVE,以及能够配套使用的完整库OpenMVG和OpenMVS。顺便挖一些有价值的论文一起啃。未来几个月的任务仍然艰巨,不可懈怠。

此外,这份文档处于入门级别,仅仅是粗略记录这些系统的功能,方便找到项目地址。仅供参考,欢迎交流。

参考:

  • 对比几个三维重建系统

三维重建_对比几个三维重建系统(大部分开源)相关推荐

  1. 双目三维重建_【光电视界】简单介绍双目视觉三维重构

    今日光电        有人说,20世纪是电的世纪,21世纪是光的世纪:知光解电,再小的个体都可以被赋能.欢迎来到今日光电! ----与智者为伍 为创新赋能---- 1.三维重构 1.1.三维重构到底 ...

  2. python双目视觉三维重建代码_双目立体视觉的三维重建方法与流程

    本发明为双目立体视觉的三维重建方法,属于图像处理与机器视觉领域,涉及halcon软件,具体涉及空间场景的三维重建. 背景技术: 三维重建技术作为计算机视觉领域的一个重要分支,在人工智能.虚拟现实.非接 ...

  3. python opencv 三维重建_三维重建 3D Reconstruction

    建设中,记录日常学习到的碎片,最后整理 什么是三维重建? 这里指的三维重建是基于对环境或者物体的一系列不同角度的照片,通过一系列的处理,获得环境或物体的三维模型. 三维模型的表示方式 点云(Point ...

  4. 结构光三维重建-3D Scanning Software实现三维重建

    结构光三维重建-3D Scanning Software实现三维重建 目录 结构光三维重建-3D Scanning Software三维重建 1. 说明 2.Requirements (1)下载相关文 ...

  5. ppt_第一章_德塔自然语言图灵系统

    开始组织核心ppt文字描述,图片和源码 在书籍中已经很丰富了. 第一章_德塔自然语言图灵系统 第一章_德塔自然语言图灵系统 分词,排序,神经网络索引,搜索,动态 POS函数流水阀门细化遍历 内核匹配, ...

  6. 西北农林科技大学计算机组成原理脱机实验,西北农林科技大学_计算机组成原理XP实验系统要素.ppt...

    西北农林科技大学_计算机组成原理XP实验系统要素 计算机组成原理 TEC-XP机 实验系统简介 TEC-XP实验机 由清华大学专门为大学本科计算机教学实验而研制的16位计算机; TEC-XP机里面配置 ...

  7. 大学计算机实验图灵机模型与计算机硬件,北理大学计算机实验基础 实验一_图灵机模型与计算机硬件系统虚拟拆装-实验报告...

    1.1实验一实验一 图灵机模型与计算机硬件系统虚拟拆装图灵机模型与计算机硬件系统虚拟拆装五.实验报告五.实验报告2222实验名称:学号 姓名 班级: 实验时间:年 月 日 实验报告表 1-1 图灵机模 ...

  8. 汉字拼音计算机,拼音_汉字计算机自动转换系统

    拼音_汉字计算机自动转换系统 夕 年一 月 计 算 机 学 报 第 ! 期 拼音汉 字计算机自动转换系统 凌潘 云杨长 生江大浙学计算机#系 . . % & ( )丫 ) +, ( . %(/ ...

  9. c语言编程银行排队系统,C语言_课程设计银行排队系统.doc

    C语言_课程设计银行排队系统 #include #include #include #include #include #define n 3 int vip1=0; int y,z; float s ...

  10. 积分商城系统开发_专业提供积分商城系统定制解决方案

    积分商城系统开发_专业提供积分商城系统定制解决方案 一.什么是积分商城? 1.积分商城的第一种理解,偏重于"积分".即积分商城是专门为消化"积分"这一奖励而特设 ...

最新文章

  1. android 顺序执行任务
  2. sim卡移动端漏洞解析
  3. npm: 权限阻止修复
  4. linux命令uname
  5. Linux中ping不通外网
  6. Oracle中实现continue的方法
  7. php导入json文件_[php]导入超大json文件
  8. 米斯特白帽培训讲义(v2)实战篇 捷达系统
  9. as android.mk 变色,FFmpeg4Android:AS中使用NDK
  10. 枚举与常量需要注意的一个问题
  11. jQuery 工具方法 (全)
  12. linux下的多线程,linux下的多线程
  13. 好看的个人网站源码_CMS建站,asp cms,cms系统,cms源码,内容管理系统 - 下载列表
  14. 计算机计算公式代码,简单的计算器代码
  15. php ob系列的函数
  16. 希尔伯特变换 matlab,MATLAB的实现Hilbert变换程序_matlab
  17. SPSS独立样本t检验结果分析
  18. 2021-2027全球与中国零售空间规划软件市场现状及未来发展趋势
  19. 三维数组matlab怎么画图,三维数组画图遇到问题
  20. jsp游戏补丁共享网站设计

热门文章

  1. Parse Server(含Dashboard)部署于Centos7.6 64位
  2. linux go环境安装
  3. python 发送email邮件带附件
  4. Gin Web框架简单介绍
  5. Python fullstack系列【2】Python数据类型
  6. 【Python】django安装
  7. libgdx学习记录5——演员Actor
  8. Linux 基本操作命令
  9. C语言动态链表实现KTV点歌系统
  10. 解决Java在请求某些不受信任的https网站时会报:PKIX path building failed