[概述] 点云滤波器

拓扑结构

点云是一种三维数据,有几种方法可以描述其空间结构,以利于展开搜索

https://blog.csdn.net/weixin_45824067/article/details/131317939

        KD树

         头文件:pcl/kdtree/kdtree_flann.h

         函数:pcl::KdTreeFLANN

         作用:

                用于范围搜索:比如搜索给定点指定半径内存在的点

                用于最近邻居搜索:比如搜索距离指定点最近的点

                用于支持其他高级操作

        八叉树

         头文件:pcl/octree/octree_search.h

          函数:pcl::octree::OctreePointCloudSearch

         作用:

                用于空间搜索:与前面类似,搜索指定点附近的点,或以体素为单位搜索,直接返回指定点锁所在的体素,或直接搜索返回K个邻近点,或搜索指定半径内的邻近点

                体素化:通过八叉树将点云数据分割为一系列体素(立方体)。每个体素代表一个固定大小的区域,并包含在该区域内的点云数据。如此,可以估计点云密度,表面重建等,支持更高级的点云处理任务

滤波器

https://blog.csdn.net/weixin_45824067/article/details/131334072

点云传统滤波算法_点云高斯滤波_Man_1man的博客-CSDN博客

上面两个链接都有代码

分割功能滤波       

分割功能滤波是一种常用的点云处理方法,可以将点云数据分割为不同的部分,以便对每个部分进行独立处理。

 直通滤波

         头文件:pcl/filters/passthrough.h

         函数:pcl::PassThrough

         介绍:直通滤波是一种基于范围过滤的方法,用于通过限制某个维度的范围来滤除点云数据中不需要的部分

        作用:用于去除在指定范围之外的离群点、空间限定区域或多余的数据。直通滤波通常在建立好KD树之后进行,以提高滤波的效率。

 条件滤波

          头文件:pcl/filters/conditional_removal.h

          函数:pcl::ConditionalRemoval

          介绍:条件滤波(Conditional Filter)是一种基于条件的点云滤波方法,可以根据给定的条件筛选出满足条件的点云数据,从而去除不需要的点云数据,有点分段函数的味道,当点云在一定范围则留下,不在则舍弃。直通滤波器是一种较简单的条件滤波器,其更像是一个不带有滤波核的工具。

红色区域为过滤后被保留下的点云,绿色为被过滤掉的点云

         提取索引滤波

          头文件:pcl/filters/extract_indices.h

          函数:pcl::ExtractIndices

          介绍:提取索引滤波(Extract Indices Filter)是一种常用的点云滤波方法,其主要目的是提取指定索引范围内的点云数据,以去除不需要的点云数据。

下采样类滤波

        体素网格下采样

         头文件:pcl/filters/voxel_grid.h

         函数:pcl::VoxelGrid

         介绍:体素滤波根据给定的点云构造一个三维体素栅格并进行下采样达到滤波的效果。通过输入的点云数据创建一个三维体素栅格,然后将每个体素内所有的点都用该体素内的代表点(重心)来近似,这样就大大减少了数据量。体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能,但是会移动点的位置。此外体素滤波器可以去除一定程度的噪音点及离群点。

        特点:体素滤波根据给定的点云构造一个三维体素栅格并进行下采样达到滤波的效果。通过输入的点云数据创建一个三维体素栅格
,然后将每个体素内所有的点都用该体素内的代表点(重心)来近似,这样就大大减少了数据量。体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能,但是会移动点的位置。此外体素滤波器可以去除一定程度的噪音点及离群点。
 

左:原数据  右:体素下采样结果

         均匀采样滤波       

         头文件:pcl/filters/uniform_sampling.h

         函数:pcl::UniformSampling

         介绍:均匀采样滤波基本上等同于体素滤波器,但是其不改变点的位置。下采样后,其点云分布基本均匀,但是其点云的准确度要好于体素滤波,因为没有移动点的位置

去除噪声点类滤波

         统计学离群点移除过滤器

         头文件:pcl/filters/statistical_outlier_removal.h

         函数:pcl::StatisticalOutlierRemoval

         介绍:用于去除明显离群点。离群点特征是在空间中分布稀疏。激光扫描通常会生成不同点密度的点云数据集,测量误差也会导致稀疏的异常值/离群点。考虑到离群点的特征,则可以定义某处点云小于某个密度,既点云无效。

         具体步骤:对于每个点,计算从它到其最近的k个点平均距离。通过假设点云中其点的距离结果分布是具有均值和标准差的高斯分布,根据给定均值与方差,平均距离在标准范围之外的点,可以被定义为离群点并从数据中去除。

         特点:主要是根据密度去除离群点(去噪),对密度差异较大的离群点效果较好。

     半径离群值滤波

           头文件:pcl/filters/radius_outlier_removal.h

           函数:pcl::RadiusOutlierRemoval

           介绍:半径滤波(Radius Outlier Removal Filter)半径滤波通过计算每个点与周围点的距离,判断该点是否为离群点,并将其从点云数据中去除。

          步骤:以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。

          特点:半径滤波器与统计滤波器相比更加简单粗暴。此算法运行速度快,依序迭代留下的点一定是最密集的,但是圆的半径和圆内点的数目都需要人工指定。

