VisualSFM的配置与使用 MeshLab的网格生成与纹理添加

news2025/7/10 11:51:42

前言

本实验环境如下:

VisualSFM版本V0.5.26

MeshLab版本2022.02

操作系统Windows10,64bit

0 VisualSFM配置

0.1 下载

VisualSFM下载链接:VisualSFM : A Visual Structure from Motion System

Cmvs-Pmvs下载链接:GitHub - pmoulon/CMVS-PMVS: This softwC

MeshLab下载链接:MeshLab

0.2 配置

将CMVS-PMVS-master进行解压,将CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010下的所有文件(可以不要Readme.txt文件)复制到VisualSFM_windows_cuda_64bit下即可使用。 

复制到VisualSFM_windows_cuda_64bit下后: 

1 照片数据获取

以待重建的对象为中心,围着它每转一定角度拍一张,这样转一圈,有不同高度信息更好。VisualSFM没有照片数量限制,照片越多,重建出的细节越丰富,但重建过程花费时间越长。(注:运行VisualSFM后,图像文件同级目录下会有mat、sift格式文件,这些是生成的一些包含特征点、场景信息等数据的文件。)

例如:本实验数据为47张桌子上的柿子图片,每张图片大小约10M,6144*8192像素。

2 VisualSFM的使用

点击VisualSFM.exe。

2.1 导入图像。

2.1.1 点击

 2.1.2 选择需要导入的图像,图像读入需要一定时间,请稍等。

2.2 图像配准

2.2.1 点击按钮“Compute Missing Matches”。进行SIFT特征点检测和匹配。因照片可能存在旋转、缩放或亮度变化,此过程利用SIFT算法提取、描述特征,用 RANSAC算法过滤掉误匹配。此过程亦可利用GPU加速。

 

 2.2.2 工作状态实时显示在侧边的log窗口。

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

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

 

 2.3.2重建结果

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

 2.4.1 点击按钮“Run Dense Reconstruction”。通过 CMVS 对照片进行聚类,以减少稠密重建数据量,而后利用PMVS从3D模型的稀疏点云开始,在局部光度一致性和全局可见性约束下,经过匹配、扩散、过滤生成带真实颜色的稠密点云。

 2.4.2 选择一个文件夹用于放置将要创建的模型(最好新建一个文件夹),对3D模型文件命名,点击保存。

2.4.3  运行过程中需要耐心等待,可能时间较长。本实验运行61.117 min。

 

2.4.4 运行结束后的模型保存文件夹下的内容。

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

3 MeshLab的使用

3.1导入项目文件

3.1.1 点击坐标Open project。 

 3.1.2 打开由VisualSFM生成的存储在xx.nvm.cmvs文件夹下的bundle.rd.out 文件。

3.1.3 随后会询问是否选择照片列表文件,选择同文件夹下的 “list.txt”即可。 

 
3.1.4 稍等片刻,便可以显示点云数据。

3.2 打开显示层目录

3.2.1 点击,右侧即可显示层目录。

 

3.3 加载稠密点云

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

3.3.2 点击眼睛,使其闭眼,可隐藏可视的稀疏点云;

3.4  清除杂点

3.4.1 点击按钮

3.4.2 选中待清除区域。注意:这时我们右边的图层中应该选中的是刚打开的稠密点云.ply,按着Ctrl键,可以一次性选中多个待清除区域。

 3.4.3 点击 就可以清除多余点云(噪点)。 

3.5 网格化

3.5.1 点击Filters->Remeshing, Simplification and Reconstruction->Surface Reconstruction:Screened Poisson。

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

3.5.2 Poisson表面重建算法会生成多余区域甚至可能会是一个“不漏水”气泡,把所有场景对象包裹在其中,即模型是封闭的。这时需要清除杂点的相同操作,去除多余区域。

去除后的效果图如下: 

 

3.6 修复流形边缘

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

3.7 生成纹理

3.7.1 点击Filter –> Texturing –>Parameterization + texturing from registered rasters.可设置任意分辨率(512的2的二次方倍:512 /1024 / 2048 / 4096 / 8192…)的纹理图。

 

3.7.2 点击Vert显示,关闭其它方式的显示效果。最终效果如下图。

3.8 完成、导出

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

参考链接 

