
El método iterativo de punto más cercano ( ICP ) [ 1 ] [ 2 ] [ 3 ] [ 4 ] es un algoritmo de registro de nubes de puntos que se emplea para minimizar la diferencia entre dos nubes de puntos . El ICP se utiliza a menudo para reconstruir superficies 2D o 3D a partir de diferentes escaneos, para localizar robots y lograr una planificación de trayectoria óptima (especialmente cuando la odometría de las ruedas no es fiable debido a terrenos resbaladizos), para corregistrar modelos óseos , etc.
Descripción general
El algoritmo de Punto Más Cercano Iterativo (ICP) mantiene fija una nube de puntos, la de referencia o destino, mientras transforma la otra, la de origen, para que coincida lo mejor posible con la de referencia. La transformación (combinación de traslación y rotación) se estima iterativamente para minimizar una métrica de error, típicamente la suma de las diferencias cuadráticas entre las coordenadas de los pares coincidentes. ICP es uno de los algoritmos más utilizados para alinear modelos tridimensionales a partir de una estimación inicial de la transformación rígida requerida. [ 5 ] El algoritmo ICP fue introducido por primera vez por Chen y Medioni, [ 3 ] y Besl y McKay. [ 2 ]
Entradas: nubes de puntos de referencia y de origen, estimación inicial de la transformación para alinear el origen con la referencia (opcional), criterios para detener las iteraciones.
Salida: transformación refinada.
Esencialmente, los pasos del algoritmo son: [ 5 ]
- Para cada punto (del conjunto completo de vértices, generalmente denominado denso, o de una selección de pares de vértices de cada modelo) en la nube de puntos de origen, haga coincidir el punto más cercano en la nube de puntos de referencia (o en un conjunto seleccionado).
- Estimar la combinación de rotación y traslación mediante una técnica de minimización de la distancia cuadrática media punto a punto, que permita alinear de la mejor manera cada punto de origen con su correspondiente punto hallado en el paso anterior. Este paso también puede implicar ponderar los puntos y descartar los valores atípicos antes de la alineación.
- Transforma los puntos de origen utilizando la transformación obtenida.
- Iterar (reasociar los puntos, etc.).
Zhang [ 4 ] propone un algoritmo de árbol k -d modificado para el cálculo eficiente del punto más cercano. En este trabajo se utiliza un método estadístico basado en la distribución de distancias para tratar valores atípicos, oclusiones, apariciones y desapariciones, lo que permite la coincidencia entre subconjuntos.
Existen muchas variantes de ICP, [ 6 ] de las cuales las de punto a punto y punto a plano son las más populares. Esta última suele tener un mejor rendimiento en entornos estructurados. [ 7 ] [ 8 ]
ICP no rígido

Si bien el ICP tradicional asume transformaciones rígidas, los métodos ICP no rígidos extienden el algoritmo para manejar objetos deformables y escenarios de registro no rígido. Estos métodos incorporan restricciones adicionales y términos de regularización para modelar deformaciones locales manteniendo la coherencia de la superficie.
Implementaciones
- MeshLab es una herramienta de procesamiento de mallas de código abierto que incluye una implementación del algoritmo ICP bajo la Licencia Pública General de GNU.
- CloudCompare es una herramienta de código abierto para el procesamiento de puntos y modelos que incluye una implementación del algoritmo ICP. Se distribuye bajo la Licencia Pública General de GNU.
- PCL (Point Cloud Library) es un marco de código abierto para el procesamiento de nubes de puntos n-dimensionales y geometría 3D. Incluye varias variantes del algoritmo ICP. [ 9 ]
- Las implementaciones de código abierto en C++ del algoritmo ICP están disponibles en las bibliotecas VTK , ITK y Open3D .
- libpointmatcher es una implementación de ICP punto a punto y punto a plano, publicada bajo una licencia BSD.
- simpleICP es una implementación de una versión bastante simple del algoritmo ICP en varios lenguajes.
- 3D-nonrigid-ICP es una implementación de código abierto de un método ICP no rígido.
Véase también
Referencias
- ↑ Arun, Somani; Thomas S. Huang; Steven D. Blostein (1987). "Ajuste por mínimos cuadrados de dos conjuntos de puntos 3D". IEEE Transactions on Pattern Analysis and Machine Intelligence . 9 (5): 698– 700. CiteSeerX 10.1.1.467.9356 . doi : 10.1109/TPAMI.1987.4767965 . PMID 21869429. S2CID 8724100 .
- 1 2 Besl, Paul J.; ND McKay (1992). "Un método para el registro de formas 3-D". IEEE Transactions on Pattern Analysis and Machine Intelligence . 14 (2): 239– 256. doi : 10.1109/34.121791 .
- 1 2 Chen, Yang; Gerard Medioni (1991). "Modelado de objetos mediante el registro de múltiples imágenes de rango". Image Vision Comput . 10 (3): 145– 155. doi : 10.1016/0262-8856(92)90066-C .
- 1 2 Zhang, Zhengyou (1994). "Coincidencia iterativa de puntos para el registro de curvas y superficies de forma libre". International Journal of Computer Vision . 13 (12): 119– 152. CiteSeerX 10.1.1.175.770 . doi : 10.1007/BF01427149 . S2CID 14673939 .
- 1 2 Rusinkiewicz, Szymon; Marc Levoy (2001). Variantes eficientes del algoritmo ICP . Actas de la Tercera Conferencia Internacional sobre Imagen y Modelado Digital 3D. Ciudad de Quebec, Quebec, Canadá. pp. 145–152 . doi : 10.1109/IM.2001.924423 .
- ↑ Pomerleau, François; Colas, Francis; Siegwart, Roland (2015). "Una revisión de los algoritmos de registro de nubes de puntos para robótica móvil" . Foundations and Trends in Robotics . 4 (1): 1– 104. CiteSeerX 10.1.1.709.2212 . doi : 10.1561/2300000035 . S2CID 62361231 .
- ↑ Kok-Lim Low (febrero de 2004). "Optimización lineal por mínimos cuadrados para el registro de superficies ICP de punto a plano" (PDF) . Comp.nys.edu.sg. Informe técnico TR04-004, Departamento de Ciencias de la Computación, Universidad de Carolina del Norte en Chapel Hill . Consultado el 27 de febrero de 2017 .
- ^ François Pomerleau, Francis Colas, Roland Siegwart y Stéphane Magnenat. Comparación de variantes del ICP en conjuntos de datos del mundo real. En Robots autónomos, 34(3), páginas 133–148, DOI: 10.1007/s10514-013-9327-2, abril de 2013.
- ↑ Holz, Dirk; Ichim, Alexandru E.; Tombari, Federico; Rusu, Radu B.; Behnke, Sven (2015). "Registro con la biblioteca de nube de puntos: un marco modular para la alineación en 3-D" . IEEE Robotics & Automation Magazine . 22 (4): 110– 124. doi : 10.1109/MRA.2015.2432331 . S2CID 2621807 .
- Geometría en visión por computadora
- Navegación robótica