Разница между визуализацией меша и его облака точек

Я работаю с PCL и редактором сеток (MeshLab). Я заинтересован в импорте своих мешей в PCL для обработки 3D.

У меня есть сетчатая модель в многослойном формате. Когда я загружаю модель с кодом:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); 
pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud); 

и я визуализирую это как облако точек:

visualization::PCLVisualizer viewer ("Model"); 
viewer.addPointCloud (cloud,"model"); 

геометрия отличается от загрузки и непосредственной визуализации сетки:

viewer.addModelFromPLYFile(argv[1], "model"); 

Во втором случае я визуализирую модель точно так же, как в редакторе сетки, но в первом случае я визуализирую ее деформированную версию, то есть сфера похожа на эллипсоид. Что здесь происходит? Может, стоит вручную сэмплировать сетку?

Если я добавлю две модели в средство просмотра, разница будет очень очевидной, облако точек меньше, чем сетка, и оно претерпело странную деформацию (см. Прикрепленное изображение)

Большое тебе спасибо

ply
(источник: pcl-users.org)


person gui    schedule 05.07.2013    source источник


Ответы (2)


Если кому-то интересно, вот ответ:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ());
pcl::PolygonMesh triangles;
pcl::io::loadPolygonFilePLY(argv[1], triangles);
pcl::fromROSMsg(triangles.cloud, *cloud);

Этот код открывает файл PLY и преобразует его в облако точек правильной формы.

person gui    schedule 08.07.2013

Я совершенно уверен, что это ошибка PCL до 1.7.2, о чем говорится в примечаниях к выпуску и что подтверждается моим собственным опытом:

Исправлена ​​ошибка в PLYReader, которая приводила к деформации облаков точек при отображении в CloudViewer или PCLVisualizer # 879

Если вы не выполняете обновление, добавьте одну строку, чтобы исправить ошибку следующим образом:

  if (pcl::io::loadPLYFile <pcl::PointXYZRGBNormal> (file, *cloud) == -1)
  {
    std::cout << "Cloud reading failed." << std::endl;
    return (-1);
  }
  cloud->sensor_orientation_.setIdentity();
person anonym11    schedule 14.11.2014