Windows下使用VisualSFM + CMVS/PMVS + MeshLab进行三维重建_黑糖梅子酒的博客Windows下使用VisualSFM + CMVS/PMVS +MeshLab进行三维重建参考文档:VisualSFM和Meshlab实现三维重建过程:http://planckscale.info/tag/visualsfm/(十分感谢)数据集:三维重建数据集:http://vision.ia.ac.cn/zh/data/index.html一、简介要想了解https://blog.csdn.net/moneyhoney123/article/details/78454837?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-4-78454837-blog-45032469.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-4-78454837-blog-45032469.pc_relevant_default&utm_relevant_index=5初次尝试使用VisualSFM记录_啊吼!的博客    对于SFM一直觉得高大上又神秘,一年前粗略的了解过一下,今年有时间尝试深入了解SFM,对于初学者来说,VisualSFM真的时非常好的感受SFM的免费软件,于是通过其他博客的指导(没去看官方的英文版,容易犯困),做了一个3D模型出来,感觉还挺好玩,记录一下。    实际上,VisualSFM只做了一部分工作,优化是用MeshLab做的,所以分两个环节:     1.VisualSF...https://blog.csdn.net/xujie126/article/details/83108669?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-83108669-blog-45032469.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-83108669-blog-45032469.pc_relevant_default&utm_relevant_index=2
【油管搬运】免费照片3D软件 VisualSFM 和 Meshlab工作流程_哔哩哔哩_bilibiliwww.youtube.com【教学】免费照片3D软件 VisualSFM 和 Meshlab工作流程(油管搬运), 视频播放量 2937、弹幕量 3、点赞数 39、投硬币枚数 10、收藏人数 136、转发人数 37, 视频作者 湿身的绛州司马, 作者简介 学考古的,相关视频:使用 VisualSFM and Meshlab通过扫描照片构建三维模型(Free Photo Scanning Workflow),从照片到3D模型-三维重建VisualSFM+CMVS+MeshLab工作流,如何正当免费地获取Fusion 360建模软件,SoftMax软件中Workflow工作流程的设置,Meshlab软件中3D点云网格化的三种方法,开源3D重构软件Meshroom -通过手机照片直接生成3D模型,用照片直接生成三维模型,速度快,还免费,3D建模软件,全套3D游戏建模软件安装3Dmax下载安装,maya下载,zbrush,SP,八猴,Mari,MD,QS,RizomUV,DAZ,Wrap安装,Megascans正版免费海量照片级贴图资源库一键导入C4D方法大公开!,辣椒:史上最良心!(免费无需root找回率高)安卓手机回收站误删照片相册找回教程(简单方便)方法全网首发!多款软件保证能用!https://www.bilibili.com/video/BV1Fx41167Su/?spm_id_from=333.337.search-card.all.click&vd_source=5212838c127b01db69dcc8b2d27ca517

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]SSM计算机毕业设计郑工校园二手交易平台网站JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

有限自动机字符串匹配

上一篇文章正则表达式,提到正则表达式是一种用来表示有限自动机所接受单词组合的语言,那么什么是有限自动机呢,以及它是如何进行字符串匹配的,下面来做详细介绍 什么是有限自动机 目前程序上利用不同的编程语言通过正则表达式进…

泰勒公式理解

文章目录1:一元泰勒展开公式2:二元泰勒展开公式3:二元函数的黑塞矩阵4:多元函数的黑塞矩阵其他链接1:一元泰勒展开公式 举例:f(x) 3x 2x 5 在x0或x1处的泰勒展开 当x0时: 当x1时&#xff…

cadence orcad capture tcl/tk脚本开发

Orcad是一个很优秀的原理图工具,orcad支持tcl/tk开发,介绍一下当前本人开发的脚本工具,可用于提高硬件工程师的画图效率。 环境准备 将压缩包解压到C盘(注意一定要C盘根目录下),C:\Tcltk。如下图所示将上图…

Selector的使用

文章目录Selector 的使用1.直接使用2. Scrapy Shell3.XPath 选择器4.CSS选择器5.正则匹配Selector 的使用 我们之前介绍了利用Beautiful Soup、pyquery 以及正则表达式来提取网页数据的方法,确实非常方便。不过Scrapy提供了自己的数据提取方法,即内置的…

[附源码]java毕业设计社区志愿者服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

传输中的差错检验技术

差错检验 在网络传输过程数据难免会产生错误,需要使用差错检验技术进行纠错,可靠传输技术避免错误的发生 1 术语 比特差错 误码率BER 差错检验码 2 奇偶校验(不会采用) 在待发送的数据后面添加1位奇偶校验位,使整…

