Make3D数据集相关介绍

一、参考资料

Make3d数据集使用方法

二、相关介绍

1. 简介

Make3D 数据集的每帧图像的深度值均由激光雷达进行采集,相较于 Kinect 相机采集的深度信息,该测距仪可以得到室外图像更加精确的深度信息,而且测距范围更大,与普通的深度传感器相比还具有分辨率高、抗干扰能力强等特点。

注意说明:由于 Make 3D 图像中深度层次区分不明显,所以采用热力图表示其深度估计结果。

2. 训练集与测试集

Make3D 数据集是一个单目深度估计数据集,包含 534 对 RGB-D 图像对(包括 RGB 图像及其对应的深度图像)。其中,400 对图像对用于训练,134 对图像用于测试。 RGB 图像具有高分辨率,而深度图是低分辨率的。

注意:通常,Make3D 数据集只用来测试在KITTI数据集上训练好的权重的性能,也就是只作为测试集,因此只下载134张图片与对应的深度mat。

3. 下载链接

  1. Make3D数据集官方网站,由Cornell University提供:Make3D — Range Image Dataset

  2. Make3D数据集在超神经(HyperAI)平台上的介绍页面,提供了数据集的详细信息和下载选项:Make3D 单目深度估计数据集 - 超神经

三、常用操作

1. 提取.mat文件

import scipy.io # 加载.mat文件  
mat_data = scipy.io.loadmat('path_to_make3d_data.mat')  # 假设Position3DGrid是存储在mat_data中的一个变量  
if 'Position3DGrid' in mat_data:  position_3d_grid = mat_data['Position3DGrid']  # position_3d_grid 是一个三维数组,每个元素是一个三维坐标点  # 访问第一个点: first_point = position_3d_grid[0, 0, :]  # (H, W, Z)的结构  print(first_point)  # 输出第一个点的三维坐标  
else:  print("Position3DGrid not found in the .mat file.")  # 注意:这里的索引和维度可能需要根据实际的Position3DGrid数据结构来调整

一个 .mat 文件对应一张深度图,解析 .mat 文件,得到数据维度为 (55, 305, 4)。

  1. 第一个维度(55):Height高度,图像的垂直方向像素数量。
  2. 第二个维度(305):Width宽度,图像的水平方向像素数量;
  3. 第三个维度(4)
    • X坐标:网格点在三维空间中的X位置。
    • Y坐标:网格点在三维空间中的Y位置。
    • Z坐标:网格点在三维空间中的Z位置(对应于深度或距离)。
    • 额外信息:最大有效深度,设置为80。

在这里插入图片描述

2. 深度图可视化

import h5py
import scipy.io
import os
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')# 定义颜色映射
# cmap = plt.cm.jet
# cmap = plt.cm.hot
# cmap = plt.cm.plasma
cmap = plt.cm.viridis
# cmap = plt.cm.Greysdef show_depth():# 指定.mat文件路径path_mat_file = '/PATH/TO/Make3D/Gridlaserdata/depth_sph_corr-10.21op2-p-015t000.mat'path_rgb_image = '/PATH/TO/Make3D/Test134/img-10.21op2-p-015t000.jpg'# 使用scipy.io加载.mat文件mat_data = scipy.io.loadmat(path_mat_file)data = mat_data['Position3DGrid']# 可视化RGB图像image = Image.open(path_rgb_image)plt.figure(figsize=(8, 6))plt.subplot(2, 1, 1)plt.imshow(image)plt.title('Original Image')plt.axis('off')  # 不显示坐标轴# 可视化深度图像# depth_map[H, W, Depth]depth = data[:, :, 3]# 深度值归一化depth_normalized = (depth - np.min(depth)) / (np.max(depth) - np.min(depth))plt.subplot(2, 1, 2)plt.imshow(depth_normalized, cmap=cmap, interpolation='nearest')  # 选择深度图的第三维度进行可视化plt.title('Depth Map Visualization')plt.axis('off')  # 不显示坐标轴if __name__ == '__main__':show_depth()

