我们知道PCA可以用来降维,并使降维后的数据尽可能保持原来的特征。比如二维散乱的点:
经过PCA降维后,变成了一维直线,而该直线保证点尽可能分散,变成如下图(跟最小二乘是一样的):
具体原理可参考http://blog.codinglabs.org/articles/pca-tutorial.html
前面说的是二维降到一维时的情况,假如我们有一堆散乱的三维点云,则可以这样计算法线:
1)对每一个点,取临近点,比如取最临近的50个点,当然会用到K-D树
2)对临近点做PCA降维,把它降到二维平面上,可以想象得到这个平面一定是它的切平面(在切平面上才可以尽可能分散)
3)切平面的法线就是该点的法线了,而这样的法线有两个,取哪个还需要考虑临近点的凸包方向,这里就不叙述了,详情查看:点击http://www.pointclouds.org/documentation/tutorials/normal_estimation.php