Visualsfm与meshlab三维重建_meshlab 根据照片重建模型-程序员宅基地

技术标签: meshlab  软件  visualsfm  三维重建  

Visualsfm与meshlab三维重建
目前使用最方便且广泛的三维重建是利用免费软件visualsfm和meshlab对物体进行三维重建。Visualsfm是基于SIFT提取特征点的匹配软件,能够做到对多幅图像进行特征提取和稀疏点云,稠密点云的生成。Meshlab主要是完成对物体表面的重建和纹理贴图。一般通过泊松表面方程进行表面重建。
1、 visualsfm的操作步骤
a) visualsfm、PMVS和CMVS应该结合起来使用。其中PMVS和CMVS是用于将visualsfm生成的稀疏点云稠密化的软件部分
这里写图片描述
图1 visualsfm和pmvs cmvs应该包含的内容
下载链接:https://pan.baidu.com/s/1kVqYMVX
b) visualsfm导入文件
其中第四步中将输出一个文件夹和一个nvm文件。文件夹中的文件以后将用在meshlab重建中。
这里写图片描述
图2 visualsfm操作步骤
这里写图片描述
图3 第四步的输出

2、 meshlab操作步骤
对于meshlab的操作网上也很完全,只不过那些大部分是关于旧版本的操作流程。我这里下载的是2016.12版本,相较于旧版本有些地方操作有变动。
a) 在上一步生成的文件夹**\00\中找到bundle.rd.out文件,拖入meshlab中。此时弹出加载list文件对话框,选择list.txt文件。
这里写图片描述
图4 选择list.txt文件,其中包含的是该文件夹下所有图片的路径和名称
b) File->Import Mesh导入model文件夹中的ply文件,有几个就导入几个;
c) 在以前的版本中需要将现有的mesh层合并(在右边的视图框中右击任一option->flatten visible layer),现在这个版本不需要。官网的解释是更新之后的poisson表面重建能够自动进行这个合并操作;鼠标左键能够对模型进行旋转观察操作,中键滚轮能够平移模型的位置;可以选择显示相机位置,在render->show camera,调整scale factor能够调整相机显示大小。
这里写图片描述
图5 相机显示
d) 先去除杂点,然后进行泊松表面重建。这一步很是麻烦,假如你的模型不大,生成的其他杂点特别的多,你可以选择在这一步把它们都框起来删除,或者在下一步中通过删除生成的面来得到一个干净点的模型。(有什么方便的操作我也不太清楚)
这里写图片描述
图6 左边的是选择点,右边是删除点。相邻的是对面的操作(此时没有完成表面重建时模型中还不存在面,因此按另外两个按钮会提示no face)
e) 进行泊松表面重建,选择filters->remershing ,simplification and reconstruction->screened poisson surface reconstruction
在这一步中将interpolation weight对应的数字调成0,然后reconstruction depth越大,重建效果越好。网上选的10左右
这里写图片描述
图6 泊松重建选项
f) 上面的操作会生成一个气泡把模型包起来,接下来使用Filters –> Selection –> Select faces with edges longer than把模型中多余的面去除。这一步中需要选中poisson mesh层,否则会提示错误
这里写图片描述这里写图片描述
图7 视图框;调整threshhold打开preview,被选中将被删除的面将会显示红色。点击apply之后用之前的删除面按钮对选中面进行删除。这是
这里写图片描述
图8 与上面方法对应的手动删除多余面的操作
g) 生成纹理,Filter –> Texture –> Parameterization + texturing from registered rasters。
h) 投影纹理,Filter –> Texture –> Project active rasters color to current mesh, filling the texture。这里可以设置分辨率,512的2的二次方倍:512 / 1024 / 2048 / 4096 / 8192…分辨率越高,则结果越清晰
i) Export Mesh as…导出文件(假如下次想显示,直接在meshlab中导入生成的ply文件,不过要将生成的纹理图与该文件放在同一目录下)。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38543989/article/details/78329845

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue