简易版三维重建心得_visualsfm + cmvs/pmvs + meshlab三维重建实习心得-程序员宅基地

技术标签: meshlab  visualsfm  入门  简易  三维重建  


一、VisualSFM初步重建

二、MeshLab表面重建

1、Possion表面重建系数选择

  • Octree Deepth

Set the depth of the Octree used for extracting the final surface, Suggested range 5~10. Higher numbers mean higher precision in the reconstruction but also higher processing times. Be patient
设定八叉树提取最终曲面的深度,建议范围为5~10。较高的重建精度和较高的处理次数。

  • Solver Divide

This integer argument specifies the depth at which a block Gauss-Seidel solver is used to solve the Laplacian equation.Using this parameter helps reduce the memory overhead at the cost of a small increase in reconstruction time.
In practice, the authors have found that for reconstructions of depth 9 or higher a subdivide depth of 7 or 8 can reduce the memory usage.The default value is 8.
这个整数参数指定了Gauss-Seidel求解器用于求解Laplacian方程的深度。使用该参数有助于减少内存开销,而代价是重建时间的小幅增加。在实践中,作者发现,对于深度9或更高的重构,7或8的细分深度可以减少内存使用,默认值为8。

  • Sample per node

This floating point value specifies the minimum number of sample points that should fall within an octree node as the octree construction is adapted to sampling density. For noise free samples, small values in the range [1.0 ~ 5.0] can be used.
For more noisy samples, larger values in the range [15.0 ~ 20.0] may be needed to provide a smoother, noise reduced, reconstruction,The default value is 1.0.
这个浮点值指定了当八叉树构造适合于采样密度时,应该落在八叉树节点内的样本点的最小数目。对于无噪声的样品,可以使用 [1.0 ~ 5.0]范围内的小值。对于噪声较大的样本,可能需要在范围内较大的值[15.0 ~ 20.0]才能提供平滑、降低噪声、重建,默认值为1.0。

  • Surface offsetting

This floating point value specifies a correction value for the isosurface threshold that is chosen Values < 1 means internal offsetting, >1 external offsetting.Good values are in the range 0.5~2.The default value is 1.0 (no offsetting).
这个浮点值指定了等值面阈值的校正值<1表示内部偏移,>1外部偏移。好值在0.5~2之间,默认值为1.0(无偏移)。

三、VisualSFM+MeshLab实现三维重建步骤简述

1、三维重建

打开VisualSFM_windows_64bit(也可以使用cuda版),软件运行过程中会占满cpu,Log界面可查看进度,此步骤需要等待一段时间。

  • 点击按钮1将拍得的照片批量打开
  • 接着点击按钮2,利用SIFT算法计算图片每个像素点的特征(常见的用SIFT算子),之后利用SFM(structure from motion)对多张图片像素做匹配对应,通过上步得到的特征,从而估计相机参数,得到稀疏的3D信息
  • 点击按钮3,进行稀疏重建
  • 点击按钮cmvs利用CMVS/PMVS进行稠密重建,得到点云
    在这里插入图片描述

2、表面重建

  • 点击按钮1打开工程文件,此文件在上一步保存目录的00文件夹下,bundle.rd.out,没找到的话记得修改一下显示文件的拓展名,之后会又弹出一个窗口选择同一目录下的list.txt文件。导入图片和系数点云时会耗费一些时间,软件可能处于卡死状态,不要强制关闭。结束后点击按钮0,界面右侧会出现文件列表。
  • 点击按钮2,导入稠密点云文件,文件在…/gardenData/res.nvm.cmvs/00/models路径下,如果有多个.ply文件,导入之后记得合并成一个稠密云模型(在随便某个点云文件上右键->Flatten Visible Layers->修改选项->Apply)
  • 泊松表面重建。Filter–> Point Set–> Surface Reconstruction: Poisson,一般选择参数为10,8,5,1
  • 消除多余表面。Filters–> Selection–> Select faces with edges longer than (delete)
  • Filters–> Selection–> Select Non-Manifold edges (delete)
  • 参数化以及纹理投影。Filter-> Texture-> Parameterization + texturing fromregistered rasters
    在这里插入图片描述
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Magician0619/article/details/97118124

智能推荐

关于静态方法与静态属性的访问问题_静态内部类中的静态属性可以直接访问吗-程序员宅基地

文章浏览阅读3.8k次。在java中,static关键字代表的含义为"静态的",只要在方法或者属性前面加上了static关键字,这个方法或属性就属于类了,如果没有static关键字,方法或属性是属于这个类的对象。我们称加上static关键字的属性和方法为静态属性和静态方法,不加static关键字的属性和方法我们称为为普通属性和普通方法。普通属性和普通方法可以随着对象的多次创建而被重复使用,而静态属性和静态变量是唯一的,只..._静态内部类中的静态属性可以直接访问吗

echarts实现西安地铁图_echarts地铁图-程序员宅基地

