PclSharp--VoxelGrid滤波实现下采样

本文介绍了一种利用体素化网格减少点云数据的方法,通过创建三维体素栅格并采用体素中所有点的重心来近似表示其他点,以此降低点云数据量并保持形状特征。该方法适用于提高配准、曲面重建等算法的速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、使用体素化网格方式实现下采样,即减少点的数量,减少点云数据,并同时保持点云的形状特征,在提高配准、曲面重建、形状识别等算法速度中非常实用。PCL实现的VoxelGrid类通过输入的点云数据创建一个三维体素栅格(可把体素栅格想象为微小的空间三维立方体的集合),然后在每个体素(即三维立方体)内,用体素中所有点的重心来近似显示体素中的其他点,这样体素内所有点就用一个重心点最终表示。对于所有体素处理后得到过滤的点云,这种方法比用体素中心来逼近的方法更慢,但它对于采样点对应曲面的表示更为准确。
2、代码:

using PclSharp;
using PclSharp.IO;
using PclSharp.Struct;
using System;


namespace PclSharpTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"C#--PclSharp算法库测试:");
            //读取点云文件
            var inCloud = new PointCloudOfXYZ();
            using (var reader = new PCDReader())
                reader.Read(AppDomain.CurrentDomain.BaseDirectory + $"//pcd//table.pcd", inCloud);

            PointCloudOfXYZ cloudFiltered = new PointCloudOfXYZ();//滤波后的点云
            //设置三维栅格的大小,数值越大,栅格越大,采样后的点云数据越小
            PointXYZ voxelpointXYZ = new PointXYZ { X = 0.01f, Y = 0.01f, Z = 0.01f };
            using (var sor = new PclSharp.Filters.VoxelGridOfXYZ())
            {
                sor.SetInputCloud(inCloud);
                sor.LeafSize = voxelpointXYZ;//体素点的大小
                sor.filter(cloudFiltered);
            }
            using (var visualizer = new PclSharp.Vis.Visualizer(" visual window"))
            {
                //创建两个观察视点
                int v1 = 0;
                int v2 = 1;
                visualizer.CreateViewPort(0.0, 0.0, 0.5, 1.0, v1);
                visualizer.CreateViewPort(0.5, 0.0, 1.0, 1.0, v2);
                //设置背景色
                visualizer.SetBackgroundColor_ViewPort(0f,0f,0f,v1);
                visualizer.SetBackgroundColor_ViewPort(0.05f, 0f, 0f,v2);

                visualizer.AddPointCloud(cloudFiltered, "v1", v1);
                visualizer.AddPointCloud(inCloud, "v2", v2);

                visualizer.SetPointCloudColor(1, 1, 0.5, "v1");//点云附色
                visualizer.SetPointCloudColor(1, 0.5, 1, "v2");//点云附色

                while (!visualizer.WasStopped)
                    visualizer.SpinOnce(100);
            }
            Console.ReadKey();
        }

    }
}
 

3、体素滤波后,点数量明显减少

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

西~风

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

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

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

打赏作者

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

抵扣说明:

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

余额充值