本文主要是介绍PclSharp1.12.0--半径滤波,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、半径滤波
原理:对整个输入迭代一次,对于每个点进行半径R邻域搜索,如果邻域点的个数低于某一阈值,则该点将被视为噪声点并被移除。
二、代码部分
注:测试代码均使用PclSharp1.12.0库
/// <summary>
/// 点云半径滤波,实现删除离群点的简单的滤波功能
/// </summary>
/// <param name="inCloud"></param>
/// <param name="radiusSearch">设置查询点的半径范围</param>
/// <param name="meanK">如果一个点在给定半径内临近点数量小于给定阈值K,则判定为离群点并删除</param>
/// <returns></returns>
public static PointCloudOfXYZ RadiusOutlierRemoval(PointCloudOfXYZ inCloud, double radiusSearch = 0.1 ,int meanK = 5)
{
try
{
PointCloudOfXYZ cloudFiltered = new PointCloudOfXYZ();//滤波后的点云
using (var filter = new PclSharp.Filters.RadiusOutlierRemovalOfXYZ())
{
filter.SetInputCloud(inCloud);
filter.RadiusSearch = radiusSearch; //设置在半径的范围内查询点邻近点
filter.MinNeighborsInRadius = meanK; //设置判断是否为离群点的阈值,即半径内至少包括的点数
filter.filter(cloudFiltered);
}
return cloudFiltered;//返回滤波后的点云
}
catch (Exception)
{
return inCloud;//返回滤波前的点云
}
}
三、结果显示
这篇关于PclSharp1.12.0--半径滤波的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!