点云体素介绍

本文介绍了点云中的体素概念,通过对比图像像素,阐述了体素在三维空间中的作用,包括其用于点云的均匀化和下采样。点云体素化有助于处理非均匀分布的点云数据,常用于点云处理和三维目标检测等领域。

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

本文为博主原创文章,未经博主允许不得转载。
本文为专栏《python三维点云从基础到深度学习》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/124017716”。

        点云中经常会用到的一个概念是体素(Voxel)。

        介绍体素之前先介绍一下图像像素。图像一般是按行列的像素存储的,也就是通常说的图像分辨率。对于WxH大小的图片,相当于把图片划分成如下的网格,然后每个网格里的颜色或者灰度值不同。这样就称为了一幅图像

        对应到三维空间,点云是由点组成的,通常每个点由x、y、z三个坐标组成。三个坐标对应二维图像中的灰度值。类比与二维图像,三维空间有以下几个区别:

        (1)二维图像的网格是均匀分布的,而三维点云分布在三维空间,同时是非均匀分布的。

        (2)二维图像相邻像素的位置坐标相差一个1单位像素,而三维点云中相邻点的间距并不是一个固定值。

        为了让三维点云也具备和二维图像一样的均匀分布,体素将整个三维空间

### 点云化后的坐标表示方法及计算 #### 坐标表示方法 点云化后,数据结构通常被转换成更易于处理的形式。具来说,在PointPillars框架中,对于每个柱状(即垂直方向上的),会记录一系列特征向量来描述该区域内的所有点的信息。 这些特征包括但不限于: - **原始三维空间坐标 (x, y, z)**:这是指点在世界坐标系下的实际位置[^3]。 这些值直接来源于输入的点云数据集,并未经过任何变换或缩放操作。 - **反射强度 r**:代表激光雷达返回信号的强弱程度,反映了物表面材料属性等因的影响。 - **相对偏移量至柱心 (xc, yc, zc)** 和 **相对偏移量至网格中心 (xp, yp)** :用于捕捉局部几何特性以及提供额外的空间关系信息。 上述各项共同构成了一个九维特征向量 `(x, y, z, r, xc, yc, zc, xp, yp)` ,用来表征单个点在其所属柱内的情况。 #### 计算过程 为了得到上述提到的各种坐标分量,可以按照如下方式进行计算: 1. 对于给定的一个点 `Pi` 属于某个特定的柱形区域内,则其对应的全局笛卡尔坐标可以直接读取自原始LiDAR扫描结果; 2. 反射率 `ri` 同样来自传感器获取的数据流; 3. 接下来定义当前柱子的位置参数——假设已知整个场景被划分为均匀分布的小方格构成二维平面布局(H×W),则可通过简单的除法运算求得某一点归属于哪一行列交叉处形成的矩形单元格内; 4. 当明确了目标单元格后,即可进一步确定其中心点的具数值作为参照基准; 5. 利用欧几里德距离公式分别测量各待测样本与各自所在容器边界之间的差距大小,从而获得所需的偏置项; 6. 如果某些柱中含有过多有效观测值超过预设阈值N,则需随机抽取部分成员参与后续分析流程;反之当数量不足时应适当补充虚拟节点直至满足条件为止。 通过以上步骤便能完成一次完整的点云化处理工作,并最终整理出适配深度神经网络训练需求的标准格式文件。 ```python import numpy as np def calculate_offsets(points_in_voxel): """ Calculate offsets relative to voxel center and grid center. Args: points_in_voxel (np.ndarray): Points within a single voxel Returns: tuple: Tuple containing offset arrays """ # Compute centroid of the voxel's points for xyz coordinates centroid_xyz = np.mean(points_in_voxel[:, :3], axis=0) # Compute offsets from each point to the centroid offsets_to_centroid = points_in_voxel[:, :3] - centroid_xyz # Assuming we have HxW grid layout where this function is called per pillar/voxel, # compute global position based on index i,j corresponding to that location in grid h_index = ... # Placeholder for actual calculation or input parameter w_index = ... # Define size of one cell/pixel in bird-eye view image space resolution_x = ... resolution_y = ... # Get absolute positions at bottom-left corner of current pixel/cell abs_pos_x = h_index * resolution_x abs_pos_y = w_index * resolution_y # Centered around top-down projection origin; adjust according to dataset specifics offsets_to_grid_center = points_in_voxel[:, :2] - [abs_pos_x + resolution_x / 2., abs_pos_y + resolution_y / 2.] return offsets_to_centroid, offsets_to_grid_center ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Coding的叶子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值