sfm点云代码_VisualSFM使用方法与心得

关于VisualSfM的更多内容

组合多个模型(What if VisualSFM produces multiple models?):

按照上述步骤进行稀疏重建后,理论上可以得到很好的模型。如果结果产生了多个模型,要想把多个模型合成成一个,点击菜单中的“SfM->More Functions->Merge Sparse Models”。log信息中会提示你各个模型中有多少共享的特征点,如果特征点数量小于程序默认的最小值,则不会进行模型融合。编辑VisualSfM路径下的nv.ini文件,可以修改程序要求的最小值“param_model_merge_min_matches ”(默认是100),把该参数改成小于模型间共享特征点数量的一个数(不宜小于10),再执行“SfM->More Functions->Merge Sparse Models”应该就可以融合有共享特征的模型了。如果模型之间一个共享特征都没有,那就只能从头来了。

稠密重建(Dense reconstruction):

在稀疏重建结束后,点击CMVS可以对模型进行稠密重建。CMVS会对样本进行聚类,再根据每一个聚类生成一个ply模型文件,生成时间较长,需要耐心等待。

中国农业大学东校区体育馆的稠密重建示例如下:

中国农业大学工学院的稠密重建示例如下:

输出格式(The output format: N-View Match (NVM) & PLY):

NVM

理解NVM文件最简单的方法就是用TXT文本文件或Sublime Text打开,就可以直观的看到其组织方式。

NVM_V3

2

et007.jpg    660.197875977 0.998820995653 0.0275106001103 -0.0259087505623 0.0304716951484 0 0 0 0 0

et008.jpg    660.197875977 0.160476730087 -0.112869970691 -0.125560022607 -0.972492485698 -0.380315317109 -0.867596366593 0.320369513256 0 0

1111

-0.16864857602 0.290092727826 3.09711024403 231 201 214 2 0 0 -72.4277801514 22.055480957 1 3 158.19152832 -77.7308959961

…………

2代表2张照片,即下面2行,每一行是一个照片的参数。参数按空格分割依次是 0

然后1111代表有1111个点,每一行是一个点的信息,参数按空格分割依次是

一般我们只关心XYZ和RGB,取前6维数据即可。

util.h文件提供了C++版本的nvm文件解析方法。我自己用python写了一个。其实就是按行解析,每一行以空格' '作为分隔符,就可以得到如下文件,因为pandas存储CSV是无序的,所以列没有按顺序保存。

其中dataframe是每一张照片对应的相机参数,坐标(XYZ)和四元数(WPQR)如下:

point_dataframe是点云文件,每一行对应一个点的颜色(RGB)和坐标(XYZ)如下:

PLY

是一种电脑档案格式,全名为多边形档案(Polygon File Format)或斯坦福三角形档案(Stanford Triangle Format)。

稠密重建的结果会保存成PLY文件格式。它的具体格式如下:

ply

format ascii 1.0

element vertex 257684

property float x

property float y

property float z

property float nx

property float ny

property float nz

property uchar diffuse_red

property uchar diffuse_green

property uchar diffuse_blue

end_header

-0.721213 -2.01925 2.6344 0.130806 0.0792633 -0.988234 205 214 218

-0.991508 -1.99528 2.58972 0.163215 0.0746168 -0.983765 195 202 202

…………

前门是头文件,property描述了头文件之后的每一列的特征。也就是说,在end_header之后,按空格分隔,这9个数字依次代表点的坐标XYZ,法向量nx、ny、nz,和像素RGB。

这样只需要按类似方法解析就可以使用了。

坐标系统(coordinate system):

Documentation原文说”As for the image coordinate system, X-axis points right, and Y-axis points downward, so Z-axis points forward.”

即X轴指右,Y轴指下,Z轴指前。这和openGL与Unity的坐标系统都不同,使用时注意坐标矫正。

用Unity游戏引擎进行可视化(Visualization with Unity):

Unity的Asset store上有很多点云库,我随便下载了一个。

