点云和三角形网格是非常灵活但不规则的几何类型。体素网格是在常规 3D 网格上定义的另一种 3D 几何类型,而体素可以被认为是 2D 中像素的 3D 对应物。Open3D 具有可用于处理体素网格的几何类型 VoxelGrid。
注:按照官方文档进行翻译,有空白的地方,是因为官方文档也没给出内容
Open3D 提供了方法 create_from_triangle_mesh 从三角形网格创建体素网格。它返回一个体素网格,其中与三角形相交的所有体素设置为 1,所有其他体素设置为 0。数voxel_size 定义体素网格的分辨率。
class open3d.data.BunnyMesh |
介绍: BunnyMesh 的数据类包含来自斯坦福 3D 扫描存储库的 BunnyMesh.ply。 |
方法: __init__(self: open3d.data.BunnyMesh, data_root: str = '') → None |
属性: data_root:获取数据根目录。数据根在构建时设置或自动确定 download_dir:获取下载目录的绝对路径 extract_dir:获取解压目录的绝对路径 path:BunnyMesh.ply 文件的路径 prefix:获取数据集的前缀 |
create_from_triangle_mesh(input, voxel_size) |
函数功能: 从给定的 TriangleMesh 创建 VoxelGrid。不转换颜色信息。创建的 VoxelGrid 的边界是从 TriangleMesh 计算的 |
参数: input (open3d.geometry.TriangleMesh):输入的三角网格 voxel_size (float):VoxelGrid 构造的体素大小 |
返回: open3d.geometry.VoxelGrid |
体素网格也可以使用 create_from_point_cloud 方法从点云创建。如果点云的至少一个点在体素内,则占据一个体素。体素的颜色是体素内所有点的平均值。参数voxel_size 定义体素网格的分辨率。
class |
介绍: ArmadilloMesh 的数据类包含来自 Stanford 3D Scanning Repository 的 ArmadilloMesh.ply |
方法: __init__(self: open3d.cpu.pybind.data.ArmadilloMesh, data_root: str = '') → None |
属性: data_root:获取数据根目录。数据根在构建时设置或自动确定 download_dir:获取下载目录的绝对路径 extract_dir:获取解压目录的绝对路径 path:BunnyMesh.ply 文件的路径 prefix:获取数据集的前缀 |
open3d.geometry.VoxelGrid create_from_point_cloud(input, voxel_size) |
函数功能: 从给定的 PointCloud 创建一个 VoxelGrid。给定体素的颜色值是落入其中的点的平均颜色值(如果点云有颜色)。创建的 VoxelGrid 的边界是从 PointCloud 计算的 |
参数: input (open3d.geometry.PointCloud):输入的点云 voxel_size (float):VoxelGrid 构造的体素大小 |
返回: open3d.geometry.VoxelGrid |
体素网格也可用于测试点是否在占用的体素内。 check_if_included 方法将 (n,3) 数组作为输入并输出 bool 数组。
open3d.geometry.VoxelGrid check_if_included(self, queries) |
函数功能: 逐元素检查列表中的查询是否包含在 VoxelGrid 中。查询是双精度的,并映射到最近的体素 |
参数: queries (open3d.utility.Vector3dVector) |
返回: List[bool] |
create_from_point_cloud 和 create_from_triangle_mesh 方法仅在几何体表面上创建占用体素。然而,可以从许多深度图或轮廓中雕刻出体素网格。Open3D 为体素雕刻提供了 carve_depth_map 和 carve_silhouette 方法。
open3d.geometry.TriangleMesh create_sphere(radius=1.0, resolution=20, create_uv_map=False) |
函数功能: 用于创建以 (0, 0, 0) 为中心的球体网格的函数 |
参数: radius (float, optional, default=1.0):球体的半径 resolution (int, optional, default=20):球体的分辨率。经度将被分成分辨率段(即有分辨率 + 1 条纬线,包括北极和南极)。纬度将被分成`2 * 分辨率段(即有 2 * 分辨率经度线。) create_uv_map (bool, optional, default=False):将默认 uv 贴图添加到网格 |
返回: open3d.geometry.TriangleMesh |
open3d.geometry.VoxelGrid create_dense(origin, color, voxel_size, width, height, depth) |
函数功能: 创建一个体素网格,其中设置了每个体素(因此是密集的)。这是体素雕刻的有用起点 |
参数: origin (numpy.ndarray[numpy.float64[3, 1]]):VoxelGrid 的坐标中心 color (numpy.ndarray[numpy.float64[3, 1]]):所有体素的体素颜色 voxel_size (float):VoxelGrid 构造的体素大小 width (float):VoxelGrid 的空间宽度扩展 height (float):VoxelGrid 的空间高度扩展 depth (float):VoxelGrid 的空间深度扩展 |
返回: open3d.geometry.VoxelGrid |
open3d.visualization.Visualizer create_window(self, window_name='Open3D', width=1920, height=1080, left=50, top=50, visible=True) |
函数功能: 创建窗口并初始化 GLFW 的函数 |
参数: window_name (str, optional, default='Open3D'):窗口标题名称 width (int, optional, default=1920):窗口的宽度 height (int, optional, default=1080):窗口的高度 left (int, optional, default=50):窗口到屏幕的左边距 top (int, optional, default=50):窗口到屏幕的上边距 visible (bool, optional, default=True):窗口是否可见 |
返回: bool |
open3d.visualization.Visualizer add_geometry(self, geometry, reset_bounding_box=True) |
函数功能: 将几何图形添加到场景并创建相应着色器的功能 |
参数: geometry (open3d.geometry.Geometry):geometry对象 reset_bounding_box (bool, optional, default=True):设置为 False 以保持当前视点 |
返回: bool |
open3d.visualization.Visualizer get_render_option(self) |
函数功能: 检索关联的 RenderOption 的函数 |
参数: |
返回: open3d.visualization.RenderOption |
open3d.visualization.Visualizer get_view_control(self) |
函数功能: 检索关联的 ViewControl 的函数 |
参数: |
返回: open3d.visualization.ViewControl |
open3d.visualization.ViewControl convert_to_pinhole_camera_parameters(self) |
函数功能: 将 ViewControl 转换为 camera.PinholeCameraParameters 的函数 |
参数: |
返回: open3d.camera.PinholeCameraParameters |
open3d.visualization.ViewControl convert_from_pinhole_camera_parameters(self, parameter, allow_arbitrary=False) |
函数功能: |
参数: parameter (open3d.camera.PinholeCameraParameters):要转换的针孔相机参数 allow_arbitrary (bool, optional, default=False):(允许独断) |
返回: bool |
open3d.visualization.Visualizer poll_events(self) |
函数功能: 轮询事件的函数 |
参数: |
返回: bool |
open3d.visualization.Visualizer update_renderer(self) |
函数功能: 通知渲染需要更新的功能 |
参数: |
返回: None |
open3d.visualization.Visualizer capture_depth_float_buffer(self, do_render=False) |
函数功能: 在浮点缓冲区中捕获深度的函数 |
参数: do_render (bool, optional, default=False):设置为 True 进行渲染 |
返回: open3d.geometry.Image |
open3d.geometry.PointCloud create_from_depth_image(depth,intrinsic, extrinsic=(with defaul tvalue), depth_scale=1000.0, depth_trunc=1000.0, stride=1, project_valid_depth_only=True) |
函数功能: 从深度图像和相机创建点云的工厂函数。给定 (u, v) 图像坐标处的深度值 d,对应的 3d 点为: z = d / depth_scale x = (u - cx) * z / fx y = (v - cy) * z / fy |
参数: depth (open3d.geometry.Image):输入深度图像可以是浮点图像,也可以是 uint16_t 图像。 intrinsic (open3d.camera.PinholeCameraIntrinsic):相机的内在参数 extrinsic (numpy.ndarray[numpy.float64[4, 4]], optional):数组 ([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0 ., 0., 1.]]) depth_scale (float, optional, default=1000.0):深度按 1 / depth_scale 缩放 depth_trunc (float, optional, default=1000.0):在 depth_trunc 距离处截断 stride (int, optional, default=1):支持粗略点云提取的采样因子 project_valid_depth_only (bool, optional, default=True): |
返回: open3d.geometry.PointCloud |
open3d.geometry.VoxelGrid carve_depth_map(self, depth_map, camera_params, keep_voxels_outside_image=False) |
函数功能: 从体素网格中删除所有体素,其中体素的边界点均未投影到小于或等于边界点投影深度的深度值。如果 keep_voxels_outside_image 为真,则仅当所有边界点都投影到有效图像位置时才雕刻体素 |
参数: depth_map (open3d.geometry.Image):用于 VoxelGrid 雕刻的深度图(图像) camera_params (open3d.camera.PinholeCameraParameters) keep_voxels_outside_image (bool, optional, default=False):保留不投影到图像中像素的体素 |
返回: open3d.geometry.VoxelGrid |
open3d.geometry.VoxelGrid carve_silhouette(self, silhouette_mask, camera_params, keep_voxels_outside_image=False) |
函数功能: 从 VoxelGrid 中删除所有体素,其中没有体素的边界点投影到有效的掩码像素(像素值 > 0)。如果 keep_voxels_outside_image 为真,则仅当所有边界点都投影到有效图像位置时才雕刻体素 |
参数: silhouette_mask (open3d.geometry.Image):用于 VoxelGrid 雕刻的剪影轮廓(图像) camera_params (open3d.camera.PinholeCameraParameters) keep_voxels_outside_image (bool, optional, default=False):保留不投影到图像中像素的体素 |
返回: open3d.geometry.VoxelGrid |
open3d.visualization.Visualizer destroy_window(self) |
函数功能: 销毁窗口的函数。这个函数必须从主线程调用 |
参数: |
返回: None |
open3d.geometry.VoxelGrid create_from_point_cloud_within_bounds(input, voxel_size, min_bound, max_bound) |
函数功能: 从给定的 PointCloud 创建一个 VoxelGrid。给定体素的颜色值是落入其中的点的平均颜色值(如果点云有颜色)。创建的 VoxelGrid 的边界由给定的参数定义 |
参数: input (open3d.geometry.PointCloud):输入的点云 voxel_size (float):VoxelGrid 构造的体素大小 min_bound (numpy.ndarray[numpy.float64[3, 1]]):VoxelGrid 要创建的最小边界点 max_bound (numpy.ndarray[numpy.float64[3, 1]]):VoxelGrid 要创建的最大边界点 |
返回: open3d.geometry.VoxelGrid |
open3d.geometry.VoxelGrid create_from_triangle_mesh_within_bounds(input, voxel_size, min_bound, max_bound) |
函数功能: 从给定的 TriangleMesh 创建 VoxelGrid。不转换颜色信息。创建的 VoxelGrid 的边界由给定的参数定义 |
参数: input (open3d.geometry.TriangleMesh):输入的三角网格 voxel_size (float):VoxelGrid 构造的体素大小 min_bound (numpy.ndarray[numpy.float64[3, 1]]):VoxelGrid 要创建的最小边界点 max_bound (numpy.ndarray[numpy.float64[3, 1]]):VoxelGrid 要创建的最大边界点 |
返回: open3d.geometry.VoxelGrid |