点云和三角形网格是非常灵活但不规则的几何类型。体素网格是在常规 3D 网格上定义的另一种 3D 几何类型,而体素可以被认为是 2D 中像素的 3D 对应物。Open3D 具有可用于处理体素网格的几何类型 VoxelGrid。

注:按照官方文档进行翻译,有空白的地方,是因为官方文档也没给出内容


从三角形网格(from triangle mesh)

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获取解压目录的绝对路径

pathBunnyMesh.ply 文件的路径

prefix获取数据集的前缀

  • open3d.geometry.VoxelGrid

create_from_triangle_mesh(inputvoxel_size)

函数功能:

从给定的 TriangleMesh 创建 VoxelGrid。不转换颜色信息。创建的 VoxelGrid 的边界是从 TriangleMesh 计算的

参数:

input (open3d.geometry.TriangleMesh)输入的三角网格

voxel_size (float)VoxelGrid 构造的体素大小

返回:

open3d.geometry.VoxelGrid


从点云(from point cloud)

体素网格也可以使用 create_from_point_cloud 方法从点云创建。如果点云的至少一个点在体素内,则占据一个体素。体素的颜色是体素内所有点的平均值。参数voxel_size 定义体素网格的分辨率。

class open3d.data.ArmadilloMesh

介绍:

ArmadilloMesh 的数据类包含来自 Stanford 3D Scanning Repository 的 ArmadilloMesh.ply

方法:

__init__(self: open3d.cpu.pybind.data.ArmadilloMesh, data_root: str = '') → None

属性:

data_root获取数据根目录。数据根在构建时设置或自动确定

download_dir获取下载目录的绝对路径

extract_dir获取解压目录的绝对路径

pathBunnyMesh.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(selfsilhouette_maskcamera_paramskeep_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(inputvoxel_sizemin_boundmax_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(inputvoxel_sizemin_boundmax_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

open3d之体素化Voxelization有关函数详情(笔记6)相关推荐

  1. 体素化(Voxelization)

    参考链接 体素化(Voxelization)是将物体的几何形式表示转换成最接近该物体的体素表示形式,产生体数据集,其不仅包含模型的表面信息,而且能描述模型的内部属性.表示模型的空间体素跟表示图像的二维 ...

  2. 利用PCL点云下采样实现数据体素化

    利用PCL点云下采样实现数据体素化 PCL PCL(Point Cloud Library) 库集成了针对大体量级别的空间点数据处理所需要的算法和操作,降低了处理相关需求的复杂度,对快速建立点云数据文 ...

  3. Open3D Voxelization 体素化

    Voxelization 体素化 点云和三角形网格是非常灵活但不规则的几何类型.体素网格(voxel grid)是在 3D 网格上定义的 3D 中的另一种几何类型,体素可以被视为 2D 中像素(pix ...

  4. 『OPEN3D』1.6 Voxelization体素化

    目录 1 从triangle meshes中创建体素 2 从点云中创建体素 3 体素包含测试(Inclusion test) 4 Voxel carving 在点云处理的内容中,简单介绍了open3d ...

  5. Open3d学习计划——高级篇 6(体素化)

    Open3d学习计划--高级篇 6(体素化) 点云和三角网格是一种十分灵活的,但是不规则的几何类型.体素网格是通过规则的3D网格来表示的另一种3D几何类型,并且它可以看作是2D像素在3D上的对照物.O ...

  6. Voxelization 三维模型体素化

    Voxelization 三维模型体素化 导入mesh文件,以obj文件为例: 一般文件mesh文件内容有顶点与面,可以用三维设计软件生成,生成的时候注意mesh文件只保存三角形面片,以便后面读取 o ...

  7. Voxelization——体素化模型

    上周部门内部进行分享知识讲座时讲到一个词Voxelization,也就是体素化,也就是用某些东西充满一个物体的内部,如下面这两张图,用小方块充满圆环和锥体. 其主要算法也有多种,我这里采用的是用bou ...

  8. open3d剩余内容有关函数详情(笔记10)

    本次笔记包括网格变形(Mesh deformation).内在形状特征(Intrinsic shape signatures)ISS.光线投射(Ray Casting)和距离查询(Distance Q ...

  9. open3d之表面重建有关函数详情(笔记8)

    在许多情况下,我们希望生成密集的 3D 几何图形,即三角形网格.但是,从多视图立体方法或深度传感器中,我们只能获得非结构化点云.要从这个非结构化输入中获得三角形网格,我们需要执行表面重建.在文献中存在 ...

最新文章

  1. 119. Leetcode 115. 不同的子序列 (动态规划-子序列问题)
  2. MariaDB配置慢日志
  3. 赛事丨出道题就能赢万元奖金?华录杯大赛告诉你,是真的
  4. 什么是runtime?
  5. 从市场角度看服务器虚拟化
  6. Clubhouse 推出漏洞奖励计划,严重漏洞最高可获3000美元
  7. Chrome插件GitZip(下载github项目中的部分文件)
  8. creo绘图属性模板_最好用的工程图格式文件及建模模板文件
  9. 用二分法求下面方程在(-10,10)之间的根:2x^3-4x^2+3x-6=0
  10. SVG矢量图中矢量路径的获取
  11. 判断系统是centos还是ubuntu的linux命令
  12. 钱多多软件制作第六天
  13. oppo修改无线网服务器,简单小修改,你的OPPO手机wifi信号会马上提升
  14. 实用工具推荐--GIF动图裁剪工具IIMG(免注册且免费)
  15. 微信怎么和计算机发送文件格式,用微信怎么发送文件 手机微信发送文件、视频方法图文详解...
  16. 讲解通达信接口插件的编程源码运作过程
  17. 仿抖音短视频项目笔记 (一)产品介绍与数据库设计
  18. 解决jpgraph汉字乱码的两种方法
  19. VBA之正则表达式(32)-- 提取指定规格
  20. 电脑账户进不去 被停用,PIN无法验证,如何进入电脑安全模式

热门文章

  1. 安师大计算机系导师,安徽师范大学数学计算机科学学院导师介绍:陈付龙
  2. linux中ll -lht,02-Linux命令(上)
  3. 你知道吗?U盘插入速度决定读写速度,看完别再用错了
  4. 第五章总结(创建与使用视图)
  5. 窃取MSSQL各版本密码HASH
  6. 关于U盘装系统的那点破事儿---No bootable device found
  7. shopee跨境店铺怎么申请入驻-跨境知道
  8. 唐伯虎啊.......哎~~
  9. 虚拟机win7 DNS 不可用
  10. mysql查询每个部门的最高和最低工资_SQL数据库 计算出每个部门的平均工资 最高工资和最低工资 语法怎么写?...