把我们的点云数据转成了它要的off文件,就可以使用在unity里查看点云了。需要注意的是,要把读取坐标的代码修改一下,读取坐标y的时候要乘以-1,这样显示结果才是正确的。

off文件具体形式如下:

COFF

20733 0 0

0.253539073845 -0.100282664831 4.76099905695 20 24 12 255

1.53241726658 -2.33590458129 5.98022141801 62 58 52 255

…………

第二行表示点的数量

后面的参数按行分割就是每一个点,按空格分割是XYZ和RGB。

我们也可以对相机位姿进行可视化,可以看到可上图结果是差不多的。需要注意的是相机的y坐标和四元数Q也要乘以-1。

最后用unity自带相机对重建结果进行可视化验证。把相机坐标和角度赋值给unity相机以后,调整unity相机的Fov(field of view),我这里是50。然后以当前位姿拍摄的照片作为相机背景,即可得到如下效果。

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

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

相关文章

macos mojave_使Ubuntu看起来像macOS Mojave的黑暗模式

macos mojaveIf you’re a Linux user who likes the look of the dark mode coming in macOS Mojave, you’re in luck: there’s a GTK theme just for you. 如果您是Linux用户,并且喜欢macOS Mojave中的黑暗模式外观,那么您很幸运:这里有一…

html的列表标签

列表一般应用在布局中的新闻标题列表和文章标题列表以及网页菜单等。 例如这个就是一个列表&#xff1a; 列表标签有几种&#xff0c;分别是有序列表&#xff0c;无序列表&#xff0c;定义列表。 有序列表<!DOCTYPE html> <html lang"en"> <head>&…

撬锁锤怎么用_安全锤是啥?消防蜀黍教你怎么选?如何快速破拆逃生?

逃生锤又叫安全锤&#xff0c;生活中很多地方都可以看到&#xff0c;公交车、地铁窗边都少不了它们的身影它的款式也是五花八门&#xff0c;那么问题来了当遇到突发状况被困车内时&#xff0c;哪种破窗工具最有效&#xff1f;又该如何快速逃生自救&#xff1f;近日&#xff0c;…

WSUS技术概览

WSUS新功能展示: 支持更多微软产品更新-->Windows Office MS SQL Server Exchange ......基于产品及分类筛选下载更新的能力更多语言支持定位更新目标计算机或计算机组的能力-->分发前,测试更新; 保护运行特定应用程序的计算机; 灵活使用Deadline; ...... 见下…

Java基础学习总结(16)——Java制作证书的工具keytool用法总结

2019独角兽企业重金招聘Python工程师标准>>> 一、keytool的概念 keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书&#xff0c;用于&#xff08;通过数字签名&#xff09;自我认证&#xff08;用户向别的用户/服务认证自己&#xff09…

什么是文件扩展名?

A file extension, or filename extension, is a suffix at the end of a computer file. It comes after the period, and is usually two-four characters long. If you’ve ever opened a document or viewed a picture, you’ve probably noticed these letters at the end…

变量与常量

什么是变量/常量&#xff1f; 变量是计算机内存中的一块区域&#xff0c;变量可以存储规定范围内的值&#xff0c;而且值可以改变。基于变量的数据类型&#xff0c;解释器会分配指定内存&#xff0c;并决定什么数据可以被存储在内存中。常量是一块只读的内存区域&#xff0c;常…

python蓝牙编程_蓝牙编程经典程序!

文档从网络中收集&#xff0c;已重新整理排版.word版本可编辑.欢迎下载支持.1word版本可编辑.欢迎下载支持.L2CAP socketsExample 4-4. l2cap-server.c#include #include #include #include #include int main(int argc, char **argv){struct sockaddr_l2 loc_addr { 0 }, rem…

[项目总结]在ios中使用soundtouch库实现变声

这篇文章是项目总结了。 做了段时间的项目&#xff0c;过程中也遇到了很多麻烦&#xff0c;但是好在终于都解决了&#xff0c;这里是这里是项目之后凭着记忆总结出来&#xff0c;大家有遇到同样的问题&#xff0c;希望能参考了&#xff0c;但是我记忆可能不太好了&#xff0c;要…

