Make3D数据集相关介绍

news2025/1/20 21:56:23

一、参考资料

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.Greys


def 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.Greys


def 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.coloradmin.cn/o/1667513.html

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

相关文章

(动画详解)LeetCode面试题 02.04.分割链表

💖💖💖欢迎来到我的博客,我是anmory💖💖💖 又和大家见面了 欢迎来到动画详解LeetCode系列 用通俗易懂的动画的动画使leetcode算法题可视化 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读…

SOA构架介绍

1.SOA定义 SOA面向服务的架构是一种计算机环境设计、开发、部署和管理离散模型的方法,SOA中所有的功能都被定义成立独立的服务,所有的服务通过总线(ESB)或者流程管理连接。这种松耦合的结构使得服务器在交互的过程中无需考虑双方内部细节&am…

【云原生】 Kubernetes核心概念

目录 引言 一、部署方式回溯 (一)传统部署时代 (二)虚拟化部署时代 (三)容器部署时代 二、Kubernetes基本介绍 (一)为什么使用k8s (二)主要功能 &am…

数据库出现死锁的解决方法参考

死锁引起的原因一般是多个用户并发访问数据库导致的问题,或是因为某个进程挂死以后资源未释放导致的。通过onstat –p可查看deadlks项大于0即表示历史总计死锁次数。对于被锁的表进行操作的时候会出现-143 ISAM error: deadlock detected的错误。当其他会话访问此表…

FANUC机器人基本保养概述

对于工业机器人来说,定期保养机器人可以延长机器人的使用寿命。对于FANUC机器人来说,FANUC机器人的常规保养周期可以分为日常、三个月、六个月、一年、两年、三年。以下是FANUC机器人的基本保养周期概览: 在实际生产应用中,可以参…

【ROS2】节点

文章目录 ROS2 节点示例:创建并运行成功一个节点1. 创建功能包2. 编写源文件、CMakeLists.txt、package.xml3. 编译功能包4. 设置环境变量5. 运行节点6. 查看节点 参考链接 ROS2 节点 机器人的每一项功能,都被称为是一个节点。 每个节点都是一个独立的…

vm16安装最新版本的ubuntu虚拟机,并安装g++的步骤记录

背景 低版本的ubuntu安装G一直不成功,干脆安装最新版的 官网下载 bing搜索ubuntu 下载完成 vm16新建虚拟机 一直下一步,安装完成 终端输入命令 sudo apt-get update ᅟᅠ       sudo apt install gcc ᅟᅠ      sudo apt install g

proteus数模转换器DAC0832的应用

proteus proteus,即EDA工具软件。Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具。虽然国内推广刚起步,但已受到…

全学科知网普刊征稿中!即日提交,月内即可见刊!

在当前的学术环境下,论文发表的压力日益增大。当您需要评职称、申请学位、结项课题或完成其他有期限的学术要求时,快速发表普刊能够确保您及时满足这些需求,提升您的职业竞争力,为您的职业发展需求打下坚实基础。 我处普刊现积极…

攻防世界-web-fileclude(二)

题目 解题 题目源码 WRONG WAY! <?php include("flag.php"); highlight_file(__FILE__); if(isset($_GET["file1"]) && isset($_GET["file2"])) {$file1 $_GET["file1"];$file2 $_GET["file2"];if(!empty($…

嵌入式C语言高级教程:实现基于STM32的智能灌溉系统

⬇帮大家整理了单片机的资料 包括stm32的项目合集【源码开发文档】 点击下方蓝字即可领取&#xff0c;感谢支持&#xff01;⬇ 点击领取更多嵌入式详细资料 问题讨论&#xff0c;stm32的资料领取可以私信&#xff01; 智能灌溉系统能够根据土壤湿度和天气预报自动调整灌溉计划&…

记一些CISP-PTE题目解析

0x01 命令执行 直接payload: 127.0.0.1 & whoami&#xff0c;发现可以成功执行whoami命令 然后ls …/ &#xff0c;发现有个key.php文件 尝试用cat命令查看 发现不行被拦截了。&#xff08;其实题目过滤了常用的查看文件的命令 &#xff09; 这里有两种思路&#xff0c;第…

汽车商城系统

文章目录 汽车商城系统一、系统演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 汽车商城系统 一、系统演示 汽车商城 二、项目介绍 该汽车商城系统主要分为前台和后台两大功能模块&#xff0c;共包含两种…

7 Days yo Die 七日杀服务器开服联机教程

1、购买后登录服务器&#xff08;百度搜索莱卡云&#xff09;game.lcayun.com 进入控制面板后会出现正在安装的界面&#xff0c;安装时长约5分钟左右 安装成功后你就可以看到我们的控制台界面 复制服务器ip地址打开游戏➡加入游戏 有两种方法加入游戏 第一种方法&#xff1a;…

JWT生成RSA密钥文档

JWT生成RSA密钥文档 创建jwt文件夹 创建jwt文件夹 进入文件夹 进入jwt文件夹&#xff0c;输入cmd&#xff0c;如图 3、生成公钥私钥 keytool -genkeypair -alias pdm -keyalg RSA -keypass Gacrnd#123 -keystore pdm.jks -storepass Gacrnd#123 -alias&#xff1a;密钥的别名…

Nginx 基于域名的虚拟主机的配置实验

目录 虚拟主机解释 实验介绍 修改配置文件 一&#xff1a;创建2个虚拟主机的网页根目录 二&#xff1a;修改2个虚拟主机的首页的内容 三&#xff1a;真实机器添加域名解析记录 四&#xff1a;测试 虚拟主机解释 Nginx的虚拟主机是指一台服务器上同时托管多个网站的能力。…

2024年5月发布的SparkyLinux 8使用的是Debian 13 trixie 的更新源

2024年5月发布的SparkyLinux 8使用的是Debian 13 trixie 的更新源&#xff0c;然后我改了清华对应的更新源&#xff0c;更新成功。纯粹是测试&#xff0c;具体应以官网信息为主。

DRF 纯净版创建使用

【一】介绍 &#xff08;1&#xff09;使用原因 在Django中&#xff0c;contrib 包包含了许多内置的app和中间件&#xff0c;如auth、sessions、admin等&#xff0c;这些app在创建新的Django项目时默认是包含在内的。然而&#xff0c;在开发RESTful API时&#xff0c;可能不需…

线下线上陪玩APP小程序H5搭建设计-源码交付,支持二开!

一、电竞陪玩系统APP的概念 电竞陪玩系统APP是一种专门为电子竞技玩家提供服务的平台。通过这个平台&#xff0c;玩家可以找到专业的电竞陪玩者&#xff0c;他们可以帮助玩家提升游戏技能&#xff0c;提供游戏策略建议&#xff0c;甚至陪伴玩家一起进行游戏。这种服务不仅可以提…

阿里云部署ChatGLM-6B及ptuning微调教程

一、模型部署 1.进入阿里云人工智能平台PAI。 2.申请免费试用。 3.打开交互式建模 PAI-DSW。 4.新建实例。 5.填写配置。 6.实例准备完成后点击打开。 7.打开实例后点击Teminal。 8.在Teminal中依次输入以下命令并执行。 apt-get update apt-get install git-lfs git lfs ins…