对 pcl::StatisticalOutlierRemoval 滤波器的理解

2024-01-04

对 pcl::StatisticalOutlierRemoval 滤波器的理解

注:以下内容基于与 GPT-4 的交流并结合个人理解整理而成。若有描述不准确或模糊之处,欢迎指正。

参数配置

  1. setMeanK (int meanK):
    • 此参数设置每个点要考虑的邻居数量,影响着计算点的局部平均距离。较大的 meanK 值可能包含更多的邻居,使滤波过程更加平滑,但可能降低移除离群点的能力。选择合适的 meanK 值取决于点云数据的密度和规模。例如,在稠密的点云中,较小的 meanK 值可能就足够了,而在稀疏的点云中,可能需要更大的 meanK 值来获得可靠的平均距离估计。
  2. setStddevMulThresh (double stddevMulThresh):
    • 此参数定义了离群点的阈值,基于平均距离的标准差的倍数计算。较高的 stddevMulThresh 值意味着更宽松的离群点判断标准,可能保留更多的噪声点;较低的值则更严格,可能移除更多有效数据点。通常,开始时使用默认值(如 1.0),然后根据实际数据的噪声水平进行调整。
  3. setNegative (bool negative):
    • 此布尔参数决定滤波器保留或排除检测到的离群点。若设置为 true ,滤波器将保留被标记为离群点的数据,移除其他点;若为 false ,则只保留非离群点。
  4. setInputCloud (const PointCloudConstPtr &cloud):
    • 用于设置输入点云,是进行滤波处理前的必要步骤。
  5. filter (PointCloud &output):
    • 虽然不是一个配置参数,但这个方法用于执行滤波操作。它应用上述设置的参数并产生滤波后的点云。

使用示例

#include <pcl/filters/statistical_outlier_removal.h>

// 移除统计离群值
pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
sor.setInputCloud(parent_filtered_cloud);
sor.setMeanK(50);
sor.setStddevMulThresh(1.0);
sor.filter(*parent_filtered_cloud);

执行逻辑

注: 这里离群点的去除, 去除的是 主点 , 如果一个 主点距离其最近的几个点的平均距离 整个点云的平均距离 相差较大, 则把这个 主点 抠掉

  1. 根据 setMeanK 的值为 每一个点 划分 (这个是我给这个过程起的名称)

    例如有A1, A2, A3…An个点, MeanK=5, 那么假设距离每个点最近的点是序号邻近的点, 即距离A1最近的5个点是An-1, An, A2, A3, A4, 则这就是A1的群[An-1, An, A2, A3, A4], 同理A2的群为[An, A1, A3, A4, A5], 以此类推

  2. 计算每个群距离其 主点 (群的名称, 如A1, A2等)的平均距离

    例如, A1, 群为[An-1, An, A2, A3, A4], 计算 每一个点距离A1的距离, 求均值, 得到 d1

    A2, 群为[An, A1, A3, A4, A5], 计算 每一个点距离A2的距离, 求均值, 得到 d2, 以此类推

  3. 计算整个点云的平均距离及其标准差

    d1到dn的平均值, 即为整个点云的平均距离, 记为 D

    计算d1到dn的标准差 σ
    平方和 : ∑ i = 1 n ( d i − D ) 2 方差 : 1 n ∑ i = 1 n ( d i − D ) 2 标准差 : σ = 1 n ∑ i = 1 n ( d i − D ) 2 平方和: \sum_{i=1}^n (d_i - D)^2 \\ 方差: \frac{1}{n} \sum_{i=1}^n (d_i - D)^2 \\ 标准差: σ=\sqrt {\frac{1}{n} \sum_{i=1}^n (d_i - D)^2} 平方和 : i = 1 n ( d i D ) 2 方差 : n 1 i = 1 n ( d i D ) 2 标准差 : σ = n 1 i = 1 n ( d i D ) 2

  4. 根据 setStddevMulThresh 的值界定离群点, 假设, 该值为 μ

    对于某个点 Am 有
    d m > D + μ × σ d_m > D + μ ×σ d m > D + μ × σ
    则Am为离群点, 将其去除

可以看到, 这里判断的是主点与整个点云之间是否存在异常现象, 即 不合群 , 整个点云平均距离是D, 平均也就差了一个标准差, 这个点Am跟邻近点的距离比这个大, 因此, 抠掉!

一点点细节

既然方差跟标准差描述的都是数据的离散程度, 为什么在这里选用的是标准差而不是方差?

  1. 单位统一

    方差由于对原始数据进行了平方, 因此他的单位是原单位的平方, 比如在点云处理上, 单位是[m] 或者[cm], 而平方和处理之后, 单位就变成了 [m2] 或者[cm2], 这时对数据开根号, 可以保证单位一致

  2. 可以直接相加减

    因为单位统一, 那么就可以直接在原始数据的基础上加减这个标准差, 来定义一个新的范围, 也正是因此划定了 离群 这一概念

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 pcl::StatisticalOutlierRemoval 滤波器的理解 的相关文章

  • Windows指纹识别不可用情况解决方案

    网上杂七杂八的一乱堆 真正解决的没几个 以下实测有用 修好的样子 1 按win x打开设备管理器 有一个 设备管理器 点进去 找到上面的生物识别设备 2 禁用启动 带有PurePrint TM 的Synaptics FS7605触摸式指纹传