Myeclipse优化配置

2019独角兽企业重金招聘Python工程师标准>>> 作为企业级开发最流行的工具&#xff0c;用Myeclipse开发java web程序无疑是最合适的&#xff0c;java web前端采用jsp来显示&#xff0c;myeclipse默认打开jsp的视图有卡顿的现象&#xff0c;那么如何更改jsp默认的打开…

Java多线程之静态代理

1 package org.study2.javabase.ThreadsDemo.staticproxy;2 3 /**4 * Date:2018-09-18 静态代理 设计模式5 * 1、真实角色6 * 2、代理角色&#xff1a;持有真实角色的引用7 * 3、二者实现相同的接口8 * 举例说明&#xff1a;Couple类和Company类都实现了Marry&#xff0c;…

Google在Android P中隐藏了真棒的按应用自动旋转功能

Historically, when you turn your phone on its side, the screen rotates. To keep this from happening, you can lock the orientation. But with Android P, Google included a way to have to the best of both worlds. 从历史上看&#xff0c;当您将手机侧放时&#xff…

python 位置参数、默认参数、可变参数位置关系_python的位置参数、默认参数、关键字参数、可变参数区别...

一、位置参数调用函数时根据函数定义的参数位置来传递参数#!/usr/bin/env python#codingutf-8defprint_hello(name, sex):sex_dict {1: u先生, 2: u女士}print hello %s %s, welcome to python world! %(name, sex_dict.get(sex, u先生))#两个参数的顺序必须一一对应&#xff0…

2015年终总结

2019独角兽企业重金招聘Python工程师标准>>> 2015年终总结 用勇气改变可以改变的事情&#xff0c;用胸怀接受不可以改变的事情&#xff0c;然后用智慧分辨两者的不同&#xff01; 短信平台sms 影像系统fastfile 统一信任中心uts(单点登录&#xff09; 简历增加 总结…

笔记本本地连接显示电缆拔出_没有安全电缆槽的笔记本电脑如何固定?

笔记本本地连接显示电缆拔出Historically laptops included a slot in the side for attaching security cables–as seen in the photo here–but increasingly more slender laptops like ultrabooks are omitting the lock-slot from their case design. How do you properl…

JMeter中添加dubbo相关插件异常问题解决

从网上下载了一个dubbo的插件&#xff0c;然后放到JMeter的/lib/ext目录下&#xff1a; 然后启动直接异常 发现启动不了&#xff0c;然后下载了一个全新的JMeter3.2将dubbo插件放到同样的目录&#xff0c;启动&#xff0c;没有问题&#xff1a; 那应该不是JMeter本身的问题 通过…

向量空间余弦相似度

设向量a和向量b 则a•b|a||b|cos,|a|和|b|分别为两向量的模 cos即为两向量的余弦值&#xff0c;所以cosa•b/|a||b| 距离和相似性度量: http://blog.sina.com.cn/s/blog_6045a9da01011nk7.html 转载于:https://www.cnblogs.com/lsai/p/3715948.html

linux提升文件夹权限命令_Linux常用命令_(文件权限)

Linux权限管理&#xff1a;二、权限管理1、3种基本权限在Linux中&#xff0c;将使用系统资源的人员分为4类&#xff1a;超级用户、文件或目录的属主、属主的同组人和其他人员。超级用户拥有对Linux系统一切操作权限&#xff0c;对 于其他3类用户都要指定对文件和目录的访问权限…

Servlet异常

一、http status 404 解决办法&#xff1a;检查web.xml中的配置文件&#xff0c;发现jsp页面的提交路径action和web.xml中的路径不匹配&#xff0c;将其修改过来。转载于:https://www.cnblogs.com/ltfxy/p/9671256.html

disk genius_如何预约Apple Store商店或Genius Bar

disk geniusMaybe you have a cracked iPhone screen or your MacBook Pro isn’t charging properly. Whatever your issue, there’s an app for that! If you need tech support or repairs for your Apple device, it’s easy to set up a service appointment right from …