制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)

这篇具有很好参考价值的文章主要介绍了制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2 ORBSLAM2 测试自己拍摄的数据集
        使用手机、摄像机等设备拍摄视频,对应我们只能使用单目 (Monocular)。


2.1对相机标定
        首先我们要对相机进行标定,使用 MATLAB 里面的标定工具包。标定好之
后创建一个单目模式下的 yaml,复制 TUM1.yaml 修改标定参数即可。


注意: 因为现在手机比较智能,要注意手机录像清晰度是可调节的,对应标
定出的数不同。一定要保证标定时的清晰度一定要和录像时的一样。标定时最
好不要选择拍照的方式,因为拍照和录像手机清晰度基本上也是不一样的。可
以用录像的方式来获取标定的数据,再用下面的代码隔几十帧取一帧,来实现
标定。

2.2制作自己的数据集
        录制一段视频,将视频转换成 ORBSLAM2 数据集的格式。代码如下可以指
定保存的图像的格式和隔多少帧保存一张。

/* Author(s):
 *        哇哈哈(WHH)
 */

#include <iostream>
#include "opencv2/opencv.hpp"
#include <string>
#include <fstream> 
using namespace cv;

void TransV2I();
 
// 描述:将视频帧转成图片输出
int main()
{
	TransV2I();
	return 0;
}

void TransV2I()
{
	std::cout<<"Enter the video for trans: ";
	std::string vido;
	std::cin>>vido;

// load video
	VideoCapture cap(vido);
//get info of video
	long TotalFrameNumber = cap.get(CV_CAP_PROP_FRAME_COUNT);
	int FrameRate = cap.get(CV_CAP_PROP_FPS);
	std::cout<<"Frame rate :"<<FrameRate<<std::endl;
	std::cout<< "Total frames: " << TotalFrameNumber <<std::endl;
 
//get rate for capture
	Mat frame;
	bool toStop = true;
	long CurrentFrame = 100000;
	std::cout<<"Save one after how many frames: ";
	int Rate;
	std::cin>>Rate;

//get format for images type
	std::string fomat;
	std::cout<<"Enter image format: ";
	std::cin>>fomat;
//path to write
	std::string folderpath = "DataforORBSLAM2/rgb/";
	std::string command;
	command = "mkdir -p "+ folderpath;
	system(command.c_str());

//write txt file
	std::ofstream OutFile;
	std::string FilePath = "dataforslam/rgb.txt";
    OutFile.open(FilePath);    //打开文件
//write info of images
	OutFile<<"# color images"<<std::endl;
	OutFile<<"#total "<<TotalFrameNumber<<" images"<<std::endl;


	while (toStop){
		cap.read(frame);

		if(CurrentFrame%Rate == 0){
			std::stringstream str1, str2;
			str1<<"6269."<<CurrentFrame<<"."<<fomat;
			str2<<"6269."<<CurrentFrame;
			imwrite(folderpath+str1.str(), frame);
			OutFile <<str2.str()<<"   rgb/"+str1.str()<< std::endl;
		}
		
		if((CurrentFrame-100000)>TotalFrameNumber-1){
			toStop = false;
		}
		CurrentFrame++;
		
}
	OutFile.close();
	std::cout<<"Done!\n";
}

3 OpenMVS 使用 ORBSLAM2 的位姿进行三维重建
        参考https://blog.csdn.net/qq34325730/article/details/118360533
        这里需要对 ORBSLAM2 和 OpenMVS 更改, 下载更改后的模块替换就行。
        记得把 DensifyPointCloud.cpp 里面的一个屏蔽符去掉如下图:

制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)

 

4效果

制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)       

 拍的数据集不是很行,效果一般。对建筑表面进行重建效果会比较好。文章来源地址https://www.toymoban.com/news/detail-419369.html

