主要内容

pcdenoise

去除三维点云中的噪声

描述

例子

ptCloudOut= pcdenoise (ptCloudIn返回删除异常值的过滤点云。

ptCloudOutinlierIndicesoutlierIndices= pcdenoise(ptCloudIn另外,返回标识为内值和异常值的点的线性下标。

ptCloudOut___= pcdenoise(___名称=值除以前语法中的参数组合外,还指定一个名称-值参数。例如,阈值= 1.0将离群值阈值设置为1.0

例子

全部折叠

创建一个平面点云。

Gv = 0:0.01:1;[X,Y] = meshgrid(gv,gv);ptCloud = pointCloud ([X (:), Y(:), 0.5 *的(元素个数(X) 1)));图pcshow (ptCloud);标题(“原始数据”);

图中包含一个轴对象。标题为Original Data的axes对象包含一个散点类型的对象。

添加均匀分布的随机噪声。

噪声= rand(500,3);ptCloudA = pointCloud([ptCloud.Location;噪音);图pcshow (ptCloudA);标题(“数据”);

图中包含一个轴对象。标题为嘈杂数据的axes对象包含一个散点类型的对象。

删除离群值。

ptCloudB = pcdenoise(ptCloudA);图;pcshow (ptCloudB);标题(“去噪数据”);

图中包含一个轴对象。标题为降噪数据的axes对象包含一个散点类型的对象。

从保存的mat文件加载一个有组织的点云。

Ld =负载(“drivingLidarPoints.mat”);orgPtCloud = ld.ptCloud;

去除点云中的噪声。

orgPtCloudOut = pcdenoise(orgPtCloud,PreserveStructure=true);

输入参数

全部折叠

点云,指定为apointCloud对象。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:阈值= 1.0将阈值设置为1.0

最近相邻点的数目,指定为逗号分隔的对,由'NumNeighbors'和像素为单位的正整数。该值用于估计所有点到邻居的平均距离的平均值。减小这个值会使滤波器对噪声更加敏感。增加这个值会增加计算次数。

数据类型:|

异常值阈值,指定为逗号分隔的对,由'阈值'和标量。默认情况下,阈值是所有点到邻居的平均距离的平均值的一个标准偏差。一个点被认为是一个离群点,如果它的平均距离k-nearest neighbors大于指定阈值。

数据类型:|

保留点云的组织结构——- - - - - -N-by-3位置矩阵,指定为真正的.表中根据的值描述了点云结构PreserveStructure

PreserveStructure 函数返回
真正的

一个有组织的去噪点云。

位置属性,该属性描述点云的结构——- - - - - -N3矩阵。

对去噪后的点云中未被选中的点进行填充,对应的颜色设置为[0 0 0]

要返回一个有组织的点云,输入必须是一个有组织的点云。

无组织的去噪点云。

位置属性,该属性描述点云的结构3矩阵。

输出参数

全部折叠

过滤后的点云,返回为pointCloud对象。

内嵌点的线性索引,返回为1 × -N向量。

数据类型:uint32

离群点的线性索引,返回为1 × -N向量。

数据类型:uint32

参考文献

[1]鲁苏,R. B., Z. C.马顿,N.布罗多,M.多尔哈,M.比茨。“面向家庭环境的基于3D点云的对象地图”。机器人与自主系统杂志.2008.

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2015a中引入