Matlab实现点云抽稀-2021-11-6

更新时间:2023-06-23 06:56:07 阅读: 评论:0

Matlab实现点云抽稀-2021-11-6
1-什么是点云抽稀?
激光雷达扫描单站数据,并将很多的扫描站数据拼接在⼀起后,造成数据量过⼤、数据信息冗余,产⽣数据难以处理、提取信息收到⼲扰等等问题,需要按照⼀定的规则,对过量的点云数据进⾏点云的筛选,使得它在保留较多的信息的同时,减少数据量。
2-体素抽稀matlab2019b实现教程
博主以平均体素抽稀为例,按照⼀定的⼤⼩(m),将点云划分为⼤量的体素,提取每个体素的平均值代替每个体素包含的点云,即为平均体素抽稀,当然,这⾥也可以改成随机、或者其他规则。
最终实现点云的抽稀。
% 体素化
pear怎么读% 保留idx
% 根据体素格⽹进⾏降采样
% compresd是抽稀后的点云
% cellsize是体素的尺⼨单位是m
% 读取点云
% teapot为matlab2019b⾃带的点云数据
a =  pcread('teapot.ply');
a = a.Location;
cellsize = 0.1;
%得到点云的最⼤最⼩值
minx = min(a(:,1));
miny = min(a(:,2));
minz = min(a(:,3));
kissgoodbye歌词
maxx = max(a(:,1));
maxy = max(a(:,2));
ploicemaxz = max(a(:,3));
%顺序标记
bj = 1:length(a);
bj = bj';
%把点云按照体素进⾏格⽹划分
W = floor((maxx - minx) / cellsize) + 1;
H = floor((maxy - miny) / cellsize) + 1;
D = floor((maxz - minz) / cellsize) + 1; voxel = cell(W,H,D);
burndown>碧昂丝好听的歌for i=1:length(a)
I = floor((a(i,1)-minx)/cellsize)+1;
J = floor((a(i,2)-miny)/cellsize)+1;
K = floor((a(i,3)-minz)/cellsize)+1;
voxel{I,J,K} = [voxel{I,J,K};bj(i,:)];
中国英语教师网end
ason in the sun
%循环格⽹
compresd = [];
idx = [];
for i=1:W
for j=1:H
for k=1:D
jea
if impty(voxel{i,j,k}) == 0
idx1 = voxel{i,j,k};
val = mean(a(idx1,:),1);
compresd = [compresd;val];            end
end高中数学教材人教版
end
end
subplot(1,2,1),pcshow(a)
subplot(1,2,2),pcshow(compresd)
主板维修培训3-最终结果
左图为原始数据,右图为抽稀后的数据。 后续博主会上传该function⽂件。

本文发布于:2023-06-23 06:56:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1019261.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   体素   提取   信息   培训   收到
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图