Итеративный алгоритм ближайших точек ( — 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++

Категория:Компьютерное зрение Категория:Алгоритмы