Open3D有一个图像数据结构。它支持各种函数,例如read_image、write_image、filter_image和draw_geometries。Open3D 图像可以直接转换为或者从 numpy数组转换。
Open3D RGBDImage由两个图像组成,分别是RGBDImage.depth和RGBDImage.color。我们要求将两个图像注册到相同的相机框架中并且具有相同的分辨率。
Redwood dataset
Redwood dataset是一个数据集。
读取和可视化 RGBDImage。
class open3d.data.SampleRedwoodRGBDImages |
介绍: SampleRedwoodRGBDImages的数据类包含来自Redwood RGBD数据集 living-room1 的 5 个颜色和深度图像的样本集。 |
方法: __init__(self:open3d.data.SampleRedwoodRGBDImages,data_root:str=“”)->None |
属性: color_paths:大小为 5 的彩色图像样本的路径列表。使用 color_paths[0]、color_paths[1] ... color_paths[4] 访问路径 data_root:获取数据根目录。数据根在构建时设置或自动确定 depth_paths:大小为 5 的深度图像样本的路径列表。使用 depth_paths[0]、depth_paths[1] ... depth_paths[4] 访问路径 download_dir:获取下载目录的绝对路径 extract_dir:获取提取目录的绝对路径 odometry_log_path:相机里程计日志文件 odometry.log 的路径 prefix:获取数据集的前缀 reconstruction_path:从 TSDF 重建点云的路径 rgbd_match_path:颜色和深度图像匹配文件 rgbd.match 的路径 trajectory_log_path:相机轨迹日志trajectory.log 的路径 |
open3d.io read_image(filename) |
函数功能: 读取图像文件 |
参数: filename(str):文件路径 |
返回: open3d.geometry.Image |
open3d.geometry.RGBDImage create_from_color_and_depth(color,depth,depth_scale=1000.0,depth_trunc=3.0, convert_rgb_to_intensity=True) |
函数功能: 从彩色图像和深度图像生成RGBDImage的函数 |
参数: color(open3d.geometry.Image):彩色图像 depth(open3d.geometry.Image):深度图像 depth_scale(float,optional,default=1000.0):比例深度值。深度值将首先被缩放,然后被截断 depth_trunc(float,optional,default=3.0):大于depth_trunc 的深度值被截断为 0。深度值将首先被缩放,然后被截断 convert_rgb_to_intensity(bool,optional,default=True):是否将 RGB 图像转换为强度图像 |
返回: open3d.geometry.RGBDImage |
默认转换函数 create_rgbd_image_from_color_and_depth 从一对彩色和深度图像创建一个 RGBDImage。将彩色图像转换为灰度图像,存储在 [0, 1] 范围内的浮点数(float)中。深度图像存储在浮点数中,以米为单位表示深度值。
转换后的图像可以呈现为 numpy 数组。
给定一组相机参数,RGBD图像可以转换为点云。
open3d.geometry.PointCloud create_from_rgbd_image(image,intrinsic,extrinsic=(with default value),project_valid_depth_only=True) |
函数功能: 从 RGB-D 图像和相机创建点云的函数。给定 (u, v) 图像坐标处的深度值 d,对应的 3d 点为: z=d/depth_scale x=(u-cx)*z/fx y=(v-cy)*z/fy |
参数: image(open3d.geometry.RGBDImage):输入图像 intrinsic(open3d.camera.PinholeCameraIntrinsic):相机的内在参数 extrinsic(numpy.ndarray.float64,optional):数组 ([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0 ., 0., 1.]]) project_valid_depth_only(bool,optional,default=True) |
返回: open3d.geometry.PointCloud |
class open3d.camera.PinholeCameraIntrinsic |
介绍: PinholeCameraIntrinsic 类存储固有的相机矩阵,以及图像的高度和宽度 |
方法: __init__(self):重载功能 1.__init__(self):默认构造函数 2. __init__(self,arg0):复制构造函数 arg0(open3d.camera.PinholeCameraIntrinsic) 3.__init__(self,width:int,height:int,fx:float,fy:float,cx:float,cy:float) 4.__init__(self,param:open3d.camera.PinholeCameraIntrinsicParmeters) get_focal_length(self)-> Tuple[float, float]:返回 X 轴和 Y 轴焦距元组中的焦距 get_principal_point(self)-> Tuple[float, float]:返回 X 轴和.Y 轴主点的元组中的主点 get_skew(self)->float:返回偏斜 is_valid(self)->bool:如果宽度和高度都大于 0,则返回 True set_intrinsics(self, width:int, height:int, fx:float, fy:float, cx:float, cy:float)->None:设置相机内在参数 width:图像的宽度 height:图像的高度 fx:X轴焦距 fy:Y轴焦距 cx:X轴原理点 cy:Y轴原理点 |
属性: height:int:图像的高度 intrinsic_matrix:内在相机矩阵 [[fx, 0, cx], [0, fy, cy], [0, 0, 1]] width:int:图像宽度 |
SUN dataset
在本节中,我们将展示如何读取和可视化 SUN 数据集的 RGBDImage。
class open3d.data.SampleSUNRGBDImage |
介绍: SampleSUNRGBDImage的数据类包含来自SUN RGBD数据集的彩色图像 SUN_color.jpg 和深度图像 SUN_depth.png 样本 |
方法: __init__(self: open3d.data.SampleSUNRGBDImage,data_root=‘’)->None |
属性: color_path:彩色图像样本的路径 data_root:获取数据根目录。数据根在构建时设置或自动确定 depth_path:深度图像样本的路径 download_dir:获取下载目录的绝对路径 extract_dir:获取解压目录的绝对路径 prefix:获取数据集的前缀 |
open3d.geometry.RGBDImage create_from_sun_format(color, depth, convert_rgb_to_intensity=True) |
函数功能: 生成 RGBDImage 的函数(用于 SUN 格式) |
参数: color (open3d.geometry.Image):彩色图像 depth (open3d.geometry.Image) :深度图像 convert_rgb_to_intensity (bool, optional, default=True) :是否将 RGB 图像转换为强度图像 |
返回: open3d.geometry.RGBDImage |
NYU dataset
本节介绍如何从 NYU 数据集读取和可视化 RGBDImage
create_rgbd_image_from_nyu_format 解析 SUN 数据集中的深度图像
class open3d.data.SampleNYURGBDImage |
介绍: SampleNYURGBDImage的数据类包含来自NYU RGBD数据集的彩色图像 NYU_color.ppm 和深度图像 NYU_depth.pgm 样本 |
方法: __init__(self: open3d.cpu.pybind.data.SampleNYURGBDImage, data_root: str = '') → None |
属性: color_path:彩色图像样本的路径 data_root:获取数据根目录。数据根在构建时设置或自动确定 depth_path: 深度图像样本的路径 download_dir:获取下载目录的绝对路径 extract_dir:获取提取目录的绝对路径 prefix:获取数据集的前缀 |
open3d.geometry.RGBDImage create_from_nyu_format(color, depth, convert_rgb_to_intensity=True) |
函数功能: 生成 RGBDImage 的函数(适用于 NYU 格式) |
参数: color (open3d.geometry.Image) :彩色图像 depth (open3d.geometry.Image) :深度图像 convert_rgb_to_intensity (bool, optional, default=True) :是否将 RGB 图像转换为强度图像 |
返回: open3d.geometry.RGBDImage |
TUM dataset
open3d.geometry.RGBDImage create_from_tum_format(color, depth, convert_rgb_to_intensity=True) |
函数功能: 生成 RGBDImage 的函数(用于 TUM 格式) |
参数: color (open3d.geometry.Image) :彩色图像 depth (open3d.geometry.Image):深度图像 convert_rgb_to_intensity (bool, optional, default=True):是否将 RGB 图像转换为强度图像 |
返回: open3d.geometry.RGBDImage |