algorithm - servicio - relevamiento nube de puntos
Haga coincidir la nube de puntos 3D con el modelo CAD (3)
Tengo una nube de puntos de un objeto, obtenida con un escáner láser, y un modelo de superficie CAD de ese objeto.
¿Cómo puedo unir la nube de puntos a la superficie, para obtener la traducción y la rotación entre la nube y el modelo?
Supongo que podría muestrear la superficie y probar el algoritmo Iterative Closest Point (ICP) para hacer coincidir la nube de puntos muestreada resultante con la nube de puntos del escáner.
¿Eso realmente funcionaría?
¿Y hay mejores algoritmos para esta tarea?
Hay una biblioteca de código abierto para algoritmos de nubes de puntos que implementa el registro contra otras nubes de puntos. Puede ser que puedas probar algunos de sus métodos para ver si encajan.
Como iniciador, si no tienen algo específico que encaje con una malla poligonal, puedes tratar los vértices de la malla como otra nube de puntos y ajustarla a tu nube de puntos. Esto es algo que definitivamente respaldan.
Sí, ICP se puede aplicar a este problema, como sugieres al muestrear la superficie. Sería mejor si tiene todas las caras disponibles en su escáner láser, de lo contrario, es posible que tenga que quitar las caras invisibles de su modelo (dependiendo de la cantidad de caras que haya).
Una forma de preparar automáticamente un modelo eliminando algunas de las caras ocultas es calcular el casco cóncavo que se puede usar para descartar caras ocultas (que son, por ejemplo, caras que no están cerca del casco cóncavo). Dependiendo de qué tan involucrado esté el modelo, esto puede o no ser necesario.
ICP funciona bien si se le da una buena conjetura inicial porque ignora los puntos que no están cerca con respecto a la conjetura actual. Si ICP no está logrando una buena alineación, puede intentarlo con múltiples reinicios aleatorios para intentar solucionar este problema, eligiendo la mejor alineación.
Una solución más complicada es hacer coincidencias de características locales. Usted muestra y calcula un descriptor invariante como SHOT o FPFH. Encuentra las mejores coincidencias, rechaza las coincidencias no consistentes, úsalas para obtener una buena alineación inicial y luego refina con ICP. Pero es posible que no necesite este paso dependiendo de cuán robusto y rápido sea el ICP de reinicio aleatorio.
En el nuevo OpenCV, he implementado un módulo de coincidencia de superficie para unir un modelo 3D a una escena 3D. No se requiere una pose inicial y el proceso de detección es completamente automático. El modelo también implica un ICP.
Para tener una idea, por favor revisa un video aquí (aunque no es generado por la implementación en OpenCV):
https://www.youtube.com/watch?v=uFnqLFznuZU
El código fuente completo está aquí y la documentación está aquí .
Usted mencionó que necesitaba muestrear su modelo CAD. Esto es correcto y hemos proporcionado un algoritmo de muestreo adecuado para la coincidencia de características de pares de puntos, como el implementado en OpenCV:
Algoritmo de muestreo de puntos para la correspondencia 3D de geometrías irregulares , Tolga Birdal, Slobodan Ilic
http://campar.in.tum.de/pub/tbirdal2017iros/tbirdal2017iros.pdf