【3D视觉原理】3-3D数据表示与转换

文章目录

内容

深度图和点云的数据存储(体像素、八叉树、Kd树、三角剖分)
PLY数据文件格式

深度图和点云的数据存储

在这里插入图片描述

3D相机数据的数据存储形式是二维数组,元素值为物体距离像平面距离Z或者视线距离d。

点云数据存储形式是二维数组,但只有三列 ( X , Y , Z ) (X,Y,Z) (X,Y,Z),行存储次序任意。

体像素 - 空间均匀分割

在这里插入图片描述

3D数据体像素存储 - 改进:存储

在这里插入图片描述

3D数据体像素存储-代码示例

在这里插入图片描述
在这里插入图片描述

从体像素数组转回点云数据

在这里插入图片描述

体像素的应用

在这里插入图片描述

1 快速检测空间点是否被占据

将带检测空间点的坐标平移,使得原点盒体像素空间立方体最小坐标顶点对齐。

将坐标除以小立方体边长并进行舍入,得到对应体素在3D数组内的存储位置。

查询数组对应元素即可得到空间是否被占用信息。

2 体像素之间的逻辑运算,实现3D、 形状的组合和编辑

体像素存储的优缺点

运算速度快
存储效率很低,尺寸分辨率和空间相互矛盾

需要很大的空间存储3D数组。

量化的精度越高,划分的体像素的格子越多,存储空间越大。

八叉树 - 空间非均匀按需分割

体像素一使 用空间的均匀分割
八叉树一 对空间非均匀分割(按需分割)
具体讨论8叉树之前,我们先从4叉树说起
●2D数据的4叉树表示
●3D数据的8叉树表示

2D数据 - 4叉树

2D数据的4叉树表示

在这里插入图片描述
在这里插入图片描述

2D数据的4叉树构建

在这里插入图片描述

2D数据的4叉树构建 - 算法 改进

如下图所示的情况,如果使用上面的方法构建4叉树,树会很深,浪费空间。针对这种情况,提出三种改进方式。

在这里插入图片描述

4叉树应用 - 快速“碰撞”检测

在这里插入图片描述

4叉树构建 - 代码示例

在这里插入图片描述

4叉树搜索 - 代码示例

在这里插入图片描述

3D数据 - 8叉树

3D数据 - 8叉树 - 表示

在这里插入图片描述

3D数据 - 8叉树 - 构建

在这里插入图片描述

3D数据 - 8叉树 - 构建 - 改进

1 拆分的停止条件可以改成空间内点的数量小于给定正整数K。

2 拆分的停止条件可以改成节点对应空间立方体边长小于门限。

3 叶节点存放的多个点的坐标数据。

3D数据 - 8叉树 - 应用
快速“碰撞”检测
3D光线追踪
knn搜索

在这里插入图片描述

3D数据 - 8叉树 - 代码示例 - Python
3D数据 - 8叉树 - 构建 - 代码示例 - Python

在这里插入图片描述

3D数据 - 8叉树 - 查询 - 代码示例 - Python

在这里插入图片描述

3D数据 - 8叉树 - 代码示例 - PCL(C++实现,效率高)

在这里插入图片描述

Kd树(k-dimensional tree)

从4叉树到kd树

在这里插入图片描述

KD树 - 应用 - 实现快速最近邻查找

KD树 - 构建

在这里插入图片描述

如何选择分割平面的方向?

分割平面有三个方向可以选择:垂直于x轴,垂直于y轴,垂直于z轴。

树的不同层使用不同的方向,例如:树第一层使用垂直于x轴分割,树第二层使用垂直于y轴分割。

KD树 - 构建 - 2D - 示例

在这里插入图片描述
在这里插入图片描述

KD树 - 构建 - 3D - 代码示例

在这里插入图片描述

KD树 - 搜索 - 最近邻

在这里插入图片描述
在这里插入图片描述

KD树 - 搜索 - k近邻 - Python

k 近邻与最近邻搜索算法思想相同,只是 k 近邻搜索中,使用优先级队列保存k个近邻。

在这里插入图片描述

KD树 - 搜索 - k近邻 - PCL(C++实现,效率更高)

在这里插入图片描述

三角剖分

在这里插入图片描述

三角剖分 - 应用 - 人脸3D模型

在这里插入图片描述

如何将随机点划分为三角形? - Delaunay 三角剖分

在这里插入图片描述

Delaunay 三角剖分

准则:1 空圆;2 最大化最小角。

在这里插入图片描述

Delaunay 三角剖分 - 局部优化(Local Optimization Procedure,LOP)

在这里插入图片描述

在这里插入图片描述

Delaunay 三角剖分 - 全局优化算法Bowyer-Watson

在这里插入图片描述

在这里插入图片描述

Delaunay 三角剖分 - 代码实现 - Python

在这里插入图片描述

Delaunay 三角剖分 - 问题
2D平面上的三角剖分用于3D曲面

曲面的局部看成近似平面,将采样点投影到拟合平面上,进行三角划分。
使用近似的方法,从任一局部小三角形出发,不断“蔓延”, 期间用LOP进行局部优化。

空间任意曲面的三角剖分

结合SDF函数的marching Cube算法。

深度图上的简易三角剖分

以深度图平面上的均匀采样格点直接做三角化。

在这里插入图片描述

注:顶点间可以拼凑成“米”字形。

PLY数据文件格式

1 用多个平面片(三角形或者四边形)描述空间几何体表面

2 有ASCII和二进制2种格式(这里只介绍ASCII格式)

3 平面片描述拆分为:

1)顶点描述;
2)构成平面片的顶点序号

基本格式内容

在这里插入图片描述

头部内容

在这里插入图片描述

数据部分

在这里插入图片描述

平面的法向量方向:右手法则。平面三个坐标点的顺序即为食指绕行方向。

法向量方向会影响渲染出来3D平面的颜色。如果平面法向量朝内,渲染出的平面颜色不是彩色而是灰色。

在这里插入图片描述

PLY数据格式 - 彩色 - 示例

在这里插入图片描述

作业

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值