一、算法介绍
中值滤波,是一种常见的点云平滑算法,改善原始点云的数据质量问题,MATLAB自带的工具似乎不太友好,这里提供自定义实现的点云中值滤波算法,具体效果如下所示:
中值滤波前:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/19fb7fa272e4c3fbe6298aff78028a89.png)
中值滤波后:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/efdeb04aefca1a0f9efb775ca29b306e.png)
二、算法实现
1.原理
首先读取原始点云数据,并构建kd树以加速最近邻搜索。然后定义窗口大小,对每个点使用kd树查找其最近邻点索引,然后计算这些邻域点的中值作为该点的新坐标。最后将平滑后的点云数据保存为PLY文件。
2.代码
% 读取原始点云数据
rawData = pcread('CSDN.ply'