我正在使用最小二乘法将平面拟合到一个三维点集上。我已经有实现该算法的方法,但我想修改它以使用加权最小二乘法。这意味着每个点都有一个权重(权重越大,平面就应该越接近该点)。
当前的算法(未加权)如下所示:
计算总和:
然后制作矩阵:
当前的算法(未加权)如下所示:
计算总和:
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];
}
然后制作矩阵:
double[][] A = {
{fSumXX, fSumXY, fSumX},
{fSumXY, fSumYY, fSumY},
{fSumX, fSumY, pointCloud.size()}
};
double[][] B = {
{fSumXZ},
{fSumYZ},
{fSumZ}
};
那么,如何使用权重来修改此内容呢?谢谢!
解决 Ax = B 并且解的三个分量是拟合平面的系数...。因此,请问能否帮我如何修改以使用权重?谢谢!