ORB-SLAM2同OpenMVS实现三维重建

ORB-SLAM2 位姿导出

Note:

为与OpenMVS进行对接本次进对ORB-SLAM2进行部分修改,使之可以为

OpenMVS提供稀疏点云、关键帧的位姿、内参,以及稀疏点云在各个View 中的可见性。

主要更改如下

.  Map文件下增添如下函数

 

public:

void Save(const string &filename,const cv::MatSize image_size);

void SaveMapPoint(ofstream &f, MapPoint* mp);

void SaveKeyFrame(ofstream &f, KeyFrame* kf); protected:

std::vector<int> KeyId;

.  System下增加:

void System::SaveMap(const string &filename,const

cv::MatSize image_size);

.  mono_tum.cpp或者orbslam的其他Examples中对

System::SaveMap(const string &filename,const cv::MatSize image_size)这个函数进行调用即可。

SLAM.SaveMap("../Examples/output/sfm.txt",im.size);

OpenMVS接受SLAM的数据格式

ORB-SLAM2

 

数据集地址:  https://vision.in.tum.de/data/datasets/rgbd-dataset/download#freiburg1_plant

ORB-SLAM2导出位姿验证

在与OpenMVS 进行对接之前,一定确保自己导出的信息是准确的,可以将 相机三位空间坐标点以及相机在空间中的位置保存成plyobj等三维格式, meshlab中进行查看,或者如果你用的rgb-d相机的话,同样可以将深度  图、 rgb图一同投影下来,在meshlab下进行查看

OPENMVS接口

为与SLAM进行对接,我们加入了read_pose.cpp read_pose.h这两个

c++文件,目的是对SLAM导出的位姿和稀疏点云进行读取,并对OpenMVS 进行初始化。

主要核心函数有

bool load_scene(string file,Scene &scene);

bool read_mvs_pose(string file,MVSPOSE &mvs_pose);

bool save_pointcloud_obj(string name, vector<POINT3F> points,int num_keyframes,RGB color)

InterfaceColMap接口理解

首先明确一点,我们SLAM的内容要如实的传入到Scene这个类中

首先将数据传入imgaes

然后将数据传入platforms

以及pointcloud

具体代码实现(节选)

// load and estimate a dense point-cloud

#define use_custom_pose #ifdef use_custom_pose

if(!load_scene(string(MAKE_PATH_SAFE(OPT::strInputFileNam e)),scene))

return EXIT_FAILURE;

#else

if

(!scene.Load(MAKE_PATH_SAFE(OPT::strInputFileName))) return EXIT_FAILURE;

#endif

三维重建过程

mesh重构 纹理贴图

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

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

相关文章

iOS shouldRecognizeSimultaneouslyWithGestureRecognizer 调用机制探索

shouldRecognizeSimultaneouslyWithGestureRecognizer 经常会看到&#xff0c;但是一直没有弄清楚其中的原理和运行机制&#xff0c;今天专门研究下 其运行规律 我们准备三个视图&#xff0c;如下&#xff0c;红色的是绿色视图的父视图&#xff0c;绿色视图 是蓝色视图的父视图…

Feign 配置全局日志存入mongo

