点云法向量是3D点云一个极其重要的几何表面特征,众多的点云处理算法都依赖精确的法向量估计,例如点云分割,点云去噪等。在自动驾驶领域,面对特殊场景我们主要依赖点云法向量进行场景分割。估计点云法向量需要得到该点的邻域内点,根据邻域内点估计出平面及法向量。在众多法向量估计方法中,基于局部表面拟合法使用最为广泛,原理简单,计算效率较高。
基于局部表面拟合法
对于点云中的每个点Xi以半径r或者直接计算最近邻的k个点得到点的邻域。我们知道,估计一个平面只需要一个点和一个法向量。显然,我们可以将问题转化为使用最小二乘法为邻域内点拟合出一个局部平面问题。
其中,c为邻域的质心,(Xi-c)表示去中心化后的点,n为法向量。(Xi-c)与n的点积表示点在n方向上的投影。
这里就是邻域内点Xi的协方差矩阵。
协方差矩阵S是一个对称矩阵,其对角线元素表示方差,非对角线元素表示X中不同分量之间的协方差。具体到3D点云我们计算会计算出一个3x3的实对称矩阵,因为会用到点云的(x,y,z)3个维度的坐标信息。根据上文原理介绍,求解所有点云到拟合局部平面的最短距离可以简化为求解协方差矩阵的最小特征值,即满足的最小特征向量
使得特征方程为零,求得多个特征值,并将特征值带入到,求解出对应是特征向量。选择最小特征值对应的特征向量,并进行单位化,则该向量为点云法向量。
实验环境
后文中涉及到点云法线计算的具体实现及其性能表现,我以工作中使用到的LS雷达点云为例,计算平台包含CPUx8:Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz,GPU:GeForce GTX 1650。
【参考文献】
https://blog.csdn.net/o180o/article/details/97647657 https://blog.csdn.net/qq_34213260/article/details/107099993?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-107099993-blog-105534206.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-107099993-blog-105534206.pc_relevant_aa