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

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

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

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

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

который отлично работает, ЕСЛИ облако имеет тип

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

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

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


person Tukk    schedule 22.05.2017    source источник
comment
который работает нормально, означает, что MeshLab может открыть его и создать сетку, или что savePLYFileBinary правильно сохраняет файл? т.е. в чем ваша проблема? MeshLab не может открыть файл? MeshLab не может сохранять ярлыки при открытии? MeshLab не может сохранить метки после создания сетки?   -  person cbuchart    schedule 22.05.2017
comment
MeshLab вообще не может его открыть, но не выдает никаких ошибок, вместо этого я могу его загрузить, но не видит облака.   -  person Tukk    schedule 24.05.2017


Ответы (1)


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

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

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

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


Обновить

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

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

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

person cbuchart    schedule 24.05.2017
comment
Я сейчас этим и занимаюсь. Я просто вычисляю сетку и сохраняю ее. Затем я загружаю эту сетку в свою программу и назначаю метку ближайшему соседу. Поскольку я использую экранированную реконструкцию Пуассона, я не уверен, будут ли точки быть удалены / сдвинуты или что-то еще, что позже приведет к неправильному назначению меток. - person Tukk; 24.05.2017
comment
SPR не гарантирует метод интерполяции, а только вводит позиционные ограничения для повышения точности реконструированной сетки. Так что в этом случае вы не можете гарантировать даже то, что количество вершин равно количеству входных точек. Вам следует: а) изменить метод реконструкции (в зависимости от вашего уровня шума и выбросов это может быть невозможно), б) придерживаться вашего текущего метода, который я считаю очень хорошим. - person cbuchart; 24.05.2017
comment
Я предполагаю, что метки - это дискретные значения. Вместо этого вы, вероятно, захотите найти n ближайших соседей и выполнить интерполяцию для любых других значений континуума, таких как цвет. - person cbuchart; 24.05.2017
comment
Я обязательно попробую. Спасибо, опубликую здесь, как это сработало! - person Tukk; 24.05.2017