надежный алгоритм реконструкции поверхности из трехмерного облака точек? - PullRequest
57 голосов
/ 08 мая 2009

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

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

Ответы [ 9 ]

89 голосов
/ 27 мая 2009

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

Алгоритмы

В основном есть две категории алгоритмов: вычислительная геометрия и неявные поверхности.

Вычислительная геометрия

Они соответствуют сетке на существующих точках.

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

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

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

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

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

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

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

Реализация

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

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

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

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

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

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

10 голосов
/ 02 января 2010

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

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

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

5 голосов
/ 11 мая 2009

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

4 голосов
/ 28 мая 2009

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

Ссылка

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

3 голосов
/ 08 мая 2009

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

1 голос
/ 26 января 2017

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

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

1 голос
/ 19 сентября 2016

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

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

1 голос
/ 13 сентября 2016

Здесь на GitHub, с открытым исходным кодом Библиотека обработки сетки в C ++ Dr. Hugues Hoppe , в котором программа восстановления поверхности Recon является хорошим вариантом для вашей задачи ...

0 голосов
/ 08 мая 2009

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

...