随机推荐

  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • Scrum认证A-CSM官方认证班高级ScrumMaster - A-CSM认证班

    课程简介 高级ScrumMaster Advanced Certified ScrumMaster A CSM 认证课程是国际Scrum联盟推出的进阶级Scrum认证课程 是Scrum Master通往专业级敏捷教练必经的学习路径 在Scr
  • ACL 2024投递指南

    诸神缄默不语 个人CSDN博文目录 显然写这篇博客是因为我要投ACL了 TL DR ACL 2024是ARR提交制 workshop归workshop 最晚提交时间是2024年2月15号 在此之前可以随时撤回 4月15号出结果 4月20号确
  • 迅为RK3568开发板-实时系统烧写-烧写固件(下)

    3 烧写系统 拷贝完镜像 开始烧写镜像 点击 RKdevTool exe 如下图所示 烧写工具打开如下图所示 选择 升级固件 选项卡 然后点击升级固件选项卡下的 固件 选项 在弹出的固件窗口中选择 放在烧写器 image 文件夹下的 upd
  • 海报制作软件有哪些?看完这篇你就知道了

    在如今快节奏的生活中 许多人都深陷于工作的繁忙中 特别是那些从事创意设计的人 他们时常面对老板一些不可思议的要求 海报设计师更是如此 老板总是在最短的时间内要求完成海报设计 老板的创意常常超乎寻常 让设计师感到摸不着头脑 不知如何下手 使用
  • 扬帆证券:申购新股怎样才能中签?要注意什么?

    申购新股是一种很受欢迎的理财方式 如果能够中签就有或许获得不错的收益 那么申购新股怎样才能中签 要注意什么 扬帆配资 也为大家准备了相关内容 以供参考 申购新股怎样才能中签 要想申购新股首要要有申购资历 也便是要有足够的市值配售额度 市值配
  • [Python进阶] Python处理txt文件:open

    7 1 Python处理txt文件 open 在Python中 通过open函数可以打开一个文件 创建一个file对象 然后对该对象进行读写 函数语法 open name mode buffering 参数说明 name 文件名 mode
  • 专车数据层架构进化往事:好的架构是进化来的,不是设计来的

    很多年前 读了 子柳 老师的 淘宝技术这十年 这本书成为了我的架构启蒙书 书中的一句话像种子一样深埋在我的脑海里 好的架构是进化来的 不是设计来的 2015 年 我加入神州专车订单研发团队 亲历了专车数据层 架构进化 的过程 这次工作经历对
  • 锂电池管理系统(BMS)

    引言 在现代科技的推动下 锂电池已经成为各种电动设备和能源存储系统的首选能源媒介 然而 锂电池在充电和放电过程中存在一系列潜在的安全隐患 同时其性能和寿命也受到一些限制 为了解决这些问题 锂电池管理系统 BMS 应运而生 BMS不仅仅是一个
  • [2024]基于springboot的租房(房屋租赁)小程序设计

    目录 一 整体目录 示范 文档含项目技术介绍 E R图 数据字典 项目功能介绍与截图等 二 运行截图 三 代码部分 示范 四 数据库表 示范 数据库表有注释 可以导出数据字典及更新数据库时间 欢迎交流学习 五 主要技术介绍 六 项目调试学习
  • Scrum产品负责人(CSPO)认证Scrum Product Owner

    课程简介 Scrum是目前运用最为广泛的敏捷开发方法 是一个轻量级的项目管理和产品研发管理框架 产品负责人是Scrum的三个角色之一 产品负责人在Scrum产品开发当中扮演舵手的角色 他决定产品的愿景 路线图以及投资回报 他需要回答为什么做
  • MySQL忘记密码了怎么办

    MySQL忘记密码 今天在写jdbc时很悲催的发现自己的MySQL密码忘记了 没有办法了 重新设置一下密码吧 先关闭mysql服务mysql server stop 跳过权限检验 在使用该命令的时候要确保mysql服务是关闭的 不然是无法正
  • C语言环形缓冲区

    2024第一天 继续给自己加点料 导言 C语言环形缓冲区是一种常用的数据结构 它提供了一种高效的方式来存储和处理数据 本文将深入解析C语言环形缓冲区的定义 原理和应用 并提供一些实际的代码示例 一 什么是环形缓冲区 环形缓冲区 也称为循环缓
  • 比较两个信号的频率成分

    频谱相干性有助于识别频域中信号之间的相似性 大数值表示信号共有的频率分量 将两个声音信号加载到工作区中 以 1 kHz 的频率对其进行采样 使用 periodogram 计算其功率频谱 并以彼此相邻的方式对其绘图 load relateds
  • Win7系统提示找不到KBDUKX.DLL文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个KBDUKX
  • Win7系统提示找不到KBDUR.DLL文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个KBDUR D
  • [每周一更]-(第56期):不能不懂的网络知识

    作为程序员 在网络方面具备一定的知识和技能是非常重要的 以下是一些程序员需要熟练掌握的网络知识 基础网络概念 IP地址 了解IPv4和IPv6地址的格式和分配方式 以及常见的IP地址分类 子网掩码 理解子网掩码的作用 以及如何计算子网的大小
  • Win7系统提示找不到KBDUR1.DLL文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个KBDUR1
  • Java版直播商城免 费 搭 建:平台规划与常见营销模式,电商源码、小程序、三级分销及详解

    saas云平台 打造全行业全渠道全场景的saas产品 为经营场景提供一体化解决方案 门店经营区域化 网店经营一体化 本地化 全方位 一站式服务 为多门店提供统一运营解决方案 提供丰富多样的营销玩法覆盖所有经营场景 助力商家成功 系统稳定压倒
  • 对 pcl::StatisticalOutlierRemoval 滤波器的理解

    对 pcl StatisticalOutlierRemoval 滤波器的理解 注 以下内容基于与 GPT 4 的交流并结合个人理解整理而成 若有描述不准确或模糊之处 欢迎指正 参数配置 setMeanK int meanK 此参数设置每个点