红色区域为过滤后被保留下的点云,绿色为被过滤掉的点云

         高斯滤波

        

          头文件:pcl/filters/convolution.h  pcl/filters/convolution_3d.h   

          函数:pcl::filters::GaussianKernel 或pcl::GaussianFilter类  pcl::filters::Convolution3D

          介绍:高斯滤波(Gaussian Filter)其主要目的是平滑点云数据以去除噪声。高斯滤波器的基本思想是将每个点周围的点用高斯函数进行加权平均,从而达到平滑点云数据的效果。其李永乐高斯函数经傅里叶变换后仍具有高斯函数的特性,令指定区域的权重为高斯分布,从而将高频的噪声点滤除。在点云处理中,高斯滤波通常被用于去除高频噪声。

         特点:高斯滤波平滑效果较好,但是边缘角点也会被较大的平滑。


         双边滤波

         头文件:pcl/filters/bilateral.h

         函数:pcl::BilateralFilter

         介绍:其主要目的是平滑点云数据以去除噪声,同时保留点云数据的边缘和细节信息。双边滤波器的基本思想是将每个点周围的点用高斯函数和距离函数进行加权平均,从而达到平滑点云数据的效果。双边滤波既可以平滑点云数据,又可以保留边缘和细节信息,因此在点云处理中应用广泛。此外,去噪效果效果需要根据实际点云情况,不是所有需要平滑和保留边缘的情况使用;有两个参数需要调整,需要多次实验。
 

         特点:双边滤波是结合图像的空间[像素范围域(range domain)]邻近度和像素值相似度的一种折中处理,同时考虑空域[空间域(spatial domain)]信息和灰度相似性,达到保边去噪(既有效地对空间三维模型表面进行降噪,又可以保持点云数据中的几何特征信息,避免三维点云数据被过渡光滑)的目的。对点云数据的小尺度起伏噪声进行平滑光顺。

        注意:能使用双边滤波的点云必须得包含强度字段。现有的points类型中,只有PointXYZI和PointXYZINormal有强度信息。FastBilateralFilter只适用于有序点云。

BF为双边滤波,MED为中值滤波,AVE为均值滤波

        

         随机采样一致滤波

           头文件:pcl/sample_consensus/ransac.h   

                          pcl/sample_consensus/sac_model_plane.h

                          pcl/sample_consensus/sac_model_sphere.h

           函数:pcl::RandomSampleConsensus

           介绍:随机采样一致滤波(Random Sample Consensus Filter,RANSAC Filter)其主要目的是去除点云数据中的离群点(outliers)。随机采样一致滤波器的基本思想是随机选择一组点作为模型,计算其他点到该模型的距离,从而找到最佳的模型,并将该模型上的点作为局内点(inliers),将其他点作为离群点(outliers)进行删除。随机采样一致滤波既可以去除离群点,又可以保留点云数据的形状和结构信息,因此在点云处理中应用广泛。

           特点:主要用于排除错误样本,可以从一组包含“局外点”的观测数据中,通过迭代的方式估计数学模型参数。

声明:本文总结于上列参考文章,系学习所用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个 不用氪金 也能让你变强的 VSCode 插件 Ai

哈喽,大家好 我是 彩色之外👨🏻‍💻。今天给大家推荐一款不用充钱也能让你变强的 vscode 插件 通义灵码(TONGYI Lingma),可以称之为 Copilot 的替代甜品 💪 👀 前期回顾 NPM- 滚动进…

贷款行业极难获客,怎么获取实时客户数据?

我们能想象当客户有贷款需求时会发生什么吗? 客户可能会打开手机搜索“如何借款”、“哪笔贷款利息低”、“最多能借多少钱”、“贷款需要什么条件”等关键词,然后,客户点击进入第一个链接,然后填写他们的姓名和电话号码来测试他…

OpenAI最新官方GPT最佳实践指南,一文讲清ChatGPT的Prompt玩法

原文:Sina Visitor System OpenAI的官网发表万字GPT最佳实践指南,讲清Prompt提示词的原则和策略,这里是总结和全文翻译 原创图像,AI辅助生成 OpenAI的官网上刚刚发表一篇万字的GPT最佳实践指南,这份指南把写好Promp…

大语言模型对齐技术 最新论文及源码合集(外部对齐、内部对齐、可解释性)

大语言模型对齐(Large Language Model Alignment)是利用大规模预训练语言模型来理解它们内部的语义表示和计算过程的研究领域。主要目的是避免大语言模型可见的或可预见的风险,比如固有存在的幻觉问题、生成不符合人类期望的文本、容易被用来执行恶意行为等。 从必…

C++笔记之实现多态的所有方法

