Соответствие трехмерного облака точек модели CAD
У меня есть облако точек объекта, полученное с помощью лазерного сканера, и модель поверхности CAD этого объекта.
Как сопоставить облако точек с поверхностью, чтобы получить перемещение и вращение между облаком и моделью?
Я полагаю, что мог бы произвести выборку поверхности и попробовать алгоритм итеративной ближайшей точки (ICP), чтобы сопоставить полученное облако точек выборки с облаком точек сканера.
Будет ли это на самом деле работать?
И есть ли лучшие алгоритмы для этой задачи?
3 ответа
Да, ICP может быть применен к этой проблеме, как вы предлагаете при выборке поверхности. Было бы лучше, если у вас есть все доступные лица в вашем лазерном сканировании, в противном случае вам, возможно, придется удалить невидимые лица из вашей модели (в зависимости от того, сколько их есть).
Одним из способов автоматической подготовки модели путем избавления от некоторых скрытых граней является вычисление вогнутого корпуса, который можно использовать для отбрасывания скрытых граней (например, граней, которые не находятся близко к вогнутому корпусу). В зависимости от степени вовлеченности модели, это может быть или не быть необходимым.
ICP работает хорошо, если дать хорошее начальное предположение, потому что он игнорирует точки, которые не являются близкими по отношению к текущему предположению. Если ICP не дает хорошего выравнивания, вы можете попробовать его с несколькими случайными перезапусками, чтобы попытаться решить эту проблему, выбрав лучшее выравнивание.
Более сложным решением является сопоставление локальных объектов. Вы выбираете и вычисляете инвариантный дескриптор, такой как SHOT или FPFH. Вы находите лучшие совпадения, отклоняете несогласованные совпадения, используете их, чтобы придумать хорошее начальное выравнивание, а затем уточняете с помощью ICP. Но вам может не понадобиться этот шаг в зависимости от того, насколько надежным и быстрым является случайный перезапуск ICP.
В новом OpenCV я реализовал модуль сопоставления поверхностей, чтобы сопоставить 3D-модель с 3D-сценой. Начальная поза не требуется, и процесс обнаружения полностью автоматический. Модель также включает в себя ПМС.
Чтобы получить представление, посмотрите это видео здесь (хотя оно не создано реализацией в OpenCV):
https://www.youtube.com/watch?v=uFnqLFznuZU
Полный исходный код здесь и документация здесь.
Вы упомянули, что вам нужно попробовать свою модель САПР. Это правильно, и мы дали алгоритм выборки, подходящий для сопоставления объектов пары точек, такой как реализованный в OpenCV:
Алгоритм точечной выборки для трехмерного сопоставления нерегулярных геометрий, Толга Бирдал, Слободан Илич
http://campar.in.tum.de/pub/tbirdal2017iros/tbirdal2017iros.pdf
Существует открытая библиотека для алгоритмов облака точек, которая реализует регистрацию для других облаков точек. Может быть, вы можете попробовать некоторые из их методов, чтобы увидеть, если они подходят.
Для начала, если у них нет ничего конкретного, чтобы соответствовать сетке многоугольника, вы можете рассматривать вершины сетки как другое облако точек и подгонять ваше облако точек к нему. Это то, что они определенно поддерживают.