文章浏览阅读4.6k次,点赞11次,收藏28次。前言: echarts实现西安地铁图效果图:官网入口实现代码:var data = [ { name: "地铁一号线", tooltip: { formatter: "{b}: 19999<br />" }, symbolSize: 0.1, value: [5, 750], x: 800, ..._echarts地铁图

不同传输类型_等比例压缩传输和变比例传输的区别-程序员宅基地

文章浏览阅读155次。类型   速率 距离 标准 编码 工作模式   10BASE-T UTP 10Mbps 100m IEEE802.3i       10BASE-2 200m       10BASE-5 500m       100Base-TX UTP-5类或匹配电阻为150Ω的STP 100Mbps 100M IEEE802.3 4B/5B曼_等比例压缩传输和变比例传输的区别

微信小程序--第一个新手项目_进公司第一天写微信小程序的项目-程序员宅基地

文章浏览阅读307次。这里写自定义目录标题页面设计全局三个文件Pages 目录文件创建页面把内容单元封装在view内部插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入页面设计全局三个文件分别是app.jsapp.jsonapp.wxss名称不可更改Pages 目录文件用来放各个页面的标_进公司第一天写微信小程序的项目

关于C++的string字符串拼接问题(和“字符转字符串”问题有关)_c++字符串拼接缺失-程序员宅基地

文章浏览阅读1.4k次。(只有气到我肺都炸了的情况下我才可能废一些时间去写博客(主要是写一些气话),但现在气消得差不多了我也骂不出什么话了。正文1、字符串拼接分软拼接和硬拼接(“软硬拼接”是我自己发明的词~实际上到底有没有这种说法我就没去管了)2、所谓软拼接,就是字符串后面加的是【字符串】;硬拼接就字符串后面加的是【字符】 3、软拼接,只会拼接'\0'之前的有效字符;硬拼接,是什么字符都能硬加进去,包括'\0'4、硬拼接如果拼接的是'\0',在判等的时候很大概率翻车。(在map的find函数里会要用到判等的。没错我就这翻_c++字符串拼接缺失

LVS集群基础概念-程序员宅基地

文章浏览阅读86次。当服务器遇到性能瓶颈需要进行扩展时,一般来说有两种解决思路:Scale-up 和 Scale out,也称作垂直扩展和水平扩展。常见的负载均衡器根据工作在的协议层划分可划分为:四层负载均衡:根据请求报文中的目标地址和端口进行调度七层负载均衡:根据请求报文的内容进行调度,这种调度属于「代理」的方式根据软硬件划分:硬件负载均衡:F5 的 BIG-IPCitrix 的 NetSca...

随便推点

sdut oj 数据结构实验之二叉树五:层序遍历(数组模拟)_数组模拟树的层次遍历-程序员宅基地

文章浏览阅读339次。链表二叉树链接如下sdut oj 数据结构实验之二叉树五:层序遍历 (链表).数组模拟方式见下文Description已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。Input输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。Output输出二叉树的层次遍历序列。SampleInput2abd,,eg,,,cf,,,xnl,,i,,u,,Outpu_数组模拟树的层次遍历

ListView分页加载数据_listview按页请求数据-程序员宅基地

文章浏览阅读598次。ListView分页加载数据ListView分页加载 在Android中是一个经常用到的技术,当我们需要加载大量的数据到列表显示时,假如一次性把所有数据加载完毕,可能会导致整个ListView列表卡顿,给用户的体验也非常不好。因而,我们可以将数据分为多次加载,每次加载其中的一部分,用户有需求的时候再加载其他部分,这样的设计会更加友好。 ListView分页原理在日常开发中,我们可能会遇到以下两种情_listview按页请求数据

前端控制权限隐藏按钮 vue自定义指令v-has-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏37次。1.通过请求获取权限,放入localStorage:(这里是多个权限,保存为字符串,用逗号隔开)window.localStorage.setItem("permissionPage", "editPage,detailPage");window.localStorage.setItem("permissionButton", "canEdit,canDelete");2.在main.ts中引入:import hasPermission from '@/common/utils/hasPermi_v-has

用java代码实现九九乘法表_java用循环和分支结构写九九乘法表-程序员宅基地

文章浏览阅读6.8k次,点赞8次,收藏23次。分析乘法表发现,整体有九行,第一行是一列,第二行是两列,第三行三列.....第九行对应有九列,所以它的行数对应就有多少列,这样我们可以通过借助行数来控制它的列数,以此来实现乘法表的打印。具体代码实现:for循环public class MultTable { public static void main(String[] args) { //此处调用九九乘法表方法实现打印 multMethod(); } public static void multMethod() { /_java用循环和分支结构写九九乘法表

数据库学习整理之常见运算符_数据库运算符-程序员宅基地

文章浏览阅读6.1k次。运算符概述1) 算术运算符执行算术运算,例如:加、减、乘、除等。2) 比较运算符包括大于、小于、等于或不等于、等等。主要用于数值的比较、字符串的匹配等方面。3) 逻辑运算符包括与、或、非和异或、等逻辑运算符。其返回值为布尔型,真值(1 或 true)和假值(0 或 false)。4) 位运算符包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算必须先将数据转换为补码,然后在根据数据的补码进行操作。运算完成后,将得到的值转换为原来的类型(十进制数),返回_数据库运算符

龙芯软件开发(24)-- PCI设备初始化2_龙芯pci中断绑定-程序员宅基地

文章浏览阅读87次。龙芯软件开发(24)-- PCI设备初始化2 ..._龙芯pci中断绑定

推荐文章

热门文章

相关标签