Llevo semanas luchando con este problema y no he podido encontrar un algoritmo adecuado para resolverlo. ¿Podrían darme algunos consejos o sugerencias para resolver esta cuestión? O si conocen a alguien que pueda responder a esta pregunta, por favor envíenlo. Realmente necesito la solución ya que he estado tratando de resolverlo durante mucho tiempo :| ¡Muchas gracias!
Como se puede ver en la imagen de abajo, tengo más de 200 líneas en 3D. Se trata de 3 grupos diferentes de líneas, y la propiedad común de las líneas de cada grupo es que pasan cerca del mismo punto. Sin embargo, en este problema no sabemos qué línea pertenece a cada grupo. Lo que se da son sólo las coordenadas 3D (x,y,z) de los 2 extremos de todas las líneas.
Mi trabajo consiste en encontrar un algoritmo que haga coincidir/ajustar/registrar un triángulo (un cuerpo rígido) a esas líneas de forma que la suma de las distancias entre 3 vértices del triángulo y sus correspondientes líneas sea mínima. En algunos casos, un vértice puede ser el punto más cercano de un grupo, pero los otros vértices serían arrastrados más lejos de sus líneas correspondientes (porque están en un cuerpo rígido), por lo que esta suma no será mínima. Lo que necesito son las mejores posiciones de los 3 vértices (el mejor ajuste del triángulo) para minimizar la suma global.
En conclusión, dados más de 200 conjuntos de (x1,y1,z1,x2,y2,z2) (que son coordenadas de 2 extremos de una recta), necesito encontrar las mejores posiciones de 3 vértices de un triángulo que encajen en esas rectas (dada la distancia relativa entre los 3 vértices).
Sin la condición de cuerpo rígido, he determinado con éxito las posiciones de los 3 puntos independientes utilizando el algoritmo de agrupación de Expectativa-Maximización (EM). Sin embargo, a veces se asignan 2 o 3 puntos a la misma posición. Entonces, me di cuenta de que había olvidado la condición de "cuerpo rígido". Con esta condición añadida, este error no se producirá. En el algoritmo EM, puedo derivar la fórmula de cada paso de reposicionamiento para cada punto. Pero cuando se trata de un cuerpo rígido, no sé cómo calcular la matriz de traslación y rotación para ajustar el triángulo a las líneas.
Gracias por leer este post. Su ayuda será muy apreciada.