matlab 点云降采样 pcdownsample()

**

点云数据降采样 pcdownsample()

**
pcdownsample降采样减少点云数据量:

一、语法:

ptCloudOut = pcdownsample(ptCloudIn, 'random', percentage)
ptCloudOut = pcdownsample(ptCloudIn, 'gridAverage', gridStep)
ptCloudOut = pcdownsample(ptCloudIn, 'nonuniformGridSample', maxNumPoints)

二、描述:

ptCloudOut = pcdownsample(ptCloudIn,'random',percentage)

//random 随机下采样方式;percentage 百分比
//返回一个带有随机采样且没有替换的下采样点云。百分比输入指定返回到输出的输入部分。

ptCloudOut = pcdownsample(ptCloudIn,'gridAverage',gridStep)

//gridAverage平均网格;gridStep网格步长
//使用box grid过滤器返回下采样点云。gridStep输入指定3d框的大小。

ptCloudOut = pcdownsample(ptCloudIn,'nonuniformGridSample',maxNumPoints)

//nonuniformGridSample非均匀网格取样;maxNumPoints最大点数
//使用非均匀盒网格过滤器返回下采样点云。您必须将网格框中的最大点数maxNumPoints设 置为至少6。

三、例子:
一、下采样点云使用网格过滤:

    //读取一份点云:
    ptCloud = pcread('teapot.ply');
    //设置3-D分辨率为(0.1 x 0.1 x 0.1):
    gridStep = 0.1;
    ptCloudA = pcdownsample(ptCloud,'gridAverage',gridStep);
    //可视化下采样数据:
    figure;
    pcshow(ptCloudA);
    //将点云与使用固定步长下采样的数据进行比较:
    stepSize = floor(ptCloud.Count/ptCloudA.Count);
    indices = 1 : stepSize : ptCloud.Count;
    ptCloudB = select(ptCloud, indices);
    figure;
    pcshow(ptCloudB);

二、从点云中删除冗余点:

    //创建一个点云,所有点共享相同的坐标:
    ptCloud = pointCloud(ones(100,3));
    //将3-D分辨率设置为一个小值:
    gridStep = 0.01;
    //输出现在只包含一个惟一点:
    ptCloudOut = pcdownsample(ptCloud,'gridAverage',gridStep)
  • 三、输入参数

1、随机采样方法(random):
指定为字符串“Random”。这种方法比“gridAverage”下采样方法更有效,尤其是在点云注册之前。
在这里插入图片描述
百分比 – 投入的百分比(percentage(积极的标量)):
输入的百分比,在[0,1]范围内指定为正标量。百分比输入指定函数返回的输入部分。

2、平均网格下采样方法(gridAverage):
指定为字符串“gridAverage”。同一个框中的点被合并到输出中的一个点。它们的颜色和正常属性也相应平均。该方法保留了点云的形状。
该函数为整个点云计算轴向对齐的边界框。边界框被划分为由gridStep指定大小的网格框。每个网格框中的点通过对它们的位置、颜色和法线进行平均合并。

网格步长-网格过滤器的三维框的大小(gridStep(数值)):
用于网格过滤器的三维框的大小,指定为数值。当没有足够的资源构建大型细粒度网格时,增加gridStep的大小。

3、非均匀网格抽样法(nonuniformGridSample):
非均匀网格抽样方法,指定为字符串“非均匀网格抽样”。该方法的最佳用途是,在使用“pointToPlane”度量时,将其作为点云注册的pcregrigid函数的预处理步骤。当您使用“非均变网格采样”算法时,法线是在向下采样之前对原始数据进行计算的。下采样输出保持了更准确的法线。

网格框中的最大点数(maxNumPoints)(整数):
网格框中的最大点数,指定为大于6的整数。该方法从每个框中随机选择一个点。如果输入点云中没有提供normal,则此方法将自动填充ptCloudOut输出中的normal属性。

  • 四、输出参数

ptCloudOut -过滤点云
pointCloud对象

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MATLAB点云处理是一种在MATLAB环境下进行三维点云数据处理和分析的方法。它提供了一系列的函数和工具,可以进行点云数据降采样、变换和聚类分割等操作。 降采样是指减少点云数据的密度,以便于后续处理和可视化。在MATLAB中,可以使用pcdownsample函数进行降采样操作。根据不同的需求,有三种降采样方法可供选择:随机降采样、网格平均降采样和非均匀网格采样。 变换3D点云是指对点云数据进行平移、旋转和缩放等操作,以调整点云在三维空间中的位置和方向。在MATLAB中,可以使用pctransform函数进行点云变换。可以通过提供变换矩阵或仿射变换对象来实现点云的变换操作。 聚类分割是指将点云数据根据其属性或几何特征进行分组,从而实现点云的分割和分类。在MATLAB中,可以使用pcsegdist函数进行欧式聚类分割操作。该函数可以根据欧氏距离将点云数据划分为不同的聚类群组,并返回每个点所属的聚类标签。 总之,MATLAB点云处理提供了丰富的函数和工具,可以方便地进行点云数据降采样、变换和聚类分割等操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MATLAB点云处理函数整理](https://blog.csdn.net/qq_27353621/article/details/127284957)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [MATLAB点云处理(二十二):欧式聚类分割----独立窗口显示每一聚类结果----保存聚类点云](https://blog.csdn.net/weixin_46098577/article/details/119810519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值