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