Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Windows下使用VisualSFM + CMVS/PMVS + MeshLab进行三维重建

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

作者头像
全栈程序员站长
发布于 2022-08-31 07:05:42
发布于 2022-08-31 07:05:42
4.3K3
举报

大家好,又见面了,我是你们的朋友全栈君。

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151326.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
3 条评论
热度
最新
博主,您好我按照您的操作,生成的点云数据测量数值比真实值大了很多倍是为啥啊
博主,您好我按照您的操作,生成的点云数据测量数值比真实值大了很多倍是为啥啊
回复回复1举报
博主,在meshlab哪个环节只要一导入稠密点云模型就闪退怎么解决啊
博主,在meshlab哪个环节只要一导入稠密点云模型就闪退怎么解决啊
回复回复点赞举报
生成的点云数据模型比真实物理模型测得的数据要大
生成的点云数据模型比真实物理模型测得的数据要大
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【三维重建】三维数据的显式表示形式
传统的基于图像的三维重建指的是从单幅图像加上额外的场景约束、或者从两幅或以上图像恢复空间点三维坐标的过程,(广义上讲,三维重建就是从现实物体或者场景得到其三维表示的过程)。传统的三维重建分为由运动到结构、多视图立体重建、表面重建、纹理重建等步骤,依托斯坦福大学开发的开源的计算机视觉软件COLMAP可完成该过程(后续文章将深入探索)。
Qomolangma
2024/07/26
3000
【三维重建】三维数据的显式表示形式
42. Photo Tourism:三维重建和图像渲染结合的典范
2017年2月6日,微软正式关闭了PhotoSynth的网站和相关服务。这可能是世界上第一个3D图像创作、分享应用,它的落幕可能有微软自身商业策略的调整,可能也和产品本身实际为微软带来的收益不符有关。但无论如何,这个系统在我看来堪称是三维重建和图像渲染、浏览技术的经典作品。因此这一篇文章就从它讲起。
HawkWang
2020/06/03
1.4K0
计算机视觉方向简介(四) | 深度相机室内实时稠密三维重建
室内场景的稠密三维重建目前是一个非常热的研究领域,其目的是使用消费级相机(本文特指深度相机)对室内场景进行扫描,自动生成一个精确完整的三维模型,这里所说的室内可以是一个区域,一个房间,甚至是一整栋房屋。此外,该领域注重(一般是GPU上)实时重建,也就是一边扫描就可以一边查看当前重建的结果。如下所示。
用户1150922
2019/05/26
3.4K0
使用 OpenMVG+PMVS实现视觉三维重建
我们知道,照相机的原理是将一个三维场景投影到二维平面。所谓视觉三维重建,顾名思义就是从已有的二维图像中复原原始三维场景。
3D视觉工坊
2020/12/03
7.1K0
使用 OpenMVG+PMVS实现视觉三维重建
基于单目视觉的三维重建算法综述
三维计算机视觉在计算机视觉是偏基础的方向,随着2010年阿凡达在全球热映以来,三维计算机视觉的应用从传统工业领域逐渐走向生活、娱乐、服务等,比如AR/VR,SLAM,自动驾驶等都离不开三维视觉的技术。
SIGAI学习与实践平台
2019/03/01
4.8K0
基于单目视觉的三维重建算法综述
基于深度学习的三维重建算法综述
目前,三维重建技术已在游戏、电影、测绘、定位、导航、自动驾驶、VR/AR、工业制造以及消费品领域等方面得到了广泛的应用。方法同样也层出不穷,我们将这些方法依据原理分为两类:
3D视觉工坊
2020/12/11
1.7K0
基于深度学习的三维重建算法综述
基于NeRF的三维实景重建技术探索
NeRF作为一种新型的视场合成和三维重建方法,在多个领域中都有广泛的应用,如城市测绘、机器人技术、虚拟现实/增强现实、电影制作和游戏开发。本文重点介绍了NeRF的构建流程以及目前比较流行的NeRF三维实景建模库,旨在帮助读者更好地理解和应用NeRF三维实景重建技术,为NeRF三维实景重建技术落地提供参考。
一点人工一点智能
2024/04/29
2K0
基于NeRF的三维实景重建技术探索
基于少量图像的三维重建综述
基于少量图像的三维重建被认为是第三代人工智能的经典应用之一。在计算机图形学和计算机视觉领域,基于少量图像的三维重建任务因具有广泛的应用场景和很高的研究价值,长期以来吸引着众多学者的目光。引入深度学习方法后,该领域于近年来得到了长足发展。对此类基于少量图像的三维重建任务进行了全面阐述,并介绍了本研究组在该方面的系列工作,对其中涉及的数据类型进行分析,阐明其适用性和一般处理方法。此外,对常见的数据集进行分析、整理,针对不同重建方法,归纳出其基本框架、思路。最后,展示了一些常见三维重建的代表性实验结果,并提出了未来可能的研究方向。
一点人工一点智能
2023/08/25
1.2K0
基于少量图像的三维重建综述
现实虚拟化:从三维重建到逆渲染(Inverse Rendering)
原文:https://zhuanlan.zhihu.com/p/568205134
一点人工一点智能
2023/02/02
1.7K0
现实虚拟化:从三维重建到逆渲染(Inverse Rendering)
visualSFM「建议收藏」
visualSFM:http://ccwu.me/vsfm/ (A visual structure from motion sysytem)
全栈程序员站长
2022/08/31
1.3K0
初次尝试使用VisualSFM记录
对于SFM一直觉得高大上又神秘,一年前粗略的了解过一下,今年有时间尝试深入了解SFM,对于初学者来说,VisualSFM真的时非常好的感受SFM的免费软件,于是通过其他博客的指导(没去看官方的英文版,容易犯困),做了一个3D模型出来,感觉还挺好玩,记录一下。
全栈程序员站长
2022/08/31
1.2K0
初次尝试使用VisualSFM记录
深度学习之三维重建
一般分为深度图/视差图、点云、网格。它们都是表达3D信息的一种方式,会根据实际应用场景不同来选取不同的方式来表示。比如说做一些背景序化、人脸特效就可以只使用深度图就可以了;而如果我们要重建一个大型场景,如博物馆什么的,需要将其显示出来供大家浏览,可以使用网格来表示;而做定位的时候,我们只需要用点云就可以了。但是如果我们要制作点云或者网格,都必须要使用深度图,这一步是必须要经历的。有了深度图才可能得到点云或者是三维的网格。
算法之名
2022/09/01
1.2K0
深度学习之三维重建
ECCV 2020 | 基于分割一致性的单目自监督三维重建
本文主要从二维图像及其轮廓的集合中,学习一个自监督的、单视图的三维重建模型,预测目标物体的3D网格形状、纹理和相机位姿。提出的方法不需要3D监督、注释的关键点、物体的多视图或者一个先验的网格模板。关键之处在于,物体可以表示为可形变部分的集合,在同一类别的不同实例中,每个部分在语义上是一致的。
计算机视觉
2021/07/05
8700
实战 | 手把手教你跑三维重建代码!
OpenMVS是三维重建的一个成熟开源框架,综合重建效果和性能,该算法是目前MVS(Multi-View Stereo)相关的所有开源库中最好的一个。该算法的框架如下所示
AI算法与图像处理
2021/04/21
2.4K0
实战 | 手把手教你跑三维重建代码!
多视图几何三维重建实战系列之MVSNet
MVS是一种从具有一定重叠度的多视图视角中恢复场景的稠密结构的技术,传统方法利用几何、光学一致性构造匹配代价,进行匹配代价累积,再估计深度值。虽然传统方法有较高的深度估计精度,但由于存在在缺少纹理或者光照条件剧烈变化的场景中的错误匹配,传统方法的深度估计完整度还有很大的提升空间。
计算机视觉
2020/11/11
2.9K3
多视图几何三维重建实战系列之MVSNet
多视图立体视觉: CVPR 2019 与 AAAI 2020 上的ACMH、ACMM及ACMP算法介绍
---- 新智元报道   来源:我爱计算机视觉 作者:孔维航 【新智元导读】在三维重建任务中,由于数据量大、弱纹理、遮挡、反射等问题,如何高效准确地实现多视图立体视觉仍然是一个具有挑战性的问题。 多视图立体视觉(MVS)一直是计算机视觉研究的一个热点。它的目的是从多个已知相机姿态的图像中建立密集的对应关系,从而产生稠密的三维点云重建结果。在过去的几年里,人们在提高稠密三维重建的质量上付出了很大的努力,一些算法如PMVS、GIPUMA以及COLMAP等取得了令人印象深刻的效果。 然而,在三维重建任务中,
新智元
2023/05/22
8130
多视图立体视觉: CVPR 2019 与 AAAI 2020 上的ACMH、ACMM及ACMP算法介绍
多楼层室内环境下的三维几何重建
在智能制造、AR、机器人、室内导航等领域,三维重建都有很广泛的应用前景。随着消费级RGB-D相机的普及,三维重建的应用场景也得到了进一步的扩展。奥比中光自主研发的深度相机Astra Pro的成本相对较低,同时也可以方便、快捷地对物体进行3D成像,并且具有精度高的优点。针对三维重建相关技术进行研究和加以应用,必将极大程度地促进计算机视觉等领域的发展,并进一步深度影响工业生产活动以及人们的生活方式。
点云PCL博主
2021/09/15
1.3K0
多楼层室内环境下的三维几何重建
单图像三维重建、2D到3D风格迁移和3D DeepDream
项目网址:http://hiroharu-kato.com/projects_en/neural_renderer.html
3D视觉工坊
2020/12/11
1.8K0
单图像三维重建、2D到3D风格迁移和3D DeepDream
三维重建方法
最近在看三维重建方面的论文,进行一下知识总结。 三维重建技术 三维重建技术就是要在计算机中真实地重建出该物体表面的三维虚拟模型,构建一个物体完整的三维模型,大致可以分为三步: 利用摄像机等图像采集设备对物体的点云数据从各个角度釆集,单个摄像机只能对物体的一个角度进行拍摄,要获得物体表面完整信息,需要从多个角度对物体拍摄; 将第一步获得的各视角点云数据变换到同一个坐标系下,完成多视角点云数据的配准; 根据配准好的点云数据构建出模型的网格表面。 三维重建方法 目前根据重建方式的不同,主要有以下几种重建方法: 双
武培轩
2018/04/18
1.5K0
三维重建方法
多视图几何三维重建实战系列之COLMAP
为了方便大家了解基于多视图立体的三维重建技术,更重要的是能亲手利用开源数据集或者自己采集的影像跑一遍流程,进而对整个流程更为熟悉,本文整理了近年来几种经典的基于传统方法和基于深度学习方法的三维重建技术Pipeline,并详细介绍从多视图影像到深度图估计,再到恢复三维点云的整个过程。
3D视觉工坊
2020/12/11
4.2K0
相关推荐
【三维重建】三维数据的显式表示形式
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文