MyBatis基于XML的详细使用-参数、返回结果 处理

1、参数的取值方式 在xml文件中编写sql语句的时候有两种取值的方式,分别是#{}和${}。 注意:这里推荐使用#{}的方式,可以有效的防止sql注入问题。 2、select的参数传递 1.单个参数: 不管多少个参数最好在参数前加上param注解,为其取一个别名 2.多个参数…

[网络工程师]-传输层协议-TCP拥塞控制

TCP拥塞控制的概念是:每个源端判断当前网络中有多少可用容量,从而知道它可以安全完成传送的分组数。拥塞控制解释防止过多的数据注入网络,避免网络中间设备(路由器、交换机等)过载而发生拥塞。拥塞控制是一个全局性的过…

数据结构系列学习(九) - 循环队列(Circular_Queue)

目录 引言: 学习: 循环队列设计背景: 利用顺序表的思维对队列进行探讨: 解决方案的思考: 循环队列中循环的体现: 循环队列的要点: 第一个难点: 第二个难点: 第三…

Verilog 显示任务($display, $write, $strobe, $monitor)

Verilog 中主要用以下 4 种系统任务来显示(打印)调试信息:$display, $write, $strobe, $monitor。 $display $display 使用方法和 C 语言中的 printf 函数非常类似,可以直接打印字符串,也可以在字符串中指定变量的格…

7. 微服务之Docker自动化部署

7.1 Docker 介绍 Docker 是一个快速交付应用、运行应用的技术: 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器,各个应用互不干扰启动、移除都可以通过一行命令完成&#xff…

华清远见:驱动点灯第N回目

1.在串口工具进行输入: echo 1 > /dev/myled0 ---->led1灯点亮 echo 0 > /dev/myled0 ---->led1灯熄灭 echo 1 > /dev/myled1 ---->led1灯点亮 echo 0 > /dev/myled1 ---->led1灯熄灭 echo 1 > /dev/myled2 ---->led1灯点亮 ec…

力扣刷题day52|84. 柱状图中最大的矩形

文章目录84. 柱状图中最大的矩形思路动态规划单调栈84. 柱状图中最大的矩形 力扣题目链接 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: …

空间域图像增强处理-含Labview程序

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、领域图像增强实例分析✳️ 2.1 线性滤波实例分析✳️ 2.2 非线性滤波实例分析✳️ 2.3 Canny边缘检测✳️ 三、Labview程序获取✳️ 一、引言 图像在其采集或传递过程中常会受到各种噪声的影响,这会导致其中包含的重要信息很…

忘机工尺谱 - 快速打谱软件

引言 为了实现高效快速打谱,我实现了一种词谱分离的输入方案,解决了当前工尺谱平台打谱过程频繁切换输入法和频繁点击鼠标等问题,大大提高了打谱效率。同时借鉴了Markdown编辑器”所见即所得“的思想,输入的同时可以见到排版后的…

java线程控制

java线程控制的语法很多 这里我们主要说以下三个方法 我们先新建一个包 包下建立两个类 customException 线程类 参考代码如下 public class customException extends Thread {public String name;public customException(){}public void run(){for(int i 0;i < 100;i)…

逆变器电力计量仪表可安装在分布式光伏运维云平台、光伏变电站

安科瑞 李可欣 1、概述 AcrelCloud-1200分布式光伏运维云平台通过监测光伏站点的逆变器设备&#xff0c;气象设备以及摄像头设备、帮助用户管理分散在各地的光伏站点。主要功能包括&#xff1a;站点监测&#xff0c;逆变器监测&#xff0c;发电统计&#xff0c;逆变器一次图&…

解决找不到依赖项的问题(根源直接解决)

&#xff08;文章最后&#xff0c;我会介绍一个万能解决方法&#xff09; 问题&#xff1a; 原因&#xff1a; &#xff08;1&#xff09;可能是你的本地仓库里没有该依赖项。 &#xff08;2&#xff09;如果有的话&#xff0c;可能是没有更新同步到idea 解决方法&#xff1…

基于Springboot+mybatis+mysql+html教育培训中心教学系统

基于Springbootmybatismysqlhtml教育培训中心教学系统一、系统介绍二、功能展示1.用户登陆2.用户注册3.个人中心4.人员信息管理5.课程管理6.缴费管理7.学生考勤管理8.器材管理9.问题管理&#xff08;学生、老师&#xff09;一、系统介绍 系统主要功能&#xff1a; 管理员&…