點云中的法向估計有很多方法,最簡單且常用的方法如下:
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,可以用朝向視點的方向來進行校正。
normals orientation
使用下面的公式進行校正:
結果為:
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;