本文主要是介绍matlab练习程序(点云下采样),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点云处理有时因为数据量太大,我们需要对其进行下采样。
这里的方法是先将点云填入固定大小的三维网格中,然后每个网格中选一个点生成新的点云。
新点云即为下采样后的点云。
这里使用斯坦福兔子作为测试点云。
小兔子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:Wfor j=1:Hfor k=1:Dif isempty(voxel{i,j,k})==0pointre=[pointre;voxel{i,j,k}(1,:)];endendend end pcre = pointCloud(pointre);figure; pcshow(pcre);
这篇关于matlab练习程序(点云下采样)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!