JA EN ZH

点云基础与 3D 重建 - 从采集到处理

· 9 分钟阅读

什么是点云数据 - 3D 空间的离散表示

点云是 3D 空间中大量点的集合,每个点包含 (x, y, z) 坐标,可选附加颜色 (RGB)、法线向量、强度等属性。它是 3D 世界最直接的数字化表示形式。

点云的特点:

  • 无序性: 点之间没有固定的拓扑连接关系
  • 密度不均: 近处密集,远处稀疏
  • 噪声: 传感器误差导致的离群点
  • 数据量大: 单次扫描可产生数百万到数十亿个点

常见文件格式:

  • PLY: 灵活的多边形文件格式,支持 ASCII 和二进制
  • PCD: PCL (Point Cloud Library) 的原生格式
  • LAS/LAZ: LiDAR 行业标准,LAZ 为压缩版本
  • E57: 3D 扫描数据的开放标准

应用领域: 自动驾驶 (环境感知)、建筑测量 (BIM)、文化遗产数字化、机器人导航、地形测绘、工业检测。

点云采集 - LiDAR、深度相机和 SfM

点云数据可通过多种传感器和算法获取,各有不同的精度、范围和成本特征。

LiDAR (激光雷达):

  • 发射激光脉冲,测量反射时间计算距离
  • 精度: 毫米级 (地面扫描仪) 到厘米级 (机载)
  • 范围: 数米到数百米
  • 代表设备: Velodyne (自动驾驶), Leica (测量), iPhone Pro (消费级)

深度相机:

  • 结构光: 投射已知图案,从变形推算深度 (Intel RealSense, Kinect v1)
  • ToF (飞行时间): 测量光往返时间 (Kinect v2, iPad Pro)
  • 范围: 0.3-10m,适合室内

SfM (运动恢复结构):

  • 从多张普通照片重建 3D 点云
  • 无需特殊硬件,仅需相机
  • 工具: COLMAP, Meshroom, OpenMVG
  • 精度取决于图像质量和数量

点云预处理 - 去噪与降采样

原始点云通常包含噪声和冗余数据,预处理是后续分析的必要步骤。

统计离群点去除: 计算每个点到其 K 个最近邻的平均距离。距离超过全局平均值 + N 倍标准差的点视为离群点。Open3D: pcd.remove_statistical_outlier(nb_neighbors=20, std_ratio=2.0)

半径离群点去除: 在指定半径内邻居数少于阈值的点被移除。适合去除孤立噪点。Open3D: pcd.remove_radius_outlier(nb_points=16, radius=0.05)

体素降采样: 将空间划分为均匀的体素网格,每个体素内的点取质心作为代表点。有效减少点数同时保持整体形状。Open3D: pcd.voxel_down_sample(voxel_size=0.01)

法线估计: 为每个点估计局部表面法线方向。基于 K 近邻或固定半径内的点拟合平面,平面法向量即为法线。法线对于网格重建和渲染至关重要。

点云配准 - 整合多次扫描

将多次扫描获得的点云对齐到统一坐标系,是完整场景重建的关键步骤。

ICP (Iterative Closest Point):

  • 经典配准算法,迭代寻找最近点对并最小化距离
  • 需要较好的初始对齐 (否则陷入局部最优)
  • 变体: Point-to-Point ICP, Point-to-Plane ICP (收敛更快)
  • Open3D: o3d.pipelines.registration.registration_icp()

全局配准:

  • 不需要初始对齐的方法
  • FPFH 特征 + RANSAC: 提取局部几何特征,匹配对应点
  • Fast Global Registration: 比 RANSAC 快一个数量级

多视图配准: 将所有扫描同时优化对齐 (位姿图优化)。避免逐对配准的误差累积。Open3D 提供 multiway_registration 实现。

网格重建 - 从点云到表面模型

将离散点云转换为连续的三角网格表面,用于可视化、3D 打印和仿真。

Poisson 重建:

  • 将法线场视为指示函数的梯度,求解泊松方程得到隐式表面
  • 产生光滑、封闭的网格
  • 需要准确的法线估计
  • Open3D: o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd, depth=9)

Ball Pivoting Algorithm (BPA):

  • 模拟一个球在点云表面滚动,球接触的三个点形成三角形
  • 保留原始点位置 (不平滑)
  • 对噪声敏感,需要预处理

Alpha Shapes:

  • Delaunay 三角化的子集,通过 alpha 参数控制细节级别
  • 适合非封闭表面
  • Open3D: o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd, alpha=0.03)

实用点云处理 - 工具与流水线构建

构建实用的点云处理流水线所需的工具、库和最佳实践。

主要工具库:

  • Open3D: Python/C++ 库,功能全面,API 友好。推荐首选
  • PCL (Point Cloud Library): C++ 库,功能最丰富但学习曲线陡峭
  • CloudCompare: 开源 GUI 工具,适合可视化和交互式处理
  • PDAL: 点云数据抽象库,适合 GIS 和 LiDAR 数据流水线

可视化:

  • Open3D: o3d.visualization.draw_geometries([pcd])
  • Web: Three.js + BufferGeometry 渲染百万级点云
  • Potree: 基于 Web 的大规模点云查看器 (支持数十亿点)

性能优化:

  • 使用八叉树 (Octree) 或 KD-Tree 加速空间查询
  • 大规模点云使用分块处理 (tiling)
  • GPU 加速: CUDA 或 OpenCL 并行处理

Related Articles

立体视觉与距离测量 - 从视差恢复 3D 信息

详解立体视觉的原理,从对极几何到立体匹配算法 (SGM、深度学习),涵盖视差图到 3D 点云的转换和实际系统搭建。

单目深度估计技术与应用 - 从单张图像推断深度

从 MiDaS 和 DPT 模型到自动驾驶和 AR 应用的深度图生成系统指南。涵盖原理到实际实现。

NeRF 基础 - 从图像进行 3D 场景重建

详解 Neural Radiance Fields (NeRF) 的原理,从体积渲染到 Instant NGP 和 3D Gaussian Splatting 等加速方法,涵盖实际工作流程。

医学图像处理基础 - DICOM、CT 和 MRI 数据与技术

系统介绍医学图像处理,涵盖 DICOM 标准、CT/MRI 成像原理、窗宽窗位调节、分割技术以及临床 AI 应用。

相机标定基础 - 内参与畸变校正实用指南

学习相机标定的基本原理,包括针孔相机模型、镜头畸变模型和 Zhang 标定法的实践步骤。

工业检测中的图像处理 - 从外观检查到尺寸测量

系统讲解图像处理在工业检测中的应用。涵盖缺陷检测、尺寸测量、表面检查和深度学习方法。

Related Terms