надежный алгоритм для реконструкции поверхности из 3D-облака точек?

StackOverflow https://stackoverflow.com/questions/838761

Вопрос

Я пытаюсь выяснить, какие существуют алгоритмы для выполнения реконструкции поверхности по данным 3D-диапазона.На первый взгляд кажется, что Алгоритм поворота шара (BPA) и Реконструкция поверхности Пуассона являются ли более устоявшимися методы?

  • Каковы устоявшиеся, более надежные алгоритмы в данной области, отличные от BPA и алгоритма восстановления поверхности Пуассона?
  • Рекомендуемые исследовательские публикации?
  • Есть ли доступный исходный код?
Это было полезно?

Решение

Я сталкиваюсь с этой дилеммой уже несколько месяцев и провел исчерпывающее исследование.

Алгоритмы

В основном существует 2 категории алгоритмов:геометрия вычислений и неявные поверхности.

Геометрия вычислений

Они подгоняют сетку к существующим точкам.

Вероятно , самым известным алгоритмом из этой группы является порошковая корка, потому что это теоретически хорошо зарекомендовавший себя материал - он гарантирует водонепроницаемость сетки.

Шаровой шарнир запатентован компанией IBM.Кроме того, он не подходит для точечных облаков с различной плотностью точек.

Неявные функции

Один из них помещает неявные функции в pointcloud, затем использует алгоритм, подобный марширующему кубу, для извлечения нулевого набора функции в сетку.

Методы в этой категории отличаются в основном различными используемыми неявными функциями.

Poisson, Хоппе, и MPU это самые известные алгоритмы в этой категории.Если вы новичок в этой теме, я рекомендую прочитать диссертацию Хоппе, она очень поясняющая.

Алгоритмы этой категории обычно могут быть реализованы таким образом, что они способны очень эффективно обрабатывать огромные входные данные, и можно масштабировать их качество<-> компромисс в скорости.Им не мешают шум, изменяющаяся плотность точек, отверстия.Их недостатком является то, что они требуют последовательно ориентированных нормалей поверхности во входных точках.

Реализации

Вы найдете небольшое количество бесплатных реализаций.Однако это зависит от того, собираетесь ли вы интегрировать его в свободное программное обеспечение (в этом случае для Вас приемлема лицензия GPL) или в коммерческое программное обеспечение (в этом случае вам нужна более либеральная лицензия).Последнее встречается очень редко.

Один находится в ВТК.Я подозреваю, что это сложно интегрировать (никакая документация не доступна бесплатно), у него странная, чрезмерно сложная архитектура, и он не предназначен для высокопроизводительных приложений.Также имеет некоторые ограничения для разрешенных входных pointclouds.

Взгляните на это Реализация Пуассона, и после этого поделитесь со мной своим опытом по этому поводу, пожалуйста.

Также:здесь вот несколько высокопроизводительных алгоритмов, среди которых реконструкция поверхности.

CGAL - это известная 3d-библиотека, но она бесплатна только для бесплатных проектов.Мешлаб это известное приложение с GPL.

Также (Добавлено в августе 2013):Библиотека ПКЛ имеет модуль посвящен реконструкции поверхности и находится в активной разработке (и является частью Google Summer of Code).Модуль surface содержит ряд различных алгоритмов для реконструкции.PCL также обладает способностью чтобы оценить нормали поверхности, если они не предоставлены вам вместе с вашими точечными данными, эту функцию можно найти в функциях модуль.PCL выпущен на условиях лицензии BSD и является программным обеспечением с открытым исходным кодом, оно свободно для коммерческого и исследовательского использования.

Другие советы

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

  • Разведка поверхности Пуассона
  • пара подходов, основанных на MLS,
  • реализация поворота шара
  • вариант подхода, основанного на наращивании объема без завитков
  • Методы, основанные на Делоне (альфа-формы и фильтрация Вороного)
  • инструменты для вычисления нормалей по множествам рассеянных точек
  • и многие другие инструменты для сравнения / измерения / очистки / упрощения результирующих сеток.

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

Вы могли бы начать изучать некоторые недавние работы в этой области - в настоящее время что-то вроде Быстрая потоковая MLS-реконструкция поверхностей с точечной выборкой с низким объемом памяти авторы: Джанмауро Куккуру, Энрико Гоббетти, Фабио Мартон, Ренато Пахарола и Руджеро Пинтус.Приведенные в нем цитаты помогут вам довольно быстро ознакомиться с литературой.

Хотя это и не сетчатое представление, бывший коллега порекомендовал мне эту ссылку на исходный код для метода тонких пластинчатых сплайнов:

Ссылка

Кто-нибудь пробовал это?

Не уверен, что это точно подходит для вашего случая, поскольку кажется странным, что вы это опустили, но марширующие кубики обычно упоминается в подобных случаях.

Здесь на GitHub, является открытым исходным кодом Библиотека обработки сетки в C ++ с помощью ДокторХьюз Хоппе, в котором программа реконструкции поверхности Разведка это хороший вариант для вашей проблемы...

Есть 3D инструмент Делоне от Geometric Tools.В этом инструменте используются DirecX и OpenGL.К сожалению, возможно, вам потребуется купить книгу, чтобы увидеть реальный пример кода библиотеки.Вы все еще читаете код и разбираетесь.

Matlab также представила инструмент реконструкции поверхности с использованием Delaunay, Класс триангуляции Делоне.

Поскольку у меня тоже была эта проблема, я разработал и внедрил свой собственный алгоритм создания коры из облака точек.Источники, а также документацию можно найти на github.com: https://github.com/ricebean-net/PointCloudCrust.Алгоритм реализован на Java.

Может быть, это сможет вам помочь.Вы также можете найти короткий скрипт на python на странице, который иллюстрирует, как использовать библиотеку.Получайте удовольствие!

Возможно, вас заинтересует Альфа - формы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top