Estoy ajustando un plano a un punto 3D configurado con el método de mínimos cuadrados. Ya tengo un algoritmo para hacer eso, pero quiero modificarlo para usar un cuadrado menos ponderado. Lo que significa que tengo un peso para cada punto (cuanto mayor sea el peso, más cerca estará el avión del punto).Mínimo cuadrado ponderado: ajuste un plano al conjunto de puntos 3D
El algoritmo actual (sin peso) es el siguiente:
Calcular la suma:
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];
}
que hacen las matrices:
double[][] A = {
{fSumXX, fSumXY, fSumX},
{fSumXY, fSumYY, fSumY},
{fSumX, fSumY, pointCloud.size()}
};
double[][] B = {
{fSumXZ},
{fSumYZ},
{fSumZ}
};
de resolver Ax = B y el 3 componentes de la solución son los coeficientes de la llanura ajustada ...
S o, ¿puedes ayudarme a cómo modificar esto para usar pesas? ¡Gracias!
FYI - si puede tener muchos puntos (> por ejemplo 20) y/o las coordenadas tienen un desplazamiento grande, no calcule las estadísticas de la forma en que lo hace (tomando las sumas de cuadrados de la posición bruta) - tiene poca sensibilidad a los errores numéricos. Como mínimo, puede restar el valor medio de las coordenadas X/Y/Z primero, luego hacer su procesamiento, y al final agregar las compensaciones. Hay otras formas específicas de algoritmo para hacer esto, pero no entiendo exactamente cómo su algoritmo usa mínimos cuadrados, así que no puedo evitar más que eso. –
¿Qué quiere decir con desplazamiento? (lo siento, no lo entiendo en este contexto). –
Ejemplo rápido: puntos p1 = (10001, 10002, 10003), p2 = (10005, 10006, 10007), p3 = (10009, 10004, 10008). Estos tienen valores medios de (10005, 10004, 10006). Así que compensa (traduce) las coordenadas del punto por el contrario de esta cantidad para obtener p1 '= (-4, -2, -3), p2' = (0,2,1), p3 '= (4,0, 2). Luego haz tus cálculos y luego vuelve a agregar en el desplazamiento. –