Шумное трехмерное облако точек для интерполированной поверхностной сетки в Python

Моя основная цель - перейти от шумного облака точек, описывающего поверхность, к обычной поверхностной сетке в Python. Я нашел несколько решений этой проблемы, ни одно из которых не подходит для моего случая достаточно хорошо. Лучшие из найденных:

  • B-сплайн - ›пример -› получение новых точек. Это вычисляет значения z функции на основе обычного набора координат x, y, который не будет работать для почти вертикальных поверхностей, которых у меня много.
  • Алгоритмы катящегося шара / выпуклой оболочки. Мои данные зашумлены по нормали к поверхности, поэтому я получил бы поверхность, которая надувается. Мне нужно сначала удалить шум, что само по себе требует расчета сплайна или чего-то подобного.

Я чувствую, что должен быть простой способ сделать это, но я просто не знаю, что искать. Может ли кто-нибудь указать мне правильное направление?

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


person Lorenzo Gaifas    schedule 15.01.2021    source источник
comment
Сами по себе облака точек не позволяют реконструировать тело. Лучшее, что вы можете получить, - это выпуклый корпус.   -  person Nico Schlömer    schedule 17.01.2021


Ответы (1)


Проблема, которую вы описываете, называется surface reconstruction. Существует множество алгоритмов и программного обеспечения (автономная программа или библиотеки), способных восстановить одну поверхность из набора точек выборки. Существуют важные различия в зависимости от того, есть ли у вас только координаты XYZ точек или у вас есть дополнительная информация в виде цвета или нормали к поверхности.

Называя несколько примеров, вы можете использовать:

  • Проверено Пуассона, Каждан и Болито. Это реализовано в meshlab и многих других библиотеках Python. Наверное, лучший вариант.
  • PowerCRUST, авторы Нина Амента, Сунхи Чой и Рави Коллури.
  • Вращение шара, Бернардини, Миттлман и др. Достаточно просто и легко реализовать самостоятельно.
person Rockcat    schedule 20.01.2021