点云处理有时因为数据量太大,我们需要对其进行下采样。

这里的方法是先将点云填入固定大小的三维网格中,然后每个网格中选一个点生成新的点云。

新点云即为下采样后的点云。

这里使用斯坦福兔子作为测试点云。

小兔子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练习程序(点云下采样)相关推荐

  1. 利用PCL点云下采样实现数据体素化

    利用PCL点云下采样实现数据体素化 PCL PCL(Point Cloud Library) 库集成了针对大体量级别的空间点数据处理所需要的算法和操作,降低了处理相关需求的复杂度,对快速建立点云数据文 ...

  2. Easy3DCGAL 点云下采样(体素)

    文章目录 一.简介 二.实现代码 三.实现效果 参考资料 一.简介 有些激光扫描仪产生的点具有广泛的可变采样.通常情况下,扫描采样点非常密集,但两条扫描线之间的距离要比采样点间距大的多,这有可能会导致 ...

  3. 三种点云下采样方法(一) — open3d python

    点云下采样是对点云以一定的采样规则重新进行采样,目的是在保证点云整体几何特征不变的情况下,降低点云的密度,进而可以降低相关处理的数据量和算法复杂度.下面介绍三种点云下采样方式.最远点采样等方法后续会在 ...

  4. 点云降采样(DownSampling)

    点云降采样 1 概述 三维点云往往包含大量冗余数据,直接处理计算量大,消耗时间长,因此对其进行降采样是十分必要的.降采样同时也是点云预处理过程中的关键环节. 2 常用方法 2.1 体素网格下采样 2. ...

  5. PCL点云曲面重采样三种方法:上采样,下采样,均匀采样

    (1)下采样  Downsampling 一般下采样是通过构造一个三维体素栅格,然后在每个体素内用体素内的所有点的重心近似显示体素中的其他点,这样体素内所有点就用一个重心点来表示,进行下采样的来达到滤 ...

  6. PCL教程-点云滤波之体素滤波器(下采样)

    原文链接:Downsampling a PointCloud using a VoxelGrid filter 点云文件下载: table_scene_lms400.pcd 目录 原理 程序代码 PC ...

  7. Open3D 三维点云读取可视化、下采样、去除离群点、地面提取

    Open3D:3D数据处理的现代库,是一个开放源代码库,支持快速开发处理3D数据的软件.Open3D在C ++和Python中公开了一组精心选择的数据结构和算法.后端经过高度优化,并支持并行化. 推荐 ...

  8. YUV序列下采样以及彩色4:2:0与灰度4:0:0转换---基于matlab实现

    1.YUV序列(4:2:0)下采样 matlab代码: yuvDownSample.m clear clc%% Read yuv from file yuvseq = 'kendo0.yuv'; % ...

  9. Open3d之点云体素下采样

    原理 体素下采样通过输入的点云数据创建一个三维体素栅格,然后在每个体素内,用体素中所有点的重心来近似显示体素中其他点,这样该体素内所有点就用一个重心点最终表示,从而将输入点云创建统一下采样的点云. 它 ...

最新文章

  1. mimo的误码率_混合波束成形专栏|基础:深入浅出5G,毫米波,大规模MIMO与波束赋形...
  2. mongoDB3.0.2 升级操作
  3. script的defer和async
  4. nginx事件模块 -- 第六篇 stale event
  5. request中getParameter和getAttribute的区别
  6. c语言基本练习题 doc,C语言练习题-基本数据类型和运算.doc
  7. python中confIgparser模块学习
  8. Bailian4016 班级排名【稳定排序】
  9. 无法鼠标拖动选择_在 iPad 上用鼠标体验怎么样?我用这 12 款 App 试了一下
  10. msys2编译器的配置
  11. Lesson 10.1Lesson 10.2 开篇:超参数优化与枚举网格搜索的理论极限随机网格搜索
  12. 3d模型多怎么优化_近似模型之响应面建模
  13. Java 后端接口 ECharts 日历表统计每年每月每日的数据条数 ECharts Java 后端接口统计 利用日历表统计 MySQL 数据条数
  14. 基于ENVI下的土地利用信息提取(一)
  15. 关于java web开发中的很多小问题集锦
  16. 手机技巧:苹果手机这8个实用小技巧
  17. ISDP_ch10ch11问题汇总
  18. linux网卡驱动离线安装_linux下网卡驱动安装全过程
  19. 第16集丨阳明心学量子力学
  20. error: (-215:Assertion failed) npoints = 0 (depth == CV_32F || depth == CV_32F || depth ==CV_32S

热门文章

  1. cross-env使用
  2. php回调函数如何执行顺序,PHP回调函数调用方式
  3. java c语言union转换_C语言联合体(union)的使用方法及其本质-union
  4. 【Linux】44.设置ubuntu电脑为简单的密码
  5. Pytorch搭建Faster R-CNN目标检测平台
  6. 《漫画算法》源码整理-2 数组 链表 队列
  7. Java 面试知识点解析(二)——高并发编程篇
  8. Vue.js 从 Vue Router 0.7.x 迁移
  9. Java Number 类
  10. 深度学习Deep Learning: dropout策略防止过拟合