如何对LAS格式点云进行规则间隔2D网格插值?
点云转规则间隔2D网格插值方案疑问
我有一个LAS格式的点云文件,点云整体呈三角形分布,且数据点分布不均匀;放大后可看到点云的细节特征。作为练习,我希望通过规则间隔的2D网格对该数据进行插值,暂时无需考虑LAS文件的三角形形状,本质是将点云转换为具有规则间隔像素的2D图像。
已尝试方案
1. PCL实现(未达预期)
最初尝试用Point Cloud Library(PCL)实现,代码如下:
#include <pcl/point_cloud.h> #include <pcl/point_types.h> #include <pcl/kdtree/kdtree_flann.h> #include <pcl/surface/grid_projection.h> #include <pcl/io/pcd_io.h> #include <pcl/filters/approximate_voxel_grid.h> #include <pcl/filters/voxel_grid.h> #include <pcl/io/ply_io.h> using namespace pcl::io; int main(int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); if (pcl::io::loadPCDFile("/app/data/triangle.pcd", *cloud) == -1) { PCL_ERROR("Couldn't read file\n"); return (-1); } pcl::VoxelGrid<pcl::PointXYZ> 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; }
但运行后仅完成了点云下采样,并未实现规则间隔的插值效果,结果只是下采样后的稀疏点云,不符合预期。
2. PDAL格式转换
通过PDAL完成了LAS到PCD格式的转换,配置如下:
{ "pipeline": [ { "type": "readers.las", "filename": "./data/triangle.las" }, { "type": "writers.pcd", "filename": "./data/triangle.pcd" } ] }
疑问
目前怀疑当前方案方向错误,是否需要自行实现插值逻辑?
内容的提问来源于stack exchange,提问作者sav
相关产品推荐
相关产品推荐