到了这里,关于制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)

    第一次运行,有些坑,然后告诉一下大家该如何自己解决的思路,毕竟每个人的实际运行环境不一样。 系统:联想Y7000,Ubunru20.04(已经安装ros noetic,推荐小鱼的一键安装ros)直接终端输入: 显卡驱动已经安装好,采用的GPU1050Ti 显卡安装,建议就用系统自带的安装方式(设

    2024年02月08日
    浏览(39)
  • 基于3D Gaussian Splatting与NeRF实现三维重建(使用IPhone创建数据集)

    本项目参考YouTube中博主( Spectacular AI ) 详细可了解:SpectacularAI官网 本文项目构建在Windows与Ubuntu中,二者在项目构建中并未有实质性的差距,可相互参考环境与参数的配置,本文即在Windows11(已配置好CUDA)中进行。 Windows下配置CUDA的方法可参考 :《TensorFlow-GPU-2.4.1与CUDA安

    2024年01月17日
    浏览(47)
  • 【三维重建】NeRF原理+代码讲解

    NeRF是2020年ECCV论文,任务是 做新视角的合成 ,是借助深度学习技术的计算机图形学任务,实现了摄像机级别的逼真的新视图合成。仅仅2年时间,相关work和论文就已经大量涌现。 论文 :https://arxiv.org/abs/2003.08934 TensorFlow代码 :https://github.com/bmild/nerf PyToch代码 :https://github.

    2024年02月01日
    浏览(43)
  • 【三维重建】三维重构基础知识、三维数据、重建流程

    1.使用几何建模软件,通过人机交互生成人为控制下的三维:3DMAX、Maya、AutoCAD、UG 2.获取真实的物体形状:三维重构 三维图像重构: 摄像机获取图像,对图像分析处理,结合CV知识推导出现实中物体的三维信息 从二维图像到三维空间的重构(模仿生物两只眼睛观察物体产生的

    2024年02月02日
    浏览(54)
  • 【卫星三维重建】卫星影像三维重建数据集-MVS3DM数据集介绍

    MVS3DM数据集是用于IARPA多视图卫星影像3D重建挑战赛的标准数据集(IARPA Multi-View Stereo 3D Mapping Challenge),该数据集由Digital Globe WorldView-3卫星影像以及机载激光雷达获取的影像覆盖范围内的点云数据作为算法真值数据组成。 卫星影像数据类型和数量 :包含50张WorldView3全色影像(

    2024年03月12日
    浏览(109)
  • 【三维重建】DreamGaussian:高斯splatting的单视图3D内容生成(原理+代码)

    项目主页:https://dreamgaussian.github.io/ (包含论文和代码) 提示:以下是本篇文章正文内容,下面案例可供参考 常用的3D内容创建方式,主要是 利用基于优化的通过分数蒸馏采样(SDS)进行的3D生成 。该方法每个样本优化较慢,很难实际应用。本文提出了DreamGaussian,兼顾效率

    2024年02月06日
    浏览(47)
  • 倾斜摄影三维模型数据几何坐标重建方法分析

    利用几何坐标变换等技术实现倾斜摄影三维模型数据的坐标重建,可以采用以下方法: 1、数据准备:首先,需要获取倾斜摄影影像数据。这些影像应包含多个视角下的拍摄图像,并覆盖同一场景。同时,还需要收集地面控制点的坐标信息,以提供参考和配准基准。 2、特征提

    2024年02月06日
    浏览(43)
  • OpenCV C++双目三维重建:双目摄像头实现双目测距

    目录 OpenCV C++双目三维重建:双目摄像头实现双目测距 1.目录结构 2.依赖库  (1) Ubuntu 18.04配置开发环境  (2) Windows配置开发环境 3.双目相机标定  (1)双目相机标定-Python版  (2)双目相机标定-Matlab版 4.相机参数配置 5. 双目测距 6. 运行Demo 7.双目测距的误差说明 8. 双目三维重建项

    2024年02月02日
    浏览(60)
  • 结构光三维重建(四步相移&多频外差法)matlab实现(一)

    前言:这里主要梳理自己在理解四步相移法和三频外差法,以及用MATLAB实现条纹图生成,四步相移求相位主值,三频外差相位展开(解包裹)的过程。 废话不多说,一些基本思想概念可以看下面参考文章,里面有详细介绍。这里主要对遇到的问题展开阐述。 由于用周期性变

    2024年02月16日
    浏览(41)
  • 【项目实战】三维重建:基于RGB-D数据集的TSDF算法

    主要流程: 计算每个体素在深度图像中的TSDF值,然后基于前一个体素的TSDF值更新后一个(加权平均),最后得到所有体素的结果,拼接为3D模型。 TSDF需要非常大的显存空间,GPU需要大概 2KB 存储单个体素的所有信息。因此, 只适用于小场景下的三维重建(如室内环境)。

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包