醋醋百科网

Good Luck To You!

PclSharp—MLS点云上采样增加点云密度

一、MLS上采样

MLS算法基于最小二乘法,通过拟合每个点的局部邻域曲面来重构点云,对于每个点,MLS算法会选择一个局部邻域,并在该邻域内生成一个曲面拟合模型。然后,根据拟合模型算法会计算出在该点的新位置,从而实现点云的增采样。

增采样的特点是可极大的增加点云数据,但由于内插点的不确定性会导致最后输出的结果不一定准确。测试得出增采样,只能增加点的密度,但对于空洞的填补无能为力。

二、代码部分

/// <summary>
/// 增采样
/// </summary>
/// <param name="inCloud">原点云</param>
/// <param name="radiusSearch">搜索半径</param>
/// <param name="upsamplingRadius">采样半径</param>
/// <param name="upsamplingStepSize">采样步数</param>
/// <returns></returns>
public static PointCloudOfXYZ UpSampling(PointCloudOfXYZ inCloud, double radiusSearch = 1,double upsamplingRadius = 1, double upsamplingStepSize = 1)
{
try
{
PointCloudOfXYZ cloudFiltered = new PointCloudOfXYZ();//滤波后的点云
using (var kdtree = new KdTreeOfXYZ())
using (var filter = new
MovingLeastSquaresOfPointXYZAndPointXYZ())

{
filter.SetInputCloud(inCloud);
filter.SetSearchMethod(kdtree);
//设置搜索域的半径
filter.SearchRadius = radiusSearch;
//采样方法

filter.SetUpsamplingMethod(
UpsamplingMethod.SAMPLE_LOCAL_PLANE);

//采样半径
filter.UpsamplingRadius = upsamplingRadius;
//采样的步数大小
filter.UpsamplingStepSize = upsamplingStepSize;
filter.Process(cloudFiltered);
}
return cloudFiltered;//返回滤波后的点云
}
catch (Exception)
{
return inCloud;//返回滤波前的点云
}
}
三、结果显示

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言