3D视觉专用名词概念解释,深度图、点云图、IR图、RGB图像

本文介绍了深度相机如何生成深度图、点云图以及IR和RGB图像,着重讨论了这些数据结构的生成原理、位深度和相关参数,包括内参、外参和畸变处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🌞欢迎来到深度学习的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


1. 深度图

深度图中的单个像素值是空间中物体的某个点到垂直于左红外镜头光轴并通过镜头光心(深度相机光学零点)平面的垂直距离。

深度图是深度相机视野内所有点的深度数据构成的矩阵。深度图是一个16bit位深的单通道矩阵,单位为毫米。没有深度信息的点值为0。为直观的体现不同距离数值,在SDK提供的sample程序中,输出的深度图均被映射到了RGB色彩空间,所以显示出来的结果为RGB三通道8bit位深的位图,深度数据无外参,无畸变,只能提供用于转换点云数据的内参。

2.点云图

    通过深度相机得到的物体外观表面的点数据集合是点云。使用深度相机得到的点云信息为三维坐标(X,Y,Z)。点云图是深度相机捕捉到的所有点的点云信息构成的数据矩阵。每点为3个float类型x,y,z值。没有三维空间信息的点为(0,0,0)。

点云图数据格式。

3. IR图

IR图像为红外图像传感器输出的红外图像。在输出深度图的时候,部分型号的相机输出的IR图像是被系统处理过的图像,如果需要看原始的IR图像,需要关闭深度图像输出。关闭深度图像输出后,激光投射器也会自动关闭。如果需要打开激光器,需主动调用SDK API关闭激光器的自动控制功能,并且设置激光机强度,才能看到正常的红外图像传感器图像。IR图像分为左IR图和右IR图,二者均包含内参和畸变参数,但是因为左IR和深度图是同一个空间坐标系,所以左IR图像无外参。

4. RGB图像

不同型号的Percipio相机会输出不同数据类型的RGB图像。其中一类RGB图像传感器含有硬件ISP模块,输出机为正常的YUV422/JPG图像,经OPENCV处理即可显示为RGB图像。另一类RGB图像传感器没有硬件ISP模块,输出的raw bayer图像数据显示为图像时,画面颜色”偏绿”,经过SDK的软件ISP处理(如白平衡),才可以显示为正常色彩空间的RGB图像; 没有硬件ISP模块的RGB图像传感器可以确保输出的图像数据与IR图像数据同步。RGB图像传感器组件提供了内参,外参数,畸变参数。

在Python中,你可以使用如PIL库处理RGB图像,而Open3D库则用于创建和操作点云。以下是将RGB图像深度图结合生成彩色点云图的基本步骤: 1. **导入必要的库**: ```python import cv2 import numpy as np from PIL import Image import open3d as o3d ``` 2. **读取RGB图像深度图**: ```python rgb_img = cv2.imread('rgb_image.png') depth_img = cv2.imread('depth_image.png', cv2.IMREAD_ANYDEPTH) # 注意深度图通常是以灰度形式存储,需要指定正确的读取模式 ``` 3. **预处理深度图**: - 确保深度图是浮点数类型,并转换到合适的范围(例如0到1米) ```python depth_img = depth_img.astype(np.float32) / max(depth_img.max(), 1) ``` 4. **将深度映射到颜色空间**: - 将每个深度值转换成对应的RGB颜色 ```python depth_colors = cv2.applyColorMap((depth_img * 255).astype(np.uint8), cv2.COLORMAP_JET) ``` 5. **创建点云数据结构**: ```python points = [] colors = [] for i in range(rgb_img.shape[0]): for j in range(rgb_img.shape[1]): x, y = (j, i) # 注意深度图的索引可能是颠倒的,这里假设它们对应 if depth_img[i, j] > 0: # 只保留有深度信息的像素 points.append([x, y, depth_img[i, j]]) colors.append(depth_colors[i, j]) ``` 6. **构建点云并可视化**: ```python point_cloud = o3d.geometry.PointCloud() point_cloud.points = o3d.utility.Vector3dVector(points) point_cloud.colors = o3d.utility.Vector3dVector(colors) o3d.visualization.draw_geometries([point_cloud]) ``` 注意:这个过程假定你的RGB深度图具有相同的尺寸并且能匹配在一起。实际应用中,你可能需要进行坐标校准或其他特定的处理步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿云阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值