在这里插入图片描述

3. 保存深度图

import h5py
import scipy.io
import os
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')# 定义颜色映射
# cmap = plt.cm.jet
# cmap = plt.cm.hot
# cmap = plt.cm.plasma
cmap = plt.cm.viridis
# cmap = plt.cm.Greysdef save_depth():# 指定.mat文件的根路径dir_mat_file = '/PATH/TO/Gridlaserdata/'# 保存深度图的路径depths_path = '/PATH/TO/make3d_depths/'if not os.path.exists(depths_path):os.makedirs(depths_path)for mat_item in os.listdir(dir_mat_file):print(mat_item)path_mat_file = os.path.join(dir_mat_file, mat_item)base_name = os.path.basename(mat_item)prefix_name = os.path.splitext(base_name)[0]# 使用scipy.io加载.mat文件mat_data = scipy.io.loadmat(path_mat_file)depth_map = mat_data['Position3DGrid']# depth_map[H, W, Depth]depth = depth_map[:, :, 3]depth_normalized = (depth - np.min(depth)) / (np.max(depth) - np.min(depth))depth_image = Image.fromarray(depth_normalized)depth_image_path = os.path.join(depths_path, f'{prefix_name}.png')plt.imsave(depth_image_path, depth_image, cmap=cmap)if __name__ == '__main__':save_depth()

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

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

相关文章

XORM 框架的使用

1、xorm 1.1、xorm 简介 xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。 特性 支持 struct 和数据库表之间的灵活映射,并支持自动同步事务支持同时支持原始SQL语句和ORM操作的混合执行使用连写来简化调用支持使用ID, In, Where, Limit,…

设备自动化技术商务咨询

​南京纳恩自动化科技有限公司,成立于 2010年。高新技术企业、软件企业,致力于为客户提供最佳的继电保护、电力监控、智慧用电、工业自动化系统以及基于大数据、云系统的产品解决方案和服务。 自动化行业深耕多年,成就丰富的电力自动化行业经…

2024-05-06 问AI: 介绍一下深度学习中的LSTM网络

文心一言 当谈到深度学习中的LSTM(Long Short-Term Memory)网络时,它是一种特殊的循环神经网络(RNN)架构,旨在解决传统RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。LSTM网络因其能够捕捉序列数据中的…

《网络安全技术 网络安全众测服务要求》

近日,全国网络安全标准化技术委员会发布《网络安全技术 网络安全众测服务要求》(GB/T 43741-2024,以下简称“众测服务要求”),并将在2024年11月1日正式实施。 《众测服务要求》确立了网络安全众测服务的角色及其职责&…

ElasticSearch 与 OpenSearch:拉开性能差距

Elasticsearch 与 OpenSearch:扩大性能差距 对于任何依赖快速、准确搜索数据的组织来说,强大、快速且高效的搜索引擎是至关重要的元素。对于开发人员和架构师来说,选择正确的搜索平台可以极大地影响您的组织提供快速且相关结果的能力。在我们…

【WebGIS实例】(13)MapboxGL 加载地形高程数据

