PclSharp--基于多项式平滑点云及法线估计的曲面重建

1、基于移动最小二乘法(MLS)的平滑和法线估计

     有时测量较小的对象时会产生一些误差,这些误差所造成的不规则数据如果直接拿来曲面重建的话,会使重建的曲面不光滑或者有漏洞。而且,这些不规则的缺陷很难用统计分析的方法进行消除,所以为了建立完整并且可用的点云模型,必须对表面进行平滑处理和漏洞修复。在不能进行额外扫描的情况下(也就是仅依靠已有数据的情况下),可以通过对数据进行重采样来解决这一个问题。重采样的算法通过对周围数据点进行高阶多项式的插值来重建表面缺少的部分。(主要功能是平滑表面,重建不光滑和漏洞,以便后边查找法向正常)

    除此之外,多个扫描点的扫描结果配准后得到的数据直接拿来进行曲面重建会产生“双墙”等人造伪数据,即某快区域会出现重叠的两个曲面,使用重采样的方法同样可以处理这个问题。

2、代码:

using PclSharp;
using PclSharp.Common;
using PclSharp.Features;
using PclSharp.Filters;
using PclSharp.IO;
using PclSharp.SampleConsensus;
using PclSharp.Search;
using PclSharp.Segmentation;
using PclSharp.Std;
using PclSharp.Struct;
using PclSharp.Surface;
using System;
using System.Numerics;

namespace PclSharpTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"C#--PclSharp算法库测试:");

            //读取点云数据
            var cloud = new PointCloudOfXYZ();
            using (var reader = new PCDReader())
                reader.Read(AppDomain.CurrentDomain.BaseDirectory + $"//pcd//bun0.pcd", cloud);

            var mls_points = new PointCloudOfPointNormal();
            var tree = new KdTreeOfXYZ();
            //定义最小二乘实现的对象mls
            var mls = new MovingLeastSquaresOfPointXYZAndPointNormal();
            mls.ComputeNormals=true; //设置是否计算法线
            mls.SetInputCloud(cloud);  //设置输入的点云
            mls.SetSearchMethod(tree); //设置搜索方式
            mls.SearchRadius=0.06;  //设置搜索的半径
            mls.Process(mls_points);//进行曲面重建

            using (var viewer = new PclSharp.Vis.CloudViewer("Cloud Viewer"))
            {
                viewer.ShowCloud(cloud);
                while (!viewer.WasStopped);

            }

            Console.ReadKey();
        }

    }
}

3、编译结果

以上例程输入的点云数据是pcl::PointXYZ格式的点云,而输出的是带有法向信息的pcl::PointNormal

效果如下(由于点云输入文件问题,处理后效果不是很明显,勉强能看到下面的点云相较于上面的点云,略微平顺)

                      
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西~风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值