Как загрузить облако точек с метками в Meshlab?

В настоящее время я использую библиотеку облаков точек (PCL) для работы с облаками точек. Теперь мне нужно вычислить меш для некоторого облака точек и подумал, что лучше всего использовать Meshlab. Пока все хорошо, моя проблема в том, что у моего облака точек есть метки, т.е. он имеет следующую форму:

pcl::PointCloud<pcl::PointXYZRGBL> cloud;

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

pcl::io::savePLYFileBinary(writePath, *cloud);

который отлично работает, если облако имеет тип

pcl::PointCloud<pcl::PointXYZRGB> cloud;

но не работает для первого случая. Кто-нибудь есть идеи, что я мог бы сделать, чтобы иметь возможность получить PLY-файл, который содержит метки и может быть загружен в Meshlab?

Спасибо всем!

1

Решение

Поскольку MeshLab не может открыть ваше облако отмеченных точек, я бы предложил:

  1. Экспортируйте ваше облако точек в формат, читаемый MeshLab (например, pcl::PointCloud<pcl::PointXYZRGB> ты упомянул).

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

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


Обновить

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]