前言 官网示例:Add 3D terrain to a map | Mapbox GL JS | Mapbox 大佬博客:Mapbox GL基础(七):地形数据的处理与加载 (jl1mall.com) 加载Mapbox地形数据 map.once(style.load, () > {map.addSource(mapbox-dem,…

微信小程序如何使用svg矢量图标

微信小程序如何使用自定义SVG矢量图标 在微信小程序中,经常会用到小图标来装饰界面,我们常用的方法就是引用第三方的图标,但会存在收费或者找不到合适的图标,这时候我建议可以自行编写svg图标代码,就可以随心所欲的使…

后台启动HIVE的JDBC连接

后台启动HIVE的JDBC连接 生活就像一杯咖啡,有时苦涩,有时香甜,但都是值得品味的经历。无论遇到什么挑战,记住在每一天的开始,你都有机会给自己倒上一杯清新的力量,为心灵添一抹温暖。勇敢地面对生活的苦与甜…

从零开始学RSA: [WUSTCTF2020]情书等5题

1 [WUSTCTF2020]情书 题目 Premise: Enumerate the alphabet by 0、1、2、..... 、25 Using the RSA system Encryption:0156 0821 1616 0041 0140 2130 1616 0793 Public Key:2537 and 13 Private Key:2537 and 937flag: wctf2020{Decryption}解题 前提:用0、…

【论文泛读】如何进行动力学重构? 神经网络自动编码器结合SINDy发现数据背后蕴含的方程

这一篇文章叫做 数据驱动的坐标发现与方程发现算法。 想回答的问题很简单,“如何根据数据写方程”。 想想牛顿的处境,如何根据各种不同物体下落的数据,写出万有引力的数学公式的。这篇文章就是来做这件事的。当然,这篇论文并没有…

五分钟了解等级保护、风险评估和安全测评三者的区别和联系?

等级保护 基本概念:网络安全等级保护是指对国家秘密信息、法人和其他组织和公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的安全产品实行按等级管理,对信息系统中发生的信息安全事件…

vs配置cplex12.10

1.创建c空项目 2.修改运行环境 为release以及x64 3.创建cpp文件 4.鼠标右键点击项目中的属性 5.点击c/c,点击第一项常规,配置附加库目录 5.添加文件索引,主要用于把路径导进来 6.这一步要添加的目录与你安装的cplex的目录有关系 F:\program…

【Qt】按钮类控件

文章目录 1 :peach:Push Button:peach:2 :peach:Radio Buttion:peach:3 :peach:Check Box:peach:4 :peach:Tool Button:peach: 1 🍑Push Button🍑 使⽤ QPushButton 表⽰⼀个按钮,这也是当前我们最熟悉的⼀个控件了,QPushButton …

[Algorithm][BFS][最短路问题][迷宫中离入口最近的出口][最小基因变化][单词接龙][为高尔夫比赛砍树]详细讲解

0.原理讲解 最短路径是图里的常见问题本专题主要讲解边权为一的最短路问题 边权全都相同即可,并非只能为一 方法:从起点开始,来一次BFS即可如何找出最短路径是多长呢? 拓展的层数,就是最短路的长度 1.迷宫中离入口最…

在k8s中安装Grafana并对接Prometheus,实现k8s集群监控数据的展示

🐇明明跟你说过:个人主页 🏅个人专栏:《Grafana:让数据说话的魔术师》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Grafana简介 2、Grafana的重要性与影响力 …

01-基本概念

1. 到底什么是数据结构? 数据结构是指在计算机中组织和存储数据的方式,它涉及到数据元素之间的关系以及对这些关系进行操作的方法。数据结构可以看作是一种将数据组织起来以便有效使用的方式,它关注数据的组织、存储和操作,以及如…

解决github的remote rejected|git存储库的推送保护

前言 git存储库的推送保护。当你试图推送代码到GitHub仓库时,由于存在与主分支(master)相关的仓库规则违规行为,推送会被拒绝了。这种保护机制帮助确保只有经过授权和符合规定的代码才能被合并到主分支,从而保护了主分…

上海亚商投顾:沪指创年内新高 化工板块掀涨停潮

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日高开震荡,沪指涨超1%续创年内新高,深成指、创业板指均涨约2%。化工股集体…

SQL 基础 | AS 的用法介绍

SQL(Structured Query Language)是一种用于管理和操作数据库的标准编程语言。 在SQL中,AS关键字有几种不同的用法,主要用于重命名表、列或者查询结果。 以下是AS的一些常见用法: 重命名列:在SELECT语句中&a…

maven冲突问题

在编写maven当中的依赖时&#xff0c;有时候会出现一些问题&#xff0c;这种问题为Maven的当中的依赖。 在导入依赖的时候&#xff1a;出现了两种依赖发生了版本冲突的问题&#xff1f; <?xml version"1.0" encoding"UTF-8"?> <project xmlns…