Advertisement

拟合离散点成平面(Python版本)

阅读量:

1.核心原理阐述

对空间中离散点进行拟合平面的构建,本质上属于一个最优化问题,即寻找使这些点到某一平面距离总和最小的平面。已知的一个先验信息是,该平面必然通过所有离散点的平均位置。接下来需要解决的关键任务是确定该平面的法向量方向。

通过协方差矩阵的SVD分解方法,可以得出最小奇异值所对应的奇异向量,该向量即为所求平面的方向。

2.代码设计与实现

复制代码
 % 随机生成一组(x,y,z),这些点的坐标离一个空间平面比较近

    
 x0=1,L1=2;
    
 y0=1,L2=2;
    
 x=x0+rand(20,1)*L1;
    
 y=y0+rand(20,1)*L2;
    
 z=1+2*x+3*y;
    
 scatter3(x,y,z,'filled')
    
 hold on;
    
  
    
 planeData=[x,y,z];
    
  
    
 % 协方差矩阵的SVD变换中,最小奇异值对应的奇异向量就是平面的方向
    
 xyz0=mean(planeData,1);
    
 centeredPlane=bsxfun(@minus,planeData,xyz0);
    
 [U,S,V]=svd(centeredPlane);
    
  
    
 a=V(1,3);

全部评论 (0)

还没有任何评论哟~