1、开启feign日志 在application.yml 添加配置 feign:client:config:default:loggerLevel: FULL2、日志实体类 Document(collection "feignLogs") Data public class FeignLog {Idprivate String id;private String method;private String url;private LocalDate…

CTF-PWN-LLVM-【红帽杯-2021 simpleVM】

文章目录 参考检查逆向漏洞思路调试定位到PASS名exp 参考 https://bbs.kanxue.com/thread-274259.htm#msg_header_h2_6 http://www.blackbird.wang/2022/08/30/LLVM-PASS%E7%B1%BBpwn%E9%A2%98%E6%80%BB%E7%BB%93/ 检查 因为是用opt运行&#xff0c;加载动态库VMPASS.so的P…

开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(四)

一、前言 使用 FastAPI 可以帮助我们更简单高效地部署 AI 交互业务。FastAPI 提供了快速构建 API 的能力,开发者可以轻松地定义模型需要的输入和输出格式,并编写好相应的业务逻辑。 FastAPI 的异步高性能架构,可以有效支持大量并发的预测请求,为用户提供流畅的交互体验。此外,F…

基于STM32的智能花园灌溉系统

目录 引言环境准备智能花园灌溉系统基础代码实现&#xff1a;实现智能花园灌溉系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;花园灌溉管理与优化问题解决方案与优化收尾与总结 1. 引言 智能花园灌溉系统通过使用ST…

普元EOS学习笔记-EOS8.3精简版安装

前言 普元EOS是优秀的高低开结合的企业应用软件开发框架。 普元&#xff1a;这是普元公司的名字&#xff0c;普元信息&#xff0c;上市公司哦&#xff0c;这里就不过多安利了。 EOS&#xff1a;普元公司的企业应用开发系统&#xff0c;开发语言是基于Java&#xff0c;技术框…

在 UBUNTU 22.04 上逐步构建 Postal SMTP 服务器

构建 Postal SMTP 服务器来发送批量电子邮件是电子邮件营销人员的不错选择。Postal 功能非常强大&#xff0c;并拥有大量开发人员的支持。它是一个用 JavaScript 和 Ruby 编写的开源邮件服务器脚本。它可用于构建内部 SMTP 服务器&#xff0c;就像 Mailgun、Sendgrid、Mailchim…

LangChain入门学习笔记(七)—— 使用检索提高生成内容质量

大模型训练使用的数据是开放的、广泛的&#xff0c;因此它显得更加的通用。然而在有些应用场景下&#xff0c;用户需要使用自己的数据使得大模型生成的内容更加贴切&#xff0c;也有时候用户的数据是敏感的&#xff0c;无法提供出来给大模型进行通用性的训练。RAG技术就是一种解…

LabVIEW项目外协时选择公司与个人兼职的比较

​在选择LabVIEW项目外协合作伙伴时&#xff0c;外协公司和个人兼职各有优劣。个人兼职成本较低且灵活&#xff0c;但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制&#xff0c;尽管成本较高&#xff0c;但能提…

基于单片机火灾自动报警系统设计

摘 要&#xff1a; 我国的火灾自动报警技术已经相对的较为成熟&#xff0c;随着信息技术的发展&#xff0c;网络化、信息化在火灾自动报警器上的应用也越来越多。无线通信的方式使得报警器本身可以方便的应用于大大小小的环境&#xff0c;例如工厂、社区和学校等等。通过对单片…

音频分离人声和伴奏可以实现吗?手机人声分离工具10款无偿分享!

随着科技的飞速发展&#xff0c;音频处理技术已经取得了显著的进步&#xff0c;其中音频分离人声和伴奏已成为现实。这一技术不仅为音乐制作人和音频工程师提供了便利&#xff0c;更为广大音乐爱好者提供了无限的创作可能性。本文将为大家分享10款手机人声分离工具&#xff0c;…

JVM原理(二):JVM之HotSpot虚拟机中对象的创建寻位与定位整体流程

1. 对象的创建 遇到new指令时 当Java虚拟机遇到一个字节码new指令时。 首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否被加载、解析和初始化过。 如果没有&#xff0c;那么必须执行类的加载过程(加载、检查…

npm安装依赖报错——npm ERR gyp verb cli的解决方法

1. 问题描述 1.1 npm安装依赖报错——npm ERR! gyp verb cli npm MARN deprecated axiosQ0.18.1: critical security vuLnerability fixed in v0.21.1. For more information, npm WARN deprecated svg001.3.2: This SVGO version is no Longer supported. upgrade to v2.x.x …

华为实训案例

案例下载 案例内包含空拓扑图、配置完整的拓扑、以及步骤脚本文档&#xff0c;可按需下载。 拓扑图 任务清单 &#xff08;一&#xff09;基础配置 根据附录1拓扑图、附录2地址规划表、附录3设备编号表&#xff0c;配置设备接口及主机名信息。 将所有终端超时时间设置为永不…

SOLIDWORKS卡顿反应慢怎么解决 慧德敏学

如果您的SOLIDWORKS软件运行缓慢或反应迟钝&#xff0c;可以尝试以下方法来提高性能和响应速度&#xff1a; 一、硬件检查与升级&#xff1a; 检查计算机硬件配置是否满足SOLIDWORKS官方推荐的要求&#xff0c;特别是CPU、内存和显卡。如果配置较低&#xff0c;考虑升级硬件以…

哨兵模式--哨兵节点的功能?

哨兵节点的主要功能有&#xff1a; 集群监控&#xff1a;监控 主、从节点的健康状况&#xff1b;自动切换主节点&#xff1a;当 Master 运行故障&#xff0c;哨兵启动自动故障恢复流程&#xff1a;从 slave 中选择一台作为新 master。通知&#xff1a;让 slave 执行 replicaof…

社交风潮塑造者:探索用户在Facebook的影响力

在当今数字化社会中&#xff0c;Facebook不仅是人们社交互动的主要平台&#xff0c;更是塑造社交风潮和文化趋势的重要力量。本文将从另一个角度深入探讨用户在Facebook上的影响力&#xff0c;探索其如何通过个人行为和互动&#xff0c;影响和改变社会的各个方面。 个人表达和内…

Cryptographic algorithms—(Green-Book)加密算法

Cryptographic algorithms—加密算法 9.2.3 加密算法9.2.3.1 概述9.2.3.2 哈希函数9.2.3.3 对称密钥算法9.2.3.3.1 概述9.2.3.3.2 加密和解密9.2.3.3.3 高级加密标准9.2.3.3.4 加密操作模式9.2.3.3.5 消息认证码9.2.3.3.6 密钥包装9.2.3.3.7 Galois/Counter Mode9.2.3.3.7.1 概…

Python中相关软件安装

1. python安装 1.下载地址 https://www.python.org/downloads/2.选择安装版本 1. Anaconda安装 安装地址 -- 清华大学镜像站点 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/查看anaconda是否安装成功 2.conda安装好后&#xff0c;将镜像源修改为清华大学的镜像…

音频Balance源码总结

音频Balance源码总结 何为音频Balance&#xff1f; 顾名思义&#xff0c;Balance及平衡&#xff0c;平衡也就是涉及多方&#xff0c;音频左右甚至四通道&#xff0c;调节所有通道的音量比&#xff0c;使用户在空间内听到各个通道的音频大小不一&#xff0c;好似置身于真实环境…