点云中的法向估计有很多方法,最简单且常用的方法如下:
the problem of estimating the normal of a plane tangent to the surface.````
1.每个点Pi以及其最近的k邻域点,构造covariance matrix C:

求解该协方差矩阵的eigenvectors以及eigenvalues,
i.e. PCA - Principle Component Analysis:

取前3个特征向量构成法向量。在PCL中的调用如下:
// Placeholder for the 3x3 covariance matrix at each surface patch
Eigen::Matrix3f covariance_matrix;
// 16-bytes aligned placeholder for the XYZ centroid of a surface patch
Eigen::Vector4f xyz_centroid;
// Estimate the XYZ centroid
compute3DCentroid (cloud, xyz_centroid);
// Compute the 3x3 covariance matrix
computeCovarianceMatrix (cloud, xyz_centroid, covariance_matrix);
此时求解的法向的朝向不确定,会出现orientation inconsistency,可以用朝向视点的方向来进行校正。

使用下面的公式进行校正:

结果为:

这个方法涉及参数包括邻域点数目k或者邻域搜索半径r,如何选取这两个参数属于right scale factor的问题。正确的scale对于point feature representation有比较大的影响。
一般指导原则:
the scale for the determination of a point's neighborhood has to be selected
based on the level of detail required by the application;
网友评论