
Точки данных в этом файле расположены неравномерно. Это облако точек, как вы можете видеть при увеличении:

В качестве упражнения я хотел бы попробовать интерполировать эти данные, используя двумерную сетку с регулярными интервалами. На данный момент меня не слишком беспокоит то, что las-файл имеет форму треугольника.
В каком-то смысле я пытаюсь превратить это облако точек в 2D-изображение с регулярно расположенными пикселями.
Моим первым решением проблемы было использование библиотеки облаков точек.
Код: Выделить всё
#include
#include
#include
#include
#include
#include
#include
#include
using namespace pcl::io;
int main(int argc, char** argv)
{
pcl::PointCloud::Ptr cloud_filtered (new pcl::PointCloud);
pcl::PointCloud::Ptr cloud(new pcl::PointCloud);
if (pcl::io::loadPCDFile("/app/data/triangle.pcd", *cloud) == -1)
{
PCL_ERROR("Couldn't read file\n");
return (-1);
}
pcl::VoxelGrid sor;
sor.setInputCloud (cloud);
sor.setLeafSize (1, 1, 1);
sor.filter (*cloud_filtered);
pcl::io::savePCDFileASCII("/app/output/interpolated_cloud.pcd", *cloud_filtered);
return 0;
}
[img]https:// i.sstatic.net/EAxhFSZP.png[/img]
Похоже, что VoxelGrid выполнил понижающую дискретизацию, но не через равные промежутки времени.
Мне также пришлось использовать PDAL для преобразования моего las файл в файл PCD
Код: Выделить всё
{
"pipeline":
[
{
"type": "readers.las",
"filename": "./data/triangle.las"
},
{
"type": "writers.pcd",
"filename": "./data/triangle.pcd"
}
]
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -intervals