引导滤波假设点云经过一个线性变换,具有很好的保留边缘信息功能。
参考文献:韩先锋博士学位论文《三维点云去噪处理及特征描述的研究》
伪代码:

代码是这样的

#include <iostream>
#include<pcl/io/pcd_io.h>
#include<pcl/point_cloud.h>
#include<pcl/point_types.h>
#include<pcl/kdtree/kdtree_flann.h>
using point = pcl::PointXYZ;
using cloud = pcl::PointCloud<point>;
int main()
{cloud cloud_in, cloud_out;pcl::io::loadPCDFile<point>("noisedchair.pcd", cloud_in);if (!cloud_in.size())return 0;pcl::KdTreeFLANN<point>kdtree;unsigned int k = 20;//参数1double epsilon = 0.05;//参数2kdtree.setInputCloud(cloud_in.makeShared());for (size_t i = 0; i < cloud_in.size(); ++i){std::vector<int>indices(0,0);indices.reserve(k);std::vector<float>dist(0,0.0);cloud neigh_points;dist.reserve(k);if (kdtree.nearestKSearch(cloud_in.points[i], k, indices, dist) > 0){pcl::copyPointCloud(cloud_in, indices, neigh_points);point point_mean(0.0, 0.0, 0.0);double neigh_mean_2=0.0;for (auto neigh_point : neigh_points){point_mean.x += neigh_point.x;point_mean.y += neigh_point.y;point_mean.z += neigh_point.z;neigh_mean_2 += ((neigh_point.x) * double(neigh_point.x))+(double(neigh_point.y) * double(neigh_point.y))+(double(neigh_point.z) * double(neigh_point.z));}point_mean.x /= neigh_points.size();point_mean.y /= neigh_points.size();point_mean.z /= neigh_points.size();neigh_mean_2 /= neigh_points.size();double point_mean_2 = (point_mean.x * point_mean.x) + (point_mean.y*point_mean.y) +( point_mean.z * point_mean.z);double a = (neigh_mean_2 - point_mean_2) / (neigh_mean_2 - point_mean_2 + epsilon);point b;b.x = (1.0 - a) * point_mean.x;b.y = (1.0 - a) * point_mean.y;b.z = (1.0 - a) * point_mean.z;point smoothed_point(0.0, 0.0, 0.0);smoothed_point.x =a* cloud_in.points[i].x + b.x;smoothed_point.y = a * cloud_in.points[i].y + b.y;smoothed_point.z = a * cloud_in.points[i].z + b.z;cloud_out.push_back(smoothed_point);}}cloud_out.width = cloud_out.size();cloud_out.height = 1;cloud_out.resize(double(cloud_out.width) * double(cloud_out.height));pcl::io::savePCDFile<point>("smoothed_chair.pcd", cloud_out);std::cout << "Hello World!\n";
}

效果是这样的:
原始带噪点点云:

去噪后点云:

点云引导滤波算法实现相关推荐

  1. 引导滤波算法理论及公式的推导

    高斯滤波考虑了像素间的距离关系,会模糊边缘: 双边滤波同时考虑了像素间的距离关系以及相似度关系,对于边缘有一定的保护(边缘同侧相速度高).引导滤波同样是保边滤波,由于直接判断梯度,细节的保护上比双边滤 ...

  2. 数字图像处理——引导滤波

    一.概述 引导滤波是由何恺明等人于2010年发表在ECCV的文章<Guided Image Filtering>中提出的,后续于2013年发表.引导过滤器根据局部线性模型原理,通过考虑引导 ...

  3. 点云平面提取_基于LiDAR点云数据滤波方法

    基于LiDAR点云数据滤波方法 机载激光雷达所获取的数据被称为"点云(points cloud)"它在三维空间中呈现出随机分布的形状.在点云中,有些点属于真实的地形表面的点,有些点 ...

  4. 【激光雷达】之点云数据滤波处理

    一.引言 激光雷达系统组成 激光雷达是采用激光特性和光电探测手段相结合的成像方法,相比于相机等,是一种采用激光作为载体的主动成像设备.大多数激光雷达主体由四个组成部分,分别为:发射,接收,控制,信号处 ...

  5. 基于FPGA的引导滤波并行加速实现

    前面一篇文章中,已经详细的分析了引导滤波的理论,公式的推导,以及和双边滤波的对比分析,即在边缘的处理上双边滤波会引起人为的黑/白边.我们已经知道何博士引导滤波的优秀之处,那么本篇文章,我带你推演,如何 ...

  6. Guided image filtering(引导滤波)

    摘要   本文提出了一种新的显式图像滤波引导滤波器.引导滤波器从局部线性模型中导出,通过考虑引导图像的内容(可以是输入图像本身,也可以是另一个不同的图像)来生成滤波输出图像.那个引导滤波器可以像流行的 ...

  7. 点云处理关键算法剖析及实现(涉及滤波、分割、配准、识别、重建)

    01 背景介绍 计算机视觉的最终体现是三维视觉,而三维视觉的表达方式则是点云,点云处理在整个三维视觉领域占有非常重要的地位,几乎涉及到所有相关领域,例如自动驾驶感知定位.SLAM.三维场景重建.AR/ ...

  8. 利用联合双边滤波或引导滤波进行升采样(Upsampling)技术提高一些耗时算法的速度。...

    这十年来,在图像处理领域提出了很多新的图像分析和处理方法,包括是自动的以及一些需要有人工参与的,典型的比如stereo depth computations.image colorization.to ...

  9. matlab双边滤波处理点云,常见点云滤波算法

    姓名:张志文 学号:19021210649 [嵌牛观察] 目前点云处理的算法十分的多,不同的滤波算法有着不同的应用方向 [嵌牛鼻子] 点云:滤波 [嵌牛提问] 常见的点云滤波算法有哪些? [嵌牛正文] ...

最新文章

  1. Linux上制作可执行的共享库示例
  2. 杭电2028--Lowest Common Multiple Plus
  3. mysql编码是乱码_mysql中文乱码 常见编码问题解决方法分享
  4. 对声音信标信号的采样频率
  5. return 函数
  6. 【Python】 获取MP3信息replica
  7. LR与SVM的相同点和不同点
  8. 网络编程-TCP/IP协议栈-UDP/HTTP协议
  9. spark整合MySQL
  10. scikit-klearn之 1.决策树
  11. 关于ckeditor的配置
  12. 怎么下载小程序图片 ?
  13. C++洛谷题解(6)
  14. 闪聚支付-第1章-项目介绍
  15. 简易考试系统(java、头歌实验)
  16. 解密保存Mac版微信聊天记录的数据库文件并导出聊天记录
  17. OTA (空中下载技术)
  18. rtsp流php播放插件,nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
  19. 智慧建筑行业创业机会分析
  20. python邮件发送

热门文章

  1. php html 锚点,html中怎么设置锚点定位?设置锚点定位方法汇总
  2. 讨教大学|六西格玛黑带 面试题请收藏!
  3. 关于jquery定时器设置问题 ios定时器无法响应问题 ios 时间显示为NaN问题 优惠时间倒计时
  4. HTML设计美观的菜单栏
  5. 基金归因Brinson模型
  6. Linux LCD屏幕驱动调参实操
  7. ubuntu20.04中安装划词翻译_科研干货 | 知云文献翻译,英文文献阅读必备神器!...
  8. GIS算法:3_拓扑空间关系计算模型DE-9IM
  9. TMS320C6455入门实践(六)——编写boot程序
  10. C4D致富经典入门到精通(三)