主要内容

本页采用了机器翻译。点击此处可查看英文原文。

pcdenoise

从三维点云中去除噪声

说明

ptCloudOut = pcdenoise(ptCloudIn) 返回一个经过过滤、已去除异常值的点云。

示例

[ptCloudOut,inlierIndices,outlierIndices] = pcdenoise(ptCloudIn) 还会返回被识别为内点和外点的点的线性索引。

[ptCloudOut,___] = pcdenoise(___Name=Value) 除了前面的语法中任意组合的参量外,还指定了一个名称-值参量。例如,Threshold=1.0 将异常值阈值设置为 1.0

示例

全部折叠

创建一个平面点云。

gv = 0:0.01:1;
[X,Y] = meshgrid(gv,gv);
ptCloud = pointCloud([X(:),Y(:),0.5*ones(numel(X),1)]);

figure
pcshow(ptCloud);
title('Original Data');

Figure contains an axes object. The axes object with title Original Data contains an object of type scatter.

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

noise = rand(500, 3);
ptCloudA = pointCloud([ptCloud.Location; noise]);

figure
pcshow(ptCloudA);
title('Noisy Data');

Figure contains an axes object. The axes object with title Noisy Data contains an object of type scatter.

去除异常值。

ptCloudB = pcdenoise(ptCloudA);

figure;
pcshow(ptCloudB);
title('Denoised Data');

Figure contains an axes object. The axes object with title Denoised Data contains an object of type scatter.

从已保存的 MAT 文件中加载一个已整理的点云。

ld = load('drivingLidarPoints.mat');
orgPtCloud = ld.ptCloud;

从点云中去除噪声。

orgPtCloudOut = pcdenoise(orgPtCloud,PreserveStructure=true);

输入参数

全部折叠

点云,指定为 pointCloud 对象。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: Threshold=1.0 将阈值设置为 1.0

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

数据类型: single | double

异常值阈值,指定为由 'Threshold' 和一个正标量组成的以逗号分隔的元组。默认情况下,阈值设定为所有点到邻居的平均距离均值的一个标准差。如果一个点到其 k 最近邻的平均距离超过了指定的阈值,则该点被视为异常值。

数据类型: single | double

将点云的有序结构保存为一个 M×N×3 的位置矩阵,指定为 truefalse。该表根据 PreserveStructure 的值描述了点云的结构。

PreserveStructure该函数返回
true

一个经过整理和降噪的点云。

描述点云结构的 Location 属性包含一个 M×N×3 的矩阵。

在去噪点云中未被选中的点将填充为 NaN,并将其对应的颜色设置为 [0 0 0]

要返回一个已整理的点云,输入必须是一个已整理的点云。

false

一个未经组织、已去噪的点云。

描述点云结构的 Location 属性包含一个 M×3 的矩阵。

输出参量

全部折叠

经过过滤的点云,以 pointCloud 对象的形式返回。

内点的一维索引,以 1×N 向量的形式返回。

数据类型: uint32

异常点的线性索引,以 1×N 向量的形式返回。

数据类型: uint32

参考

[1] Rusu, R. B., Z. C. Marton, N. Blodow, M. Dolha, and M. Beetz. “Towards 3D Point Cloud Based Object Maps for Household Environments”. Robotics and Autonomous Systems Journal. 2008.

扩展功能

全部展开

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

版本历史记录

在 R2015a 中推出