点云降采样

点云处理有时因为数据量太大,我们需要对其进行下采样。
这里的方法是先将点云填入固定大小的三维网格中,然后每个网格中选一个点生成新的点云。
新点云即为下采样后的点云。
这里使用斯坦福兔子作为测试点云。
小兔子pcd下载地址
原始点云:

采样后点云:

matlab代码如下:

clear all;
close all;
clc;

pc = pcread('rabbit.pcd');
pcshow(pc);

pc_point = pc.Location;
xlimit = pc.XLimits;
ylimit = pc.YLimits;
zlimit = pc.ZLimits;

cellsize = 0.005;   %定义网格大小
%设置网格数量
W = floor((xlimit(2) - xlimit(1))/cellsize)+1;
H = floor((ylimit(2) - ylimit(1))/cellsize)+1;
D = floor((zlimit(2) - zlimit(1))/cellsize)+1;

%向网格里填数
voxel = cell(W,H,D);
for i =1:length(pc_point)
    I = floor((pc_point(i,1)-xlimit(1))/cellsize)+1;
    J = floor((pc_point(i,2)-ylimit(1))/cellsize)+1;
    K = floor((pc_point(i,3)-zlimit(1))/cellsize)+1;
    voxel{I,J,K} = [voxel{I,J,K};pc_point(i,:)];
end

%以网格中第一个点对原点云进行下采样
pointre =[];
for i=1:W
    for j=1:H
        for k=1:D
            if isempty(voxel{i,j,k})==0
                pointre=[pointre;voxel{i,j,k}(1,:)];
            end
        end
    end
end
pcre = pointCloud(pointre);

figure;
pcshow(pcre);
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCL(Point Cloud Library)是一个开源的点云处理库,提供了丰富的点云处理算法和工具。点云降采样点云处理中的一项重要任务,它可以减少点云数据的数量,从而降低计算和存储的成本,并且可以去除一些噪声点。 在PCL中,点云降采样可以通过使用VoxelGrid滤波器来实现。VoxelGrid滤波器将点云划分为一个个体素(或称为体素格子),然后对每个体素内的点进行采样,只保留一个代表性的点作为该体素的代表点。这样就可以将原始的稠密点云转换为稀疏的点云,从而实现降采样的效果。 以下是使用PCL进行点云降采样的步骤: 1. 创建一个VoxelGrid滤波器对象。 2. 设置滤波器的输入点云数据。 3. 设置滤波器的体素大小,即决定了降采样后的点云密度。 4. 调用滤波器的filter()函数进行降采样操作。 5. 获取滤波器的输出点云数据。 下面是一个示例代码片段,展示了如何使用PCL进行点云降采样: ```cpp #include <pcl/point_cloud.h> #include <pcl/filters/voxel_grid.h> int main() { // 创建点云对象 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 读取点云数据 // 创建VoxelGrid滤波器对象 pcl::VoxelGrid<pcl::PointXYZ> voxelGrid; // 设置输入点云数据 voxelGrid.setInputCloud(cloud); // 设置体素大小 voxelGrid.setLeafSize(0.01f, 0.01f, 0.01f); // 体素大小为1cm // 执行降采样操作 pcl::PointCloud<pcl::PointXYZ>::Ptr filteredCloud(new pcl::PointCloud<pcl::PointXYZ>); voxelGrid.filter(*filteredCloud); // 获取降采样后的点云数据 return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值