C笔记之实现多态的所有方法 文章目录 C笔记之实现多态的所有方法1.C中多态是是什么?请用简洁准确的话描述2.虚函数实现多态2.1.虚函数(Virtual Functions)2.2.纯虚函数(Pure Virtual Functions)2.3.虚析构函数&#xf…

vue学习part01

02_Vue简介_哔哩哔哩_bilibili Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org) 1.简介 2.常用用法 新项目一般vue3,老项目vue2 3.vue两种风格:选项式api(vue2)和组合式api(vue3) 两种方式实现累…

Scala集合操作

1 集合简介 Scala 中拥有多种集合类型,主要分为可变的和不可变的集合两大类: 可变集合: 可以被修改。即可以更改,添加,删除集合中的元素; 不可变集合类:不能被修改。对集合执行更改,…

基于单片机控制的GSM短信模块家庭防盗报警系统

博主主页:单片机辅导设计 博主简介:专注单片机技术领域和毕业设计项目。 主要内容:毕业设计、简历模板、学习资料、技术咨询。 文章目录 主要介绍一、内容1 设计任务和要求1 主要内容 二、系统总体方案2.1 系统整体设计思路2.2 系统方案设计 …

【入门Flink】- 03Flink部署

集群角色 Flik提交作业和执行任务,需要几个关键组件: 客户端(Client):代码由客户端获取并做转换,之后提交给JobManger JobManager:就是Fink集群里的“管事人”,对作业进行中央调度管理;而它获…

【ES专题】ElasticSearch 高级查询语法Query DSL实战

目录 前言阅读对象阅读导航前置知识数据准备笔记正文一、ES高级查询Query DSL1.1 基本介绍1.2 简单查询之——match-all(匹配所有)1.2.1 返回源数据_source1.2.2 返回指定条数size1.2.3 分页查询from&size1.2.4 指定字段排序sort 1.3 简单查询之——…

服务上千家企业,矩阵通2.0重磅上线,全链路管理新媒体矩阵

自上线以来 矩阵通已服务了上千家企业级客户 覆盖汽车、家居、媒体、金融、教育等多个行业 矩阵通1.0时代 我们以“数据”为基座打造出10功能 帮助企业轻松管理新媒体矩阵 实现账号管理、数据分析、竞对监测、 人员考核、风险监管等需求 而现在 矩阵通2.0重磅上线 新增…

0基础学习PyFlink——个数滑动窗口(Sliding Count Windows)

大纲 滑动(Sliding)和滚动(Tumbling)的区别样例窗口为2,滑动距离为1窗口为3,滑动距离为1窗口为3,滑动距离为2窗口为3,滑动距离为3 完整代码参考资料 在 《0基础学习PyFlink——个数…

使用vscode实现远程开发,并通过内网穿透在公网环境下远程连接

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

学习笔记三十四:Ingress和 Ingress Controller概述

Ingress和 Ingress Controller概述 回顾service四层负载在k8s中为什么要做负载均衡Service不足之处四层负载和七层负载的区别OSI七层模型: Ingress介绍Ingress Controller介绍Ingress-controller 作用Ingress和Ingress Controller总结使用Ingress Controller代理k8s…

设备接入服务组件->微服务and容器化改造说明文档

SVN路径 https://192.0.0.241/USTA-dac/branches/dev/V1.10.500/dac 目录结构 das为设备接入服务,负责驱动管理,资源同步,订阅下发。下面有两个文件夹分别对应了openssl1.0的版本和后面更换接口后openssl1.1的版本。das_proxy为设备信令下发…

家用NAS上的Linux虚拟机上安装Domino

大家好,才是真的好。 此篇不是广告,毕竟没有任何人给广告费。 就是我个人入手了一台NAS设备,一开始用途比较淳朴,仅仅存储和家庭有关的各种照片和视频,但用着用着,就发现了NAS设备的拓展性之强&#xff0…

kubernetes集群编排——k8s存储

configmap 字面值创建 kubectl create configmap my-config --from-literalkey1config1 --from-literalkey2config2kubectl get cmkubectl describe cm my-config 通过文件创建 kubectl create configmap my-config-2 --from-file/etc/resolv.confkubectl describe cm my-confi…

提示3D标题编辑器仍在运行怎么解决,以及3D标题编辑器怎么使用

在进行视频剪辑时,尤其是剪辑一些带有文字的开场视频,一般都会使用具有立体效果的3D标题,这样制作出来的视频效果不仅好看,还非常的炫酷,但是对于一些刚刚开始接触视频剪辑的小伙伴来说,可能对3D标题还不是…

【李群李代数】【manif 】基于固定信标的2D机器人定位 (Error State Kalman Filter)...

demo演示 运行结果 我们考虑一个机器人在平面上被少量的准时地标或_信标 包围。 机器人以轴向速度和角速度的形式接收控制动作,并且能够测量信标相对于其自身参考系的位置。 机器人位姿 X 在 SE(2) 中,信标位置 b_k 在 R^2 中, | cos th -si…