1. 点云数据的基本特性与处理挑战
点云作为一种非结构化的三维数据表示形式,本质上就是一组空间中的离散点集合,每个点至少包含XYZ坐标信息,可能还附带RGB颜色、强度、法向量等附加属性。与规整的二维图像像素矩阵不同,点云数据具有几个显著特点:
- 无序性:点集中的点排列顺序不影响其代表的几何形状。交换两个点的存储顺序,描述的是同一个物体。
- 非均匀性:点密度在空间中的分布不均匀,受传感器特性、物体表面材质和距离影响。
- 旋转平移不变性:点云代表的物体无论怎么旋转或平移,其本质特征应保持不变。
这些特性给神经网络处理带来了根本性挑战。传统CNN依赖的局部相关性、平移不变性等假设在点云上不再直接适用。2017年提出的PointNet首次证明了直接处理原始点云的可行性,而PointNet++作为其改进版本,进一步解决了局部特征提取的问题。
关键认知:点云处理的核心在于设计对排列顺序不敏感、能适应稀疏采样的特征提取方式。这直接影响了数据预处理阶段表示形式的选择。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 点云输入的四大基础表示形式
2.1 原始点集(Raw Point Cloud)
最直接的表示方式,即保持采集到的N×D矩阵形式(N为点数,D为特征维度)。PointNet/PointNet++系列采用的就是这种表示。
技术实现要点:
python复制# 典型数据加载示例(以PyTorch为例)
class PointCloudDataset(Dataset):
def __init__(self, files):
self.pc_data = [np.load(f) for f in files] # 假设每个npy文件存N×4矩阵(xyz+强度)
def __getitem__(self, idx):
points = self.pc_data[idx]
# 归一化到单位球
points[:, :3] = (points[:, :3] - np.mean(points[:, :3], axis=0)) / np.max(np.linalg.norm(points[:, :3], axis=1))
return torch.
