MATLAB点云处理:点云去噪(pcdenoise)

Posted 没事就要敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB点云处理:点云去噪(pcdenoise)相关的知识,希望对你有一定的参考价值。

1 语法

三种重载

ptCloudOut = pcdenoise(ptCloudIn)

返回删除噪声的点云

[ptCloudOut,inlierIndices,outlierIndices] = pcdenoise(ptCloudIn)

返回删除噪声的点云,并返回内点和外点的索引

[ptCloudOut,___] = pcdenoise(___Name,Value)

使用前面的任何一种语法,使用一个或多个名称、值对参数指定的附加选项

下面对第一个重载函数进行说明

2 ptCloudOut = pcdenoise(ptCloudIn)

废话不多说,直接上代码

代码:

clc;
clear;

% 加载需要去噪的点云
ptCloud_in = pcread('sphere_N.pcd');

% 可视化原始点云
figure;
pcshow(ptCloud_in);
title('含有高斯噪声的点云');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
hold on;

% 执行第一次去噪
ptCloud_inliers1 = pcdenoise(ptCloud_in);

% 可视化去噪后点云(第一次)
figure;
pcshow(ptCloud_inliers1);
title('第一次去噪后的点云');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
hold on;

% 执行第二次去噪
ptCloud_inliers = pcdenoise(ptCloud_inliers1);

% 可视化去噪后点云(第二次)
figure;
pcshow(ptCloud_inliers);
title('第二次去噪后的点云');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
hold on;

% 保存去噪后的点云
pcwrite(ptCloud_inliers,'ptCloud_inliers.pcd','Encoding','binary');			%保存为binary形式的PCD点云

结果展示:


通过结果看出,可以通过执行多次去噪,得到理想的去噪后的点云


参考链接

https://ww2.mathworks.cn/help/vision/ref/pcdenoise.html

以上是关于MATLAB点云处理:点云去噪(pcdenoise)的主要内容,如果未能解决你的问题,请参考以下文章

PCL KdTree——点云去重叠点

matlab那个版本可以进行点云

急!!在MATLAB下怎样处理点云

怎么用MATLAB对点云数据处理

MATLAB点云处理:点云赋色 | 显示自定义颜色的点云

MATLAB点云处理(十九):点云合并(pcmerge)