Итеративный алгоритм ближайших точек
Итеративный алгоритм ближайших точек (англ. Iterative Closest Point — ICP) — алгоритм, использующийся для сведения к минимуму разницы между двумя облаками точек. ICP часто используется для восстановления двухмерных (2D) или трёхмерных (3D) поверхностей из разных сканов, для определения местоположения роботов и планирования оптимального их пути (особенно когда одометрия колеса ненадежна из-за скользкого ландшафта), регистрации модели кости и т.д.
Алгоритм концептуально прост и часто используется в режиме реального времени. Он многократно применяет преобразования (смещение, вращение) необходимые для сведения к минимуму расстояния между точками из двух необработанных сканов.
Входы: точки из двух необработанных сканов, первичная оценка трансформации, критерии для остановки итерации.
Результат: совершенное преобразование.
По существу эти шаги алгоритма являются:
- Связка точек по критерию ближайшего соседа.
- Оценка параметров преобразования с помощью функции среднеквадратичной стоимости.
- Преобразования точек с помощью оценочных параметров.
- Многократные итерации (заново связывая точки и так далее).
См. также
- MeshLab — инструмент обработки сетки c открытым исходным кодом, который включает GNU GPL-реализацию ICP-алгоритма.
- CloudCompare — инструмент для обработки точек и моделей с открытым исходным кодом, который включает в себя реализацию алгоритма ICP.
- Point Cloud Library — библиотека для работы с облаком точек с открытым исходным кодом, предназначенная для обработки 3D геометрии и n-мерного облака точек. Она включает в себя несколько вариантов алгоритма ICP.