精华内容
下载资源
问答
  • Windows下使用VisualSFM + CMVS/PMVS + MeshLab进行三维重建

    万次阅读 多人点赞 2017-11-06 10:05:27
    Windows下使用VisualSFM + CMVS/PMVS +MeshLab进行三维重建 参考文档: VisualSFM和Meshlab实现三维重建过程:http://planckscale.info/tag/visualsfm/(十分感谢) 数据集: 三维重建数据集:...

    Windows下使用VisualSFM + CMVS/PMVS +MeshLab进行三维重建

    参考文档:

    VisualSFM和Meshlab实现三维重建过程:http://planckscale.info/tag/visualsfm/(十分感谢)

    数据集:

    三维重建数据集:http://vision.ia.ac.cn/zh/data/index.html


    一、简介

    要想了解从照片如何一步步重建出三维模型,并能操控某些过程,可用的免费开源软件也不少,较常用的是VisualSFM和Meshlab:

    第一步:VisualSFM

    VisualSFM软件允许我们上传一系列图像,它从这些图像中找到每一个图像的特定特征,利用这些特征信息重建出3D模型的稀疏点云,而后还可进行稠密点云重建。

    输入: 围着要重建对象拍摄的一系列照片;

    输出: 一个.out文件,存储着每个相机的位置及重建出的稀疏点云;

    一个.ply文件,存储着由稀疏点云重建出的稠密点云

    第二步:Meshlab

    可用Meshlab对3D网格/点云做各种操作。输入VisualSFM的生成文件,Meshlab通过一系列操作可创建出包含纹理的、干净的、高分辨率的网格,并自动计算UV映射及创建纹理图像。

    输入: VisualSFM的生成文件,.out文件和list.txt文件(存储照片序列); 以及.ply文件;

    输出: 一个.obj文件,3D模型的网格;

    一个.png文件,任意大小的纹理图;

     

    二、源码下载

    一共用到三个软件包,我将这三个软件包都放在了一起,可以用这个,就不用每个都单独下了。链接:http://pan.baidu.com/s/1kVDtWhD密码:tngq

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

    我这里还有已经配置好的windows 64位的visualSFM文件,如果是64位的win用户可以直接拿来用,不用再配。链接:http://pan.baidu.com/s/1nvsXdEh

    密码:zs7w

    另外VisualSFM.exe可直接运行,无需安装。

    至于每个软件单独下载的网址,我放在最后的补充上了。

     

    三、开始三维重建

    第一步:运行VisualSFM

     

    (1)按图中1所示,首先打开使用的图像,输入一系列图片。

    (2)按图中2所示,进行SIFT特征点检测和匹配。

    (3)按图中3所示,利用SFM进行相机参数的确定以及稀疏点云的重建。

    (4)按图中4所示,利用CMVS/PMVS进行稠密点云的生成。

    下面是具体流程以及截图:

    1、输入一系列图片

    按图中1所示,首先打开使用的图像,输入一系列图片。注意要以待重建的对象为中心,围着它每转10-20度拍一张,这样转一圈,有不同高度信息更好。VisualSFM没有照片数量限制,照片越多,重建出的细节越丰富,但重建过程花费时间越长。


    2、特征检测及匹配

    按图中2所示,进行SIFT特征点检测和匹配。因照片可能存在旋转、缩放或亮度变化,此过程利用SIFT算法提取、描述特征,用 RANSAC算法过滤掉误匹配。此过程亦可利用GPU加速。工作状态实时显示在侧边的log窗口。


    3、利用SFM进行稀疏3D重建

    利用 SFM 方法,通过迭代求解出相机参数和三维点坐标。即重建出3D模型的稀疏点云。若有“bad”相机(位置错误或朝向错误),结合工具栏上的“3+”按钮和手型按钮即可删除之,使结果更准确。


    4、利用CMVS/PMVS进行稠密3D重建

    通过 CMVS 对照片进行聚类,以减少稠密重建数据量,而后利用PMVS从3D模型的稀疏点云开始,在局部光度一致性和全局可见性约束下,经过匹配、扩散、过滤生成带真实颜色的稠密点云。(下图为用Meshlab查看效果图)


    至此,VisualSFM的工作就完成了,结果都已存盘。若因图片匹配失败或图片较少导致某区域重建失败或重建出的某区域细节不足,可以返回添加一些这个区域的照片,重新来过。但因特征检测和匹配的结果已存盘(每张图像对应的.sift 和 .mat文件都已经生成),所以已经匹配好的图像不必再次匹配,会更快完成。

     

    第二步:运行Meshlab


    (1)按钮1,打开VisualSFM的生成文件(.out文件和list.txt文件)。

    (2)按钮2,打开显示层目录,检测相机载入是否正确。

    (3)按钮3,隐藏可视的稀疏点云。

    (4)按钮4,选中杂点区(选中的杂点变为红色)。

    (5)按钮5,删除选中的杂点区。

    下面是具体流程以及截图:

    1. 打开bundle.rd.out 文件

    (1)点击按钮1,打开由VisualSFM生成的存储在xx.nvm.cmvs文件夹下的bundle.rd.out 文件。随后会询问是否选择照片列表文件,选择同文件夹下的 “list.txt”即可。这一步会把相机及对应的照片导入进来,对后续的纹理处理至关重要。


    (2)点击按钮2,打开显示层目录,检测相机载入是否正确,Render –> Show Camera,因可视化相机的尺寸比网格尺寸大得多,所以需调整相机的缩放因子,scale factor可以从0.0001开始调小,直到相机位置清晰可见。


    2. 稠密点云代替稀疏点云

    (1)点击按钮3,隐藏可视的稀疏点云;

    (2)File –>Import Mesh加载稠密点云(xx/00/models/option-0000.ply);VisualSFM生成多个.ply文件时,需合并成一个mesh。在载入的任何一个.ply上右键选“Flatter Visible Layers”。


    3. 清除杂点

    点击按钮4选中杂点区,按钮5删除之。大致清了周围的一些杂点后:


    4. 网格化

    Filter –> Point Set–> Surface Reconstruction: Poisson.

    利用Poisson Surface Reconstruction算法由稠密点云生成多边形网格表面。参数可调, Octree Depth:控制着网格的细节,此值越大细节越丰富但占内存越大运行起来慢,一般设10,可慢慢调大。


    Poisson表面重建算法会生成一个“不漏水”气泡,把所有场景对象包裹在其中。即模型是封闭的。可以移除多余的面Filters –> Selection –> Select faces with edges longer than,而后利用按钮5删除之。


    保存(整个project和mesh)。

    5. 修复流形边缘

    后续的纹理处理要求网格化的模型必须是流形(MANIFOLD)的,因此需删除非流形边(简单讲就是任何由多面共享的边)。Filters–> Selection –> Select Non-Manifold edges,而后删除之。


    6. 参数化(Parameterization)

    Filter–> Texture –> Parameterization from registered rasters。

    根据相机投影关系创建UV映射。


    保存 (整个project和mesh)。

    7. 投影纹理

    Filter–> Texture –> Project active rasters color to current mesh, filling thetexture。

    可设置任意分辨率(512的2的二次方倍:512 /1024 / 2048 / 4096 / 8192…)的纹理图。


    **:6和7其实可以合为一步:

    Filter –> Texturing –>Parameterization + texturing from registered rasters.


    8. 完成、导出

    当你调整满意了之后,File –> Export mesh as… a .obj文件。可以生成一个包含你选定分辨率纹理的obj文件。


    完成。 笔芯

     

     

    *补充:

    1、下载VisualSFM。网址:http://ccwu.me/vsfm/

    下载好的文件名称叫VisualSFM_windows_cuda_64bit.zip,将其解压便可得到exe文件,不需安装。

    2、对于要使用密集点云,需下载PMVS/CMVS。网址:http://www.di.ens.fr/cmvs/

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

    3、meshlab生成线框带纹理模型。下载网址:p://www.meshlab.net

     

     

     

    展开全文
  • 基于Python的三维重建开源代码,包括特征提取,SFM,PMVS以及CMVS等相关功能! 基于Python的三维重建开源代码,包括特征提取,SFM,PMVS以及CMVS等相关功能!
  • sfm(带稠密匹配模块)CMVS&PMVS(WIN32&64) 和meshlab2016 64位的,直接就能用
  •   在CYGWIN下编译和运行软件Bundler ...,以及PMVS,CMVS的编译与使用 2014-02-27 10:51 by 采药的蜗牛, 533 阅读, 3 评论, 收藏, 编辑 本人按照 http://blog.csdn.net/zzzblog/article/details/1

              本人最近在看关于SFM(Structure from Motion运动恢复结构)的相关算法,了解到国外的很多学者在这方面已经研究的非常成熟,成果也很多了。其中Bundler就是其中的一个Strcture from Motion开发工具包,它由Noah Snavely博士所编写,里面有开源的代码供我们参考。这个工具包能够通过对某个场景不同角度的多张图片生成稀疏点的三维信息,并且估计每一幅图片的相机参数(内参和外参)。
          由于上面得到的点云信息相对稀少(这个可能是图片数量过少导致),重建效果看起来并不是特别的真实,因此PMVS
    CMVSCMVSPMVS的改进版,里面包含PMVS)便应运而生,他们可以接收Bundler生成的数据,生成密集的三维模型结构。他们是由Yasutaka Furukama博士编写。输入一组图片和图片对应的相机参数,便可输出dense reconstruction (稠密的三维模型)
          事先声明,本人用的是WINDOWS XP 32位系统,以下的一些配置针对该系统进行相应的配置,其中参考了许多前人的文章,这在最后会统一给出他们的链接,他们也有针对其他不同的系统的,如果系统不同,请点击链接看他们的博客。本篇的博客主要分成三部分;第一部分是Bundler的配置与运行;第二部分是运用Bundler生成的数据生成密集点云模型;第三部分是.ply模型数据的观测。其中标红的是我在看别人文章并进行配置中得到的需要注意的地方,并加上我自己的理解和遇到的问题。 

    1.Bundler的配置与运行:

           Bundler的配置有两种途径:1)非Windows系统下,通过makefile配置;如果我们想在Windows下运行,就需要装虚拟系统或相关虚拟的运行软件,比如CYGWIN(UNIX虚拟系统),这也是本文采用的方法。2)Windows系统下,通过VS进行配置。这个方法,本人尝试过,确实比较麻烦,有许多错误需要改,但是也花不了多久时间,对于不需要进行密集点云生成的小伙伴可以尝试这种方法。但是如果大家需要生成密集点云模型的则不能采用VS配置。因为VS配置出来的执行文件缺少了一个Bundle2Vis.exe(这是后期进行pmvs转换时必不可少的文件),所以建议大家采用本文下述的方法。VS下配置请参考:http://blog.csdn.net/halfwet/article/details/6973918。有博主说在Bundler2PMVS中,我将//mkdir(output_path,0770)修改成mkdir(output_path)而不是博客所说的_mkdir(output_path),才成功的。这一点本人表示同意,亲自验证过。下面就针对前人的总结,写一写我的配置过程。
    (1)
    下载并安装CYGWIN(下载地址http://cygwin.com),注意这里我们选择比较新的版本进行下载,以防某些命令在旧的版本是没有的,这个问题我遇到过,花费了好长时间进行安装。安装时选择全部安装,越新版本的占用内存愈大,注意自己的内存空间。
    (2)
    下载并解压Bundler源码bundler-v0.4-source.tar.gz(下载地址:
    http://phototour.cs.washington.edu/bundler/), 假设
    Bundler
    的安装位置在E:/bundler。

    (3) 编译Bundler 在编译之前请大家在/src打开Bundle2PMVS.cpp217行的

    fprintf(f_scr, "mv  pmvs/%s.rd.jpg %s/visualize/%08d.jpg\n", 修改为 fprintf(f_scr, "mv  %s.jpg %s/visualize/%08d.jpg\n"。原因后面第(6)步大家会知道。这里需要注意前面标红的逗号,复制粘贴的话注意不要忘记逗号,否则会报错。

    $ cd E:/bundler
    $ make

    这里注意,如果上面安装的cygwin如果不全,可能回到导致令人诧异的错误,我就遇到难以理解的错误,比如direct.h找不到,一些命令没有等等错误

    (在编译到BundlerApp.h文件第620, 出现错误: 不能直接调用构造函数'SkeletalApp::BundlerApp')该头文件在/bundler/src目录中, 注释掉该行, 继续make, 可以通过编译此次make共生成bundler.exe, Bundle2PMVS.exe, Bundle2Vis.exe, KeyMatchFull.exe, RadialUndistort.exe,  libANN_char.dll, 都放置在/bundler/bin目录下。
    (4)
    下载SIFT(下载地址http://www.cs.ubc.ca/~lowe/keypoints/siftDemoV4.zip), 解压后将其中的siftWin32.exe拷贝到/bundler/bin, 这个siftWin32.exe会被Bundler调用作为特征点探测器。
    (5)
    运行Bundler
    Bundler
    里面有两个examples,里面存放了若干不同视角的图片,我们使用其中的一个example kermit

    $ cd  E:/bundler
    $ mkdir result
    (建立result文件夹,存放输出结果)

    $ cd result(进入result文件夹)
    $ ../RunBundler.sh ../examples/kermit (
    : ../examples/kermit指明用于进行多视角重建的图像所在目录)此时已经运行完Bundler, ./bundle/bundle.out文件里有重建的稀疏点3D坐标和相机参数, 具体说明参见/bundler/readme.txt
    这样/bundler会生成两个文件夹/bundle和/prepare。

    这里提示一下,如果大家不知道这个./用法,大家最好查一下,以防后面被一个点两个点弄糊涂了。这里和后面用到的主要是两种

          "./"代表当前所在目录下

          "../"代表当前目录的上一级目录下

     (6) Bundler的输出转换为CMVS-PMVS2的输入
    Bundler会生成一个Bundle2PMVS.exe用于将Bundler生成的结果转化成CMVS要求的输入。注意这里的操作一定是在bundler的根目录下面否则,后面生成的目录文件会有错。(这句我一直没搞懂,但是在当前的result目录下运行下面的语句是可以得到正确的结果的)

    $ ../bin/Bundle2PMVS.exe prepare/list.txt bundle/bundle.out(前面也是两个点,看下图红线以内,第一次我就是少了一个点,出错了)


    此时生成了pmvs子目录, 编辑里边的prep_pmvs.sh(用到工具EditPlus 3,网上可以搜到;或者我用的是写字板编辑,然后利用dos2unix命令将.sh文件转换成unix需要的格式, 指明BUNDLE_BIN_PATH路径来寻找RadialUndistort.exeBundle2Vis.exe。注意我们用的是Cygwin所以改BUNDLE_BIN_PATH要注意目录的格式,比如我的BundlerE盘根目录,那么BUNDLER_BIN_PATH=/cygdrive/e/bundler/bin地址不能有空格;同时注意目录中斜线的方向
    (7)
    完成最后的转换$ ./pmvs/prep_pmvs.sh
    pmvs目下生成txt, visualize, models目录和bundle.rd.out, list.rd.txt, vis.dat, pmvs_options.txt文件, 这些都是PMVS2的输入。pmvs子目录的文件如下图:

    其中,我自己配置的结果是没有上面倒数第二个文件.bak。这个目前不知有什么用。

    2.CMVS-PMVS的配置,生成密集的点云模型:

    Yasutaka Furukama网站上提供的CMVS是基于Linux上的比较。好在有个人将它转成了可以在Windows下运行的文件,见http://francemapping.free.fr/Portfolio/Prog3D/CMVS.html
    (1)  
    下载CMVS-PMVS并解压缩。发现里面有一个binariesWin-Linux文件夹,里面有配置好的基于LinuxWin32,和Win64的可执行程序,将CMVS-PMVS-master\binariesWin-Linux\Win32-VS2010文件夹中的文件全部拷贝到之前的result文件夹目录下(下面这些文件)。

    pmvs2.exe,cmvs.exe,genOption.exe,pthread.dll.

    打开cmd

    1.进入E(E:)

    2.进入bundler/result文件夹下(cd E:\bundler\result

    3.输入cmvs pmvs/

    4.输入genOption pmvs/(这一步不知道做什么的。。。)

    5.pmvs2  pmvs/   option-0000(注意option之前的空格键)


    这样,我们发现/pmvs/models/文件夹多了几个文件,其中*.ply文件为3D模型文件用下面的软件可以查看。

     

    3.稠密点云模型的观测:     

    大家推荐的是使用的是MeshLabhttp://meshlab.sourceforge.net/
    (1)
    创建一个新的New Empty Project
    (2) File->ImportMesh
    ,进入E:\bundler\result\pmvs\models,读入里面的模型文件(如图所示)

     

     

    本人用的3D观测软件是CloudCompare,下载地址:http://www.danielgm.net/cc/,用法类似与上面,只要加载.ply文件便可以了,效果与上面一样。

    本人也尝试了blender,但是blender给出的三维点云图没有颜色,这个目前没搞清楚,如果有大牛知道,希望不吝赐教小弟一下~

     

     

    本人参考的一些博客文章链接:

    http://www.cnblogs.com/mothe123/p/3570981.html

    http://blog.csdn.net/zzzblog/article/details/17166869

    http://oliver.zheng.blog.163.com/blog/static/1424115952011915113138431/

     

     

     

    展开全文
  • 该例程使用 Bundler 实现 Structure From 运动程序并准备运行 PMVS 所需的数据结构,PMVS 是一个开源密集重建软件。 用法 您应该将所需的软件放在软件目录中, 打捆机 pmvs sift-lowe(或 vlfeat) 结构可能...
  • 三维重建开源软件介绍

    万次阅读 多人点赞 2018-11-11 15:00:39
    四、相关的开源代码 五、一些补充 六、一些额外补充 先上一个招聘三维重建岗位的图,这个图上信息是我之前在招聘网上看到的,写的很详细,虽然我暂时做不到这些,但是可以描述一个方向,如果你想去三维重建公司...

    目录

    一、针对初学者

    二、针对具备一定基础的同学

    三、相关网站

    四、相关的开源代码

    五、一些补充

    六、一些额外补充


    先上一个招聘三维重建岗位的图,这个图上信息是我之前在招聘网上看到的,写的很详细,虽然我暂时做不到这些,但是可以描述一个方向,如果你想去三维重建公司工作,那么你应该具备一些什么技能

    一、针对初学者

    书籍I Computer Vision for Visual Effects

    书籍II Computer Vision Algorithms and Applications

    二、针对具备一定基础的同学

    三维重建的每个基础模块挑选了 1-2 篇代表性文献,强烈建议阅读以下相关的原著文献, 这些文献是经过时间检验非常经典的文献,这将大大提升你们的科研和工程能力。 这些文章包括:

    Sift 特征点检测

    [1] Distinctive Image Features from Scale-Invariant Keypoints

    增量 SFM

    [2] Photo Tourism Exploring Photo Collections in 3D

    [3] Structure-from-Motion Revisited

    稠密匹配&&多视角立体视觉

    [4] Multi-View Stereo for Community Photo Collections

    表面重建

    [5] Reconstruction and Representation of 3D Objects with Radial Basis

    纹理贴图

    [6] Let it be color! Large-Scale Texturing of 3D Reconstructions

    三、相关网站

    我们也提供一些相关的网站,这些网站是一些比较著名的开源系统。

    MVE: https://www.gcc.tu-darmstadt.de/home/proj/mve/index.en.jsp

    Bundler: http://www.cs.cornell.edu/~snavely/bundler/

    VisualSFM: http://ccwu.me/vsfm/

    OpenMVG: https://openmvg.readthedocs.io/en/latest/software/SfM/SfM/

    ColMap: https://demuc.de/colmap/

    四、相关的开源代码

    https://github.com/colmap/colmap

    https://github.com/simonfuhrmann/mve

    https://github.com/nmoehrle/mvs-texturing

    https://github.com/jianxiongxiao/SFMedu

    五、一些补充

    updata:

    2021.3:

    对比几个三维重建系统

    https://leohope.com/%E8%A7%A3%E9%97%AE%E9%A2%98/2018/03/06/compare-re3d-system/

     

    https://www.youtube.com/watch?v=ELHOjC_V-FE

    这个视频介绍了如下一些的用法:

    有一个博客,梳理了整体的框架

    http://www.cs.cmu.edu/~reconstruction/basic_workflow.html

    0*-Open3D

    补充一个三维重建的开源代码 Open3D  C++,有python接口

    http://www.open3d.org/docs/introduction.html

    0*-meshroom

    https://github.com/alicevision/meshroom

    然后以下是

    AliceVision是一种摄影测量计算机视觉框架,提供3D重建和相机跟踪算法。AliceVision旨在通过最先进的计算机视觉算法提供强大的软件基础,​​可以对其进行测试,分析和重用。该项目是学术界和工业界合作的结果,旨在提供具有生产使用所需的稳健性和质量的尖端算法。

    https://alicevision.github.io/

    0*-Line3D ++

    下载地址:

    https://github.com/manhofer/Line3Dpp 

    分割线-2018.11.19更新

    分割线-2018.11.21更新

    分割线-2018.12.02更新


    0*-CMP-MVS

    少写了这一个,补上的时候,不想再排序号,就把它称为0*吧

    看到它实在VisualSFM中

    给出的下载地址(好像没有):

    http://grail.cs.washington.edu/downloads/

    给出论文:

    [CMPMVS]    Multi-View Reconstruction Preserving Weakly-Supported Surfaces. M. Jancosek, T. Pajdla, CVPR 2011.

    youtube有个下载地址:

    https://www.youtube.com/watch?v=ZRTEMKS3Sw0

    下载地址:

    https://www.dropbox.com/s/80savnaou9ck7v4/cmpmvs-v0.6.0-binary-win64-cuda.zip?dl=0

    以及一些其他代码下载地址:

    http://grail.cs.washington.edu/downloads/


     

    0-COLMAP

    https://github.com/colmap/colmap

    关于它的主页:

    https://colmap.github.io/

     

    MVS:PMVS、CMVS,CMPMVS,以及OpenMVS:

    1-OpenMVS

    https://github.com/cdcseacave/openMVS

    关于它的主页:

    http://cdcseacave.github.io/openMVS/


    2-TexRecon – 3D Reconstruction Texturing

    优化细节的算法,对数据集进行纹理化:

    加上纹理贴图,更加逼真,niub

    https://www.gcc.tu-darmstadt.de/home/proj/texrecon/ 

    代码:

    https://github.com/nmoehrle/mvs-texturing

    3-SfM-Toy-Library

    主页:

    https://github.com/royshil/SfM-Toy-Library

    我用过的分支,我用的时候第三方库还有SSBA,最新的好像已经取消了

    https://github.com/royshil/SfM-Toy-Library/tree/335d7d2a0c1e603ec994d0e025bdec8ebeb493bc

    使用的序列图:

    4-MasteringOpenCV 的第四章 SFM

    https://github.com/MasteringOpenCV/code

    https://github.com/MasteringOpenCV/code/tree/master/Chapter4_StructureFromMotion

    5-MVE 我前面的博客进行了环境配置的讲解

    Windows编译MVE

    以及项目主页和代码页

    https://www.gcc.tu-darmstadt.de/home/proj/mve/

    https://github.com/simonfuhrmann/mve/wiki/MVE-Users-Guide

    6-Bundler

    代码:

    https://github.com/snavely/bundler_sfm

    还有一个其他的代码:

    https://github.com/adinutzyc21/BundlerUbuntu64

    项目主页:

    http://www.cs.cornell.edu/~snavely/bundler/

    一般的博客都是推荐:bundler + pmvs+ cmvs+ meshlab这样实现

    7-theia-sfm

    项目主页:

    http://www.theia-sfm.org/ 

    代码:

    https://github.com/nmoehrle/TheiaSfM

    8-ENFT-SfM 

    浙江大学ZJUCVG组-大尺度运动恢复结构系统

    项目主页: 

    http://www.zjucvg.net/ls-acts/ls-acts.html

    代码链接:  

    https://github.com/ZJUCVG/ENFT-SfM

    8-ORB_SLAM2

    代码:

    https://github.com/raulmur/ORB_SLAM2 

    老一点的orbslam:

    https://github.com/raulmur/ORB_SLAM

    或者高翔的版本,在上面的基础上,增加了可视化点云图的功能:

    https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map

    项目主页:

    http://webdiis.unizar.es/~raulmur/orbslam/

    9-PMVS、CMVS 

    项目主页:

    http://opensourcephotogrammetry.blogspot.com/

    代码:

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

    PMVS2:

    https://www.di.ens.fr/pmvs/

    CMVS:

    https://www.di.ens.fr/cmvs/

    10-SFMToolkit 

    代码:

    https://github.com/dddExperiments/SFMToolkit

    项目主页:

    http://www.visual-experiments.com/demos/sfmtoolkit/

    11-CODE and RepMatch 

    CODE: Coherence Based Decision Boundaries for Feature Correspondence

    REPMATCH: ROBUST FEATURE MATCHING AND POSE FOR RECONSTRUCTING MODERN CITIES

    两个核心部分,都没有开源,速度比较慢,核心使用的是ASIFT+高斯线性回归

    项目主页:

    http://www.kind-of-works.com/

    代码主页:

    https://github.com/seravee08/WideBaselineFeatureMatcher_PAMI

    http://www.kind-of-works.com/code/repmatch_code_bf_small.zip

     

    六、一些额外补充

    除了单纯图像进行三维重建,还有一种激光加图像的三维重建-ToF,结构光

    参考数目:

     

    除了点云的表示方式,三维结构还有几种表示方式:

    其中,马赛克像素的那个叫做octomap,用处大致是方便路径规划:

    具体详细的信息,参考高翔博士的博客:

    http://www.cnblogs.com/gaoxiang12/p/5041142.html

    展开全文
  • 三维重建开源项目汇总

    千次阅读 2020-12-31 19:43:30
    三维重建开源项目汇总 1、Meshroom ⭐5.7k AliceVision是摄影测量计算机视觉框架,可提供3D重建和相机跟踪算法。AliceVision旨在通过可测试,分析和重用的最新计算机视觉算法提供强大的软件基础。该项目是学术界和...

    三维重建开源项目汇总

    1、Meshroom ⭐5.7k

    AliceVision是摄影测量计算机视觉框架,可提供3D重建和相机跟踪算法。AliceVision旨在通过可测试,分析和重用的最新计算机视觉算法提供强大的软件基础。该项目是学术界和工业界合作的结果,旨在提供鲁棒高质量的产品级尖端算法。

    Meshroom是一款基于AliceVision摄影测量计算机视觉框架的免费开源三维重建软件。拥有便捷的GUI直接手动操作,支持Linux和Windows。

    项目链接:Meshroom: https://github.com/alicevision/meshroom

                     AliceVision: https://github.com/alicevision/AliceVision

    2、OpenMVG ⭐3.3k

    OpenMVG(Open Multiple View Geometry)提供了一个端到端的三维重建方法, 同时是一个由库、二进制和管道三部分组成的图像框架,基于C++开发的,可以在Android、iOS、Linux、macOS和Windows上运行。

    • 库:提供一些可重用的核心算法,如:图像处理,特征描述和匹配,特征跟踪,相机模型,多视图几何,鲁棒估计器,从运动恢复结构等算法;
    • 二进制文件:方便管道传输获取,如:管道可能需要场景初始化、特征检测/匹配和从运动重建结构,并将重建的场景导出到其它多视角双目视觉框架中以计算密集的点云或纹理网格;
    • 管道:通过链接各种二进制文件来计算图像匹配关系,求解从运动恢复结构等问题。

    结构示意图如下:

    源码链接:https://github.com/openMVG/openMVG

    3、Awesome_3DReconstruction_list ⭐2.6k

    与图像3D重建相关的论文和资源精选清单。

    项目链接:https://github.com/openMVG/awesome_3DReconstruction_list

    4、Awesome Point Cloud Analysis ⭐2.4k

    关于点云分析(处理)的论文和数据集列表。

    项目链接:https://github.com/Yochengliu/awesome-point-cloud-analysis

    5、OpenSfm ⭐1.9k

    OpenSfM是一个用Python编写的从运动恢复结构的库。该库作为一个处理管道,用于从多个图像重建相机姿态和3D场景。它由运动结构的基本模块(特征检测/匹配,最小化求解)组成,重点是构建一个健鲁棒的、尺度可变的重建管道。它还集成了外部传感器(如GPS、加速计)测量,以实现地理定位并增强鲁棒性。提供了一个JavaScript查看器来预览模型和调试管道。效果截图如下:

     参考链接:https://github.com/mapillary/OpenSfM

    6、OpenMVS ⭐1.4k

    OpenMVS(open Multi-View Stereo reconstruction library)是面向计算机视觉的库,尤其是针对多视图双目重建社区的。尽管有针对运动恢复结构的成熟完整的开源项目(例如OpenMVG),这些项目可以从输入的图像集中恢复相机的姿势和稀疏的3D点云,但没有解决摄影测量链的最后一部分-流。OpenMVS旨在通过提供一套完整的算法来恢复要重建场景的整个表面来填补这一空白。输入是一组摄影机姿势加上稀疏的点云,输出是带纹理的网格。该项目涉及的主要主题是:

    • 稠密点云重构:获得尽可能完整,准确的点云
    • 网格重建:估计最能解释输入点云的网格表面
    • 网格细化:恢复所有精细细节
    • 网格纹理着色:用于计算清晰准确的纹理以对网格着色

    效果如下:

     

    项目链接:https://github.com/cdcseacave/openMVS

    7、Bundler_sfm ⭐1.3k

    Bundler是一个对无序图像序列(例如来自网络的图片)的SFM系统,使用C/C++编写。Bundler以一系列图像,图像特征和图像匹配作为输入,生成相机的三维重构和稀疏的场景几何作为输出。Bundler生成稀疏的点云,对于稠密重建的软件,参考 Dr. Yasutaka Furukawa的稠密多视角双目PMVS2。一个典型的流程是运行Bundler去获取相机参数,再使用被提供的Bundle2PMVS程序去转换为PMVS2的输入,然后运行PMVS2。你可能也会对Dr. Furukawa的CMVS视角聚类软件有兴趣,它对运行PMVS2前的预处理是很有帮助的。下面是Bundler的效果图:

    项目链接: https://github.com/snavely/bundler_sfm

    8、BundleFusion ⭐936

    基于深度相机的实时在线表面重整合的全局一致三维重建,效果如下:

    项目链接:https://github.com/niessner/BundleFusion

    9、Face_swap ⭐700

    端到端自动换脸,自动图像到图像的脸部交换方法,详见论文。有趣的是作者的实验数据都是政客(向大佬低头),效果如下:

    项目链接:https://github.com/YuvalNirkin/face_swap

    10、Scannet ⭐809

    ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes 是一个RGB-D视频数据集,包含超过1500次扫描中的250万次视图,带有3D摄像机位姿、表面重建和实例级语义分段注释。值得注意的是该数据的获取必须要发邮件给作者申请,然后作者回复才有(有点坑)。为了收集这个数据,专门设计了一个容易使用的和尺度可变的RGB-D捕获系统,其中包含自动表面重建系统和语义注释。下面展示使用这个数据在许多3D场景理解任务获得的高性能结果,包含3D物体分类,语义像素标签和CAD模型,更多的信息参考论文:

    参考链接

    [1] ScanNet: https://github.com/ScanNet/ScanNet

    [2] ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes: http://www.scan-net.org/

    [3] 关于ScanNet数据集: https://blog.csdn.net/weixin_40766438/article/details/102969299

    11、SoftRas ⭐688

    "Soft Rasterizer(SoftRas): A Differentiable Renderer for Image-based 3D Reasoning" (ICCV'2019 Oral) 是一个真正的可微分渲染框架,把渲染作为一个可微分的聚合过程,融合所有相对于渲染像素的三角面片概率贡献。示意图如下:

    项目链接:https://github.com/ShichenLiu/SoftRas

    12、PIFu ⭐946

    “PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization” (ICCV'2019)用于高分辨率服装人体数字化的像素对齐隐式函数,可以从单张图像进行人体三维重构,也支持任意多视角重构,同时也支持单目视屏重构。效果截图如下

    项目链接:https://github.com/shunsukesaito/PIFu

    13、Matterport ⭐562

    "Matterport3D: Learning from RGB-D Data in Indoor Environments" (3DV'2017)用于RGB-D机器学习任务的非常棒的数据集。Matterport3D V1.0数据集包含90个属性使用Matterport Pro相机捕获。仓库中包含了若干场景理解任务数据集的原始数据,派生数据,语义注释数据,和脚本/模型。示例如下:

     

    项目链接:https://github.com/niessner/Matterport

    14、Kimera ⭐687

    Kimera(ICRA|RSS'2019|2020)是一个用于实时度量-语义SLAM的C++库,它使用相机图像和惯性数据来构建环境的语义注释3D面片。Kimera是模块化的,支持ROS,并且在CPU上运行。Kimera包含四个模块:

    效果如下(吐槽:最打大只能传5M,想扔CSDN鸡蛋):

    项目链接:https://github.com/MIT-SPARK/Kimera

    15、Mvs-Texturing ⭐508

    Mvs-Texturing (ECCV'2014)可以从图像中进行带纹理的三维重构。该项目专注于从运动和多视图立体技术进行3D重建,但也不限于这些设定。效果如下:

    项目链接:https://github.com/nmoehrle/mvs-texturing

    16、LiveScan3d ⭐484

    “LiveScan3D: A Fast and Inexpensive 3D Data Acquisition System for Multiple Kinect v2 Sensors” (3DV’2015) 是一个实时三维重建系统,使用多个AzureKinect或者Kinect v2深度传感器同时实时的进行三维重建。产生的3D重建形式是有色点云的形式,所有Kinect的点都放置在同一坐标系中。其中,点云流可以被可视化,记录或者输送到HoloLens 或者任何Unity应用中。该系统的可能应用场景包括:

    • 同时从多个视点捕获对象的3D结构;
    • 捕获场景的“全景” 3D结构(通过使用多个传感器来扩展一个传感器的视场);
    • 将重建的点云流式传输到远程位置;
    • 让多个传感器捕获同一场景来提高单个传感器捕获的点云的密度。

    效果如下:

    项目链接:https://github.com/MarekKowalski/LiveScan3D

    17、VoxelHashing ⭐431

    "Large-Scale, Real-Time 3D Reconstruction using Voxel Hashing" [Siggraph Asia 2013]大规模、实时三维重建,效果如下:

    项目链接:https://github.com/niessner/VoxelHashing

    参考链接:https://www.youtube.com/watch?v=XD_UnuWSaoU&t=61s

    18、LayoutNet ⭐329

    "LayoutNet: Reconstructing the 3D Room Layout from a Single RGB Image"(CVPR'2018)从单个RGB图像重建三维房间布局,效果如下:

    项目链接:https://github.com/zouchuhang/LayoutNet

    19、Tsdf Fusion Python ⭐413

    “Volumetric TSDF Fusion of RGB-D Images in Python” (CVPR'2017|2016)这是一个轻量级的python脚本,可将多个彩色和深度图像融合到TSDF中,然后可以将其用于创建高质量的3D表面网格和点云。效果如下图:

    项目链接:https://github.com/andyzeng/tsdf-fusion-python

    20、Intrinsic3D ⭐279

    "High-Quality 3D Reconstruction by Joint Appearance and Geometry Optimization with Spatially-Varying Lighting" (ICCV'2017)基于接合点外观和几何优化的高质量空间变光三维重建,基于低成本的RGB-D传感器,能够恢复完整的几何细节和棱角分明的表面纹理,效果如下:

    项目链接:https://github.com/NVlabs/intrinsic3d

    21、Awesome Holistic 3D ⭐356

    该项目整理了一系列3D重建的论文和数据集资源(包括场景类和检测类)清单,部分数据集如下:

     

    项目链接:https://github.com/holistic-3d/awesome-holistic-3d

    22、Structured3D ⭐214

    "Structured3D: A Large Photo-realistic Dataset for Structured 3D Modeling" (ECCV'2020) 是一个大尺度仿真图像数据集,包含了3.5K的房屋设计。这个数据集由专业设计者创建,包含一系列的真值3D结构注释(例如语义,深度,表面法向量,和布局等),同时在不同光照和家具配置的条件下生成了一系列的仿真2D图像。注意:该数据需要申请才可以下载使用。为了公平的对比,定一了标准的训练,验证和测试划分。部分数据如下:

    项目链接:https://github.com/bertjiazheng/Structured3D

    23、Synthesize3DviaDepthOrSil ⭐136

    "Synthesizing 3D Shapes via Modeling Multi-View Depth Maps and Silhouettes with Deep Generative Networks"(CVPR 2017):通过使用深度生成网络建模多视角深度图和轮廓来合成三维形状,效果如下:

     

    项目链接:https://github.com/Amir-Arsalan/Synthesize3DviaDepthOrSil

    24、Msn Point Cloud Completion ⭐183

    "MSN: Morphing and Sampling Network for Dense Point Cloud Completion" (AAAI 2020):  MSN是一种为稠密深度点云补齐设计的渐变和采样网络,是一种基于学习的形状补全方法,它能保持已知结构(可以是分散稀疏的点云)并生成稠密点云。在这个工程中,基于竞拍算法(auction algorithm)实现了一种点云的推土机距离(Earth Mover's Distance, EMD),仅仅需要O(n)的内存空间复杂度。效果如下:

    项目链接:https://github.com/Colin97/MSN-Point-Cloud-Completion

    25、Cnncomplete ⭐116

    "Shape Completion using 3D-Encoder-Predictor CNNs and Shape Synthesis" (CVPR 2017) 训练体积深度神经网络以补全合成部分扫描的3D形状。效果如下:

    项目链接:https://github.com/angeladai/cnncomplete

    26、ReconstructionDataset ⭐111

    包含了一系列的用于做三维重建的一组图像,每一个文件夹中由一系列的图片组成,可以作为3D重构软件的输入。场景清单如下:

    项目链接:https://github.com/rperrot/ReconstructionDataSet

    27、3D-RecGAN-Extended ⭐96

    "Dense 3D Object Reconstruction from a Single Depth View" (TPAMI 2018): 从单个深度视图进行密集的3D对象重建,也提供了相应的数据集和真值模型。效果如下:

    项目链接:https://github.com/Yang7879/3D-RecGAN-extended

    28、DynamicFusion ⭐259

    Paper: R. A. Newcombe, D. Fox and S. M. Seitz, "DynamicFusion: Reconstruction and tracking of non-rigid scenes in real-time," 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Boston, MA, 2015, pp. 343-352, doi: 10.1109/CVPR.2015.7298631.

    概述:DynamicFusion动态融合提出了第一个能够实时稠密重建非刚性变形场景的SLAM系统,该方法的实现是通过融合商品级RGBD传感器。在重建几何结构的同时估计稠密的体素6D运动场,该方法映射被估计的几何结构到当前帧中。类似KinectFusion,DynamicFusion系统增量处理去噪,细化,和补全重构为融合提供更多的测量数据,并实时更新展示模型。效果如下:

    项目链接:https://github.com/mihaibujanca/dynamicfusion

    29、ElasticFusion ⭐1.3k

    Paper:

    • [1] Whelan, Thomas, et al. "ElasticFusion: Real-time dense SLAM and light source estimation." The International Journal of Robotics Research 35.14 (2016): 1697-1716.
    • [2] Whelan, Thomas, et al. "ElasticFusion: Dense SLAM without a pose graph." Robotics: Science and Systems, 2015.

    概述:ElasticFusion 实时稠密视觉SLAM系统能够捕捉使用RGB-D相机探测的房间尺度环境的综合稠密全局一致的基于表面的地图。效果如下:

    项目链接:https://github.com/mp3guy/ElasticFusion

    参考资料

    [1] 三维重建开源项目汇总: https://zhuanlan.zhihu.com/p/141946874

    [2] 一分钟详解三维重建学习路线: https://zhuanlan.zhihu.com/p/191200982

    展开全文
  • Maplab开源VI-SLAM框架介绍

    千次阅读 2019-03-14 20:49:16
    Maplab开源VI-SLAM框架介绍 1.概述 2.系统架构 3.使用例程 1. 概述 Maplab是一个开源的VI-SLAM(视觉惯性-即时定位与地图构建)框架。它由著名的ETH Zurich, Autonomous Systems Lab (苏黎世联邦理工学院自动...
  • 248 item TopicNameReferenceLink Feature Detection,Feature Extraction, and Action Recognition Space-Time Interest Points (STIP) I. Laptev, On Space-Time Interest Points, IJCV, 2...
  • pmoulon/CMVS-PMVS​github.com 10. CoSLAM​drone.sjtu.edu.cn 11. JakobEngel/dso​github.com 12. plumonito/dtslam​github.com 13. tum-vision/lsd_slam​github.com 14. ethz-asl/okvis​github....
  • Structure from Motion 资料总结

    万次阅读 多人点赞 2017-08-24 11:05:58
    在学习SFM过程中收集的网站、博客内容链接集合 一、SFM开源算法和使用说明 ...1.最完善的开源视觉重建软件VisualSFM,由ChangchangWu博士编写;...2.支持VisualSFM运行的CMVS... CMVS~Clustering Views for Multi-view
  • 三维重建学习笔记

    2020-07-18 16:02:20
    三维重建学习一、概述VisualSFM-CMVS/PMV-MeshLab使用二、sfm算法开源实现三、稠密重建开源实现四、openMVG1、理论2、实践2.1、源码编译(重点)3、其他WORK1: 根据tutorial_demo.py实现pipeline(C++)step1、运行...
  • MVE(Multi-View Enviroment)三维重建

    千次阅读 热门讨论 2018-04-15 20:03:20
    对于三维重建,绝大部分的人应该都是用Bundler + CMVS-PMVS进行三维重建,有篇博文写的很详细,亲测可用:Bundler + CMVS-PMVS不过另一个三维重建的开源工具,在国内好像很少见到哎,这个工具功能齐全,包括纹理映射...
  • 计算机视觉领域经典论文源码

    千次阅读 2017-10-09 18:34:33
    计算机视觉领域经典论文源码 转载自:http://blog.csdn.net/ddreaming/article/details/52416643 2016-CVPR论文代码资源: https://tensortalk.com/?cat=conference-cvpr-2016 ...
  • SFM 与MVS的区别

    万次阅读 2019-09-29 23:26:41
    使用开源工具pipeline: Bundler(SFM) -> CMVS(MVS) -> PMVS2(MVS) 回答: sfM 和MVS两者互补,它们基于不同的假设。且他们的输入也不相同。 sfM: (bundler, VisualSFM, OpenMVG) input: 一组...
  • <p>It seems to me OpenDroneMap only supports patched based methods like CMVS and PMVS to densify point clouds. Following generating point cloud with PMVS, semi global matching (SGM) was reported to ...
  • 内含SiftGPU,pba,CMVS-PMVS代码(三维重建的特征点提取与匹配,稀疏重建和密集重建)
  • 基于图像的三维重建系统概览

    万次阅读 2016-01-01 10:48:36
    详细内容链接:http://www.di.ens.fr/cmvs/ 实验 这部分对于Smart3DCapture,SURE和PMVS进行实验,以窥探三类典型方法的特点。 图 2. Smart3DCapture实验结果 , 由近景实验结果可见,重建...
  • 卫星图像三维重建技术

    千次阅读 2019-03-15 17:23:03
    http://planckscale.info/tag/visualsfm/ ... Windows下使用VisualSFM + CMVS/PMVS +MeshLab进行三维重建 参考文档: VisualSFM和Meshlab实现三维重建过程:http://plancks...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

cmvs开源