TUM数据集转为ElasticFusion的数据集格式.klg

2024-02-01 15:10

本文主要是介绍TUM数据集转为ElasticFusion的数据集格式.klg,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、TUM数据集转为klg格式并运行ElasticFusion

1、下载TUM数据集
下载地址:https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download
TUM数据集一共用了三个机器人,记成fr1, fr2, fr3。这三台相机的参数在这里: http://vision.in.tum.de/data/datasets/rgbd-dataset/file_formats#intrinsic_camera_calibration_of_the_kinect
我下载的是’freiburg3_teddy’,所包含的文件如下:
在这里插入图片描述说明:
(1) rgb/ 和 depth/目录存放着采集到的 png 格式图像文件。彩色图像为八位三通道,深度图为 16 位单通道图像。图像以时间戳命名。
(2) rgb.txt 和 depth.txt 记录了各文件的采集时间和对应的文件名。
(3) groundtruth.txt 为外部运动捕捉系统采集到的相机位姿,格式为(time, t x , t y , t z , q x , q y , q z , q w ),各个数据分别是:时间(time),位置(x,y,z),姿态四元数(qx, qy, qz, qw)。
可以画个图来看看里面的内容:
创建一个draw_groundtruth.py文件,然后将下面的代码复制进去。

#!/usr/bin/env python
# coding=utf-8import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3df = open("./groundtruth.txt")
x = []
y = []
z = []
for line in f:if line[0] == '#':continuedata = line.split()x.append( float(data[1] ) )y.append( float(data[2] ) )z.append( float(data[3] ) )
ax = plt.subplot( 111, projection='3d')
ax.plot(x,y,z)
plt.show()

在终端运行:

python3 draw_groundtruth.py

看到轨迹图:
在这里插入图片描述
2、TUM数据集转为klg格式的代码地址:https://github.com/HTLife/png_to_klg
将代码下载下来:

git clone https://github.com/HTLife/png_to_klg.git

3、彩色图、深度图和标准轨迹的采集都是独立的,轨迹的采集频率比图像高很多。在使用数据之前,需要根据采集时间,对数据进行一次时间上的对齐,以便对彩色图和深度图进行配对。原则上,我们可以把采集时间相近于一个阈值的数据,看成是一对图像。并把相近时间的位姿,看作是该图像的真实采集位置。

将png_to_klg中的associate.py文件,复制到TUM数据集下,然后执行代码:

./associate.py depth.txt rgb.txt  > associations.txt

就完成了深度图和rgb图像的一一对应。
注意:如果你是python3,则会因为python版本高而报这样的错:AttributeError: ‘dict_keys’ object has no attribute ‘remove’
解决方法,将下面两行代码:

first_keys = first_list.keys()
second_keys = second_list.keys()

修改为:

first_keys = list(first_list)
second_keys = list(second_list)

4、编译png_to_klg文件

cd png_to_klg
mkdir build && cd build
cmake ..
make 

5、将TUM数据集转换为.klg格式

编译好后进入png_to_klg的build下,在终端执行下行代码:

./pngtoklg -w '/数据集存储路径/' -o '/生成的.klg文件存储路径/xxx.klg' -t #生成.klg文件

即可生成.klg文件。
6、运行ElasticFusion
进入ElasticFusion的build文件夹下,运行下行代码:

./ElasticFusion -l (此处填写生成的.klg文件的路径) 

显示结果:
在这里插入图片描述
执行结束后会在.klg所在的文件夹下生成xxx.klg.freiburg文件,即就是ElasticFusion估计的相机位姿,之后就可以使用TUM提供的工具了,比如evaluate_ate.py。

其他:因为外部那个运动捕捉装置的记录频率比较高,得到的轨迹点也比图像密集很多,所以查找每个图像的真实位置,可以同样用对齐的方式来匹配associations.txt和groundtruth.txt中的时间信息:

python associate.py associations.txt groundtruth.txt > associate_with_groundtruth.txt

这时,我们的新文件 associations_with_groundtruth.txt 中就含有每个帧的位姿信息了。

二、误差评测

(待完成)

这篇关于TUM数据集转为ElasticFusion的数据集格式.klg的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/667627

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4