一、均匀采样
均匀采样的原理类似于体素化网格采样方法,同样是将点云空间进行划分,不过是以半径=r的球体,在当前球体所有点中选择距离球体中心最近的点替代所有点,注意,此时点的位置是不发生移动的。
球体半径选取越大则采样之后的点云越少,处理速度变快,但会对原先点云过度模糊,网格选取越小,则作用相反。
二、代码部分
注:测试代码均使用PclSharp1.12.0库
/// <summary>
/// 均匀采样
/// </summary>
/// <param name="inCloud"></param>
/// <param name="radiusSearch">半径越大,滤波后点云越稀疏</param>
/// <returns></returns>
public static PointCloudOfXYZ UniformSampling(PointCloudOfXYZ inCloud, double radiusSearch = 0.1f)
{
try
{
PointCloudOfXYZ cloudFiltered = new PointCloudOfXYZ();//滤波后的点云
using (var filter = new PclSharp.Filters.UniformSamplingOfXYZ())
{
filter.SetInputCloud(inCloud);
filter.RadiusSearch = radiusSearch;///设置半径
filter.filter(cloudFiltered);
}
return cloudFiltered;//返回滤波后的点云
}
catch (Exception)
{
return inCloud;//返回滤波前的点云
}
}
三、结果显示