Estimating Surface Normals in a Point loud

点云中的法向估计有很多方法,最简单且常用的方法如下:

the problem of estimating the normal of a plane tangent to the surface.````

1.每个点Pi以及其最近的k邻域点,构造covariance matrix C:

convariance matrix

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

eigen vectors/values

取前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,可以用朝向视点的方向来进行校正。


Estimating Surface Normals in a Point loud_第1张图片
normals orientation

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



结果为:
Estimating Surface Normals in a Point loud_第2张图片
corrected normals orientation

这个方法涉及参数包括邻域点数目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;

你可能感兴趣的:(Estimating Surface Normals in a Point loud)