0

Я разрабатываю сканер в реальном времени, в котором я мог бы сканировать поверхность в режиме реального времени. До сих пор я могу сканировать один патч поверхности и сохранять его. Один патч означает только 1 сканирование поверхности (облако точек или треугольники).Как слить два набора данных точечных облаков или полигонов в один? (Слияние не добавляется)

Что я хочу, я хочу сканировать несколько патчей в режиме реального времени. Для этого мне нужно объединить предыдущий патч с текущим патчем. Но я не знаю, что такое стандартный способ или алгоритм для слияния двух патчей, а также я не знаю, какой из них лучше всего подходит для слияния, например, перед триангуляцией (слияние точек) или после триангуляции (сетка слияние). Слияние означает удалить совпадающие точки или треугольники

Моя идея: Если есть две облака точки, источник и цель, а затем, используя VTK, найдите ближайшую точку от облака целевой точки и выберите одну точку, другую отброшенную. Является ли это методом слияния? Это только моя идея? Но проблема в том, что количество точек в исходном и целевом будет разными.

Как слить два патча с помощью VTK, любезно проведите меня?

Также предложите мне, что является стандартным и оптимальным способом достижения задачи сканирования в реальном времени.

Дело № 1:
я) Облако точек Приобретение

б) Регистрация

III) Слияние

IV) Triangulate

Case # 2:

i) Облако точек Приобретение

б) Регистрация

III) Triangulate

IV) Слияние

Дело № 3:

я) Облако точек Приобретение

II) Триангуляция

III) Регистрация

IV) Слияние

Пожалуйста, руководство меня. Спасибо.

ответ

2

Я написал здесь примечание, потому что я только что думал о чем-то подобном.

Ваш предложенный метод (поиск ближайшего соседа при слиянии) кажется возможным. Вопрос о том, что между двумя облаками, имеющими разные размеры, не является проблемой, если вы выполняете поиск по радиусу на основе какого-то желаемого разрешения, а не поиска для одного соседа.

Чтобы управлять своим корпусом 1, вы можете попробовать объединить все облака, затем сбрасывать с помощью сетки вокселей, например. pcl :: VoxelGrid перед триангуляцией (это было бы самым простым способом, но может и не быть тем, что вы хотите).

Алгоритм, инкапсулированный в pcl :: GreedyProjectionTriangulation, как правило, описывается в приведенной ниже работе [1]. В этой статье они также описывают процедуру инкрементного обновления сетки, которая является незначительным изменением алгоритма (они удаляют треугольники рядом с новой точкой и снова начинают жадную триангуляцию). Насколько я знаю, это не было реализовано в PCL, но не должно быть слишком сложным. Это будет соответствовать вашему случаю 2. Однако сетка, которую вы выберете, будет зависеть от порядка, в котором вы объединили облака. Поскольку это временная инвестиция, я бы предложил попробовать сначала слияние точек.

[1] Мартон, З. С., Р. Б. Русу и М. Бец. 2009. «О методах быстрой реконструкции поверхности для больших и шумных облаков точек». На Международной конференции IEEE по робототехнике и автоматизации, 3218-3223. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5152628.

+0

Я пытался понять ваш ответ и бумагу. Это действительно помогло мне понять некоторые концепции. Кстати, вы знаете, что делают профессиональные компании для сканирования в реальном времени. Я видел один интраоральный сканер, в котором восстанавливается инкрементная поверхность, и на поверхность вставляются только уникальные точки. Не было никаких перекрытий. Как вы думаете, что они делают. Это означает, что сначала они получают один патч облака точек, затем преобразуют, затем второй патч, затем регистрируют, затем объединяют оба патча, используя ближайший сосед, затем треугольный, затем отображают. – furqan

+0

Этот цикл продолжается до выхода. Единственная проблема, о которой я думаю, - если я не перемещаю камеру и продолжаю сканировать только одну конкретную поверхность, то вы увидите, что второй патч будет таким же, как первый, только несколько точек отличаются из-за некоторой ошибки или чего-то еще. поэтому это означает, что если у меня есть 100 пунктов в первом патче и 70 во втором, то окончательная поверхность должна иметь 110 точек, 60 следует отбросить из-за перекрытия. для этой цели этот метод должен быть осуществимым, оптимальным и быстрым. У меня есть полная система, в которой я могу сканировать поверхность. – furqan

+0

Теперь мне просто нужно сделать его инкрементальным в режиме реального времени. – furqan