相关疑难解决方法(0)

加权最小二乘法 - 将平面拟合到三维点集

我使用最小二乘法将平面拟合到3D点集.我已经有了算法来做到这一点,但我想修改它以使用加权最小二乘法.意思是每个点都有一个重量(重量越大,平面越接近该点).

当前算法(无重量)如下所示:

计算总和:

for(Point3D p3d : pointCloud) {
    pos = p3d.getPosition();
    fSumX += pos[0];
    fSumY += pos[1];
    fSumZ += pos[2];
    fSumXX += pos[0]*pos[0];
    fSumXY += pos[0]*pos[1];
    fSumXZ += pos[0]*pos[2];
    fSumYY += pos[1]*pos[1];
    fSumYZ += pos[1]*pos[2];
}
Run Code Online (Sandbox Code Playgroud)

而不是制作矩阵:

double[][] A = {
    {fSumXX, fSumXY, fSumX},
    {fSumXY, fSumYY, fSumY},
    {fSumX,  fSumY,  pointCloud.size()}
};

double[][] B =  {
    {fSumXZ},
    {fSumYZ},
    {fSumZ}
};
Run Code Online (Sandbox Code Playgroud)

比解Ax = B,解的3个分量是拟合平面的系数...

那么,你能帮助我如何修改它来使用权重吗?谢谢!

algorithm math geometry linear-algebra least-squares

5
推荐指数
1
解决办法
6224
查看次数