CloudCompare——统计滤波

目录

  • 1.统计滤波
  • 2.软件实现
  • 3.完整操作
  • 4.算法源码
  • 5.相关代码

在这里插入图片描述

本文由CSDN点云侠原创,CloudCompare——统计滤波,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。

1.统计滤波

  算法原理见:PCL 统计滤波器。

2.软件实现

参数设置
在这里插入图片描述

3.完整操作

在这里插入图片描述

4.算法源码

ReferenceCloud* CloudSamplingTools::sorFilter(	GenericIndexedCloudPersist* inputCloud,int knn/*=6*/,double nSigma/*=1.0*/,DgmOctree* inputOctree/*=0*/,GenericProgressCallback* progressCb/*=0*/)
{if (!inputCloud || knn <= 0 || inputCloud->size() <= static_cast<unsigned>(knn)){//invalid inputassert(false);return nullptr;}DgmOctree* octree = inputOctree;if (!octree){//compute the octree if necessaryoctree = new DgmOctree(inputCloud);if (octree->build(progressCb) < 1){delete octree;return nullptr;}}//outputReferenceCloud* filteredCloud = nullptr;for (unsigned step = 0; step < 1; ++step) //fake loop for easy break{unsigned pointCount = inputCloud->size();std::vector<PointCoordinateType> meanDistances;try{meanDistances.resize(pointCount, 0);}catch (const std::bad_alloc&){//not enough memorybreak;}double avgDist = 0;double stdDev = 0;//1st step: compute the average distance to the neighbors{//additional parametersvoid* additionalParameters[] = {reinterpret_cast<void*>(&knn),reinterpret_cast<void*>(&meanDistances)};unsigned char octreeLevel = octree->findBestLevelForAGivenPopulationPerCell(knn);if (octree->executeFunctionForAllCellsAtLevel(	octreeLevel,&applySORFilterAtLevel,additionalParameters,true,progressCb,"SOR filter") == 0){//something went wrongbreak;}//deduce the average distance and std. dev.double sumDist = 0;double sumSquareDist = 0;for (unsigned i = 0; i < pointCount; ++i){sumDist += meanDistances[i];sumSquareDist += meanDistances[i] * meanDistances[i];}avgDist = sumDist / pointCount;stdDev = sqrt(std::abs(sumSquareDist / pointCount - avgDist*avgDist));}//2nd step: remove the farthest points {//deduce the max distancedouble maxDist = avgDist + nSigma * stdDev;filteredCloud = new ReferenceCloud(inputCloud);if (!filteredCloud->reserve(pointCount)){//not enough memorydelete filteredCloud;filteredCloud = nullptr;break;}for (unsigned i = 0; i < pointCount; ++i){if (meanDistances[i] <= maxDist){filteredCloud->addPointIndex(i);}}filteredCloud->resize(filteredCloud->size());}}if (!inputOctree){delete octree;octree = nullptr;}return filteredCloud;
}

5.相关代码

  • PCL 统计滤波器
  • PCL 统计滤波(C++详细过程版)
  • Open3D(C++) 统计滤波
  • Open3D 统计滤波器
  • matlab 点云统计滤波

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

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

相关文章

【C语言】使用C语言,实现九九乘法表(另附Python、Java、JavaScript实现方式)

文章目录 1. C语言实现1.1 思路1.2 代码实现 3.其他语言实现3.1 Python实现3.2 Java实现3.3 JavaScript实现 1. C语言实现 1.1 思路 九九乘法表图示&#xff1a; 思路如下&#xff1a;定义两层for循环即可实现九九乘法表 一共有9层&#xff0c;所以要定义一个变量i&#xff…

Linux 修改信号的响应方式

修改信号的响应方式 1.signal()方法介绍&#xff1a; 修改信号的响应方式要用到方法signal()。需要引用头文件signal.h。signal()的原型&#xff1a; typedef重命名了一个函数指针的类型&#xff0c;这个指针的类型为指向一个参数为int返回值为void的函数的指针。这个函数指针…

【C++习题集】-- 堆

&#xff08;用于复习&#xff09; 目录 树概念及结构 名词概念 二叉树概念及结构 特殊的二叉树 满二叉树 完全二叉树 运算性质 二叉树存储结构 顺序存储 链式存储 堆 - 顺序存储 堆的性质 堆的实现 堆的应用 堆排序 直接建堆法 树概念及结构 概念&#xff1a…

衣服材质等整理(时常更新)

参考文章&图片来源 https://zhuanlan.zhihu.com/p/390341736 00. 天然纤维 01. 化学纤维 02. 聚酯纤维&#xff08;即&#xff0c;涤纶&#xff09; 一种由有机二元酸和二元醇通过化学缩聚制成的合成纤维。具有出色的抗皱性和保形性&#xff0c;所制衣物在穿着过程中不容…

Linux操作系统调度基本准则和实现

今天分享一篇处理器调度相关的理论介绍文章。 1&#xff0c;基本概念 在多道程序系统中&#xff0c;进程的数量往往多于处理机的个数&#xff0c;进程争用处理机的情况就在所难免。处理机调度是对处理机进行分配&#xff0c;就是从就绪队列中&#xff0c;按照一定的算法&…

Java实现OTP二次验证

首先简单介绍一下OTP&#xff1a; 简单就是说&#xff0c;一个时长30秒的动态密码&#xff0c;和账号绑定了&#xff0c;如果需要做身份验证的话&#xff0c;可以用这个动态码做二次验证。 更简单说&#xff0c;就是一个安全要求更高的身份验证方式&#xff0c;一个字&#xf…

PyCharm PyQt5 开发环境搭建

环境 python&#xff1a;3.6.x PyCharm&#xff1a;PyCharm 2019.3.5 (Community Edition) 安装PyQT5 pip install PyQt5 -i https://pypi.douban.com/simplepip install PyQt5-tools -i https://pypi.douban.com/simple配置PyCharm PyQtUIC Program &#xff1a;D:\Pytho…

HTTP 握手过程

HTTP 握手过程 TCP 建立连接 3 次握手 客户端请求连接服务器服务器响应成功客户端回应服务器准备开始连接 TCP 结束连接 4 次挥手 客户端向服务器发送&#xff0c;断开请求服务器向客户端发送&#xff0c;还有数据没有传输完毕&#xff0c;请稍等服务器向客户端发送&#x…

桌面软件开发框架 Electron、Qt、WPF 和 WinForms 怎么选?

一、Electron Electron 是一个基于 Web 技术的跨平台桌面应用程序开发框架。它使用 HTML、CSS 和 JavaScript 来构建应用程序界面,并借助 Chromium 渲染引擎提供强大的页面渲染能力。Electron 的主要特点包括: 跨平台:Electron 可以在 Windows、macOS 和 Linux 等多个主流操…

【002】学习笔记之typescript的【任意类型】

任意类型 顶级类型&#xff1a;any类型和 unknown 类型 any类型 声明变量的时候没有指定任意类型默认为any任意类型都可以赋值给any&#xff0c;不需要检查类型。也是他的弊端如果使用any 就失去了TS类型检测的作用 unknown 类型 TypeScript 3.0中引入的 unknown 类型也被认为…

基于Java+SpringBoot+Vue的校企合作项目管理系统【源码+论文+演示视频+包运行成功】

博主介绍&#xff1a;✌csdn特邀作者、博客专家、java领域优质创作者、博客之星&#xff0c;擅长Java、微信小程序、Python、Android等技术&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推…

玩转单元测试之gtest

引言 程序开发的时候&#xff0c;往往需要编写一些测试样例来完成功能测试&#xff0c;以保证自己的代码在功能上符合预期&#xff0c;能考虑到一些异常边界问题等等。 gtest快速入门 1.引入gtest # 使用的是1.10版本&#xff0c;其他版本可根据需要选择 git clone -b v1.1…