OpenCV入门系列 —— bilateralFilter双边滤波

  • 前言
  • 程序说明
  • 输出结果
  • 代码示例
  • 总结

前言

随着工业自动化、智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别、定位、抓取、测量,缺陷检测等),而针对不同作业场景进行解决方案设计时,通常会借助PCL、OpenCV、Eigen等简单方便的开源算法库进行方案的快速验证和迭代以满足作业场景下的目标需求。

为了让对工业机器视觉方向感兴趣的同学能够少走一些弯路,故推出了此一系列简易入门教程示例,让初次使用者能够最简单直观地感受到当前所用算法模块的执行效果。

后续会逐步扩增与工业机器视觉相关的一些其它内容,如:

项目案例剖析场景数据分析基础算法模块相机评测 等;

如有兴趣可加入群聊(若入群二维码被屏蔽,则可以通过Q群(1032861997)或评论、私信博主“群聊”,邀请入群),与同道同学及圈内同行一起交流讨论。


程序说明

展示图像双边滤波前后的效果对比;

输出结果

代码示例

/** @File: bilateral_filter.cpp* @Brief: opencv course* @Description: 展示图像双边滤波前后的效果对比* @Version: 0.0.1* @Author: MuYv*/
#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>int main(int argc, char** argv){if(argc != 2){std::cout<<"Usage: exec img_file_path"<<std::endl;return -1;}const std::string kImgFilePath = argv[1];// 加载为 rgb 3通道彩色图数据cv::Mat img_src = cv::imread(kImgFilePath, cv::IMREAD_COLOR);//进行双边滤波操作 cv::Mat img_bilateral_filter;cv::bilateralFilter(img_src, img_bilateral_filter, 25, 25*2, 25/2 );    // 参数需视具体情况进行调整cv::imshow("img_src", img_src);cv::imshow("img_bilateral_filter", img_bilateral_filter);// 等待n毫秒后关闭窗口,0代表一直开启,直到任意按键触发关闭窗口cv::waitKey(0);return 0;
}

总结

图像滤波、平滑等相关处理操作的目的是在于弱化像素间跳变梯度,将后续需要依靠像素跳变梯度操作的泛性、鲁棒性提升;
与之前的blur、medianBlur、boxFilter等滤波算法有所不同的是,bilateralFilter双边滤波有保留图像中的边缘信息的效果;


注:部分测试所用图片数据来源于网络,如有侵权,请联系博主删除,谢谢。

OpenCV入门系列 —— bilateralFilter双边滤波相关推荐

  1. OpenCV入门系列 —— boxFilter盒子滤波

    OpenCV入门系列 -- boxFilter盒子滤波 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识 ...

  2. PCL入门系列 —— PassThrough 直通滤波、点云裁剪

    PCL入门系列 -- PassThrough 直通滤波.点云裁剪 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同 ...

  3. OpenCV入门系列 —— cv::dilate 图像膨胀

    OpenCV入门系列 -- cv::dilate 图像膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别 ...

  4. OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀

    OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...

  5. OpenCV入门系列 —— cv::minEnclosingCircle 随机生成点坐标并计算最小包围圆

    OpenCV入门系列 -- cv::minEnclosingCircle 随机生成点坐标并计算最小包围圆 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3 ...

  6. OpenCV入门系列 —— Sobel边缘检测

    OpenCV入门系列 -- Sobel边缘检测 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别.定位 ...

  7. 图像处理入门系列之图像滤波

    图像的滤波操作按不同的分类方法可分为频率域和空间域滤波.线型滤波和非线型滤波.平滑滤波和锐化滤波.高通滤波和低通滤波.总体来说,图像滤波的作用可分为两类,一类是去除图像因外界干扰而产生的噪声:另一类是 ...

  8. OpenCV入门系列1:图像组成与OpenCV基本操作函数

    文章目录 前言 一.图像组成 1.1 图片与像素点 1.2 RGB颜色系统 1.3 图像数值转换原理 1.4 彩色图与灰度图 二.OpenCV函数验证 2.1 引入OpenCV库 2.2 读入彩色图片 ...

  9. OpenCV入门系列2:图像叠加、填充和腐蚀

    文章目录 前言 一.图像的叠加 1.1 叠加原理 1.2 叠加问题 1.3 问题解决 1.4 结果展示 二.图像的填充 2.1 填充方法介绍 2.2 复制法 2.3 轴对称法 2.4 中心对称法 2. ...

最新文章

  1. 脑与神经科学3 脑神经影像上
  2. 财务思维02-资产边界
  3. java排序-交换排序-快速排序
  4. php echo中的点是什么?,php编程中echo用逗号和用点号连接的区别,echo逗号_PHP教程...
  5. 堆叠柱形图上自定义数字_用Excel绘制Cell上的漂亮配图
  6. [云框架]KONG API Gateway v1.5 -框架说明、快速部署、插件开发
  7. LeetCode38.报数
  8. Python中的类属性和实例属性以及静态方法和类方法
  9. BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊(LCT)
  10. 找不到java虚拟机_javabridge.jutil.JVMNotFoundError:找不到Java虚拟机
  11. Think PHP url的四种访问方法。
  12. 基于DEAP库的python进化算法--遗传算法实践--配词问题
  13. 五分钟学会文献管理神器—— Zotero
  14. 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错的原因
  15. 机械秒表的使用方法_秒表的使用方法!
  16. 学习记录——微信小程序查询的两种方法
  17. Scriptalert(“玄猫啊玄猫,玄猫要高考咯”)/script
  18. 别把项目成功当目标!——项目经理的误区(1)(转)
  19. Akka是个什么鬼?
  20. vue 打印(模板套打)

热门文章

  1. 浅谈Azure virtual machine scale set
  2. 行人检测:论文翻译Histograms of Oriented Gradients for Human Detection
  3. CC2530利用中断控制LED
  4. 微信域名检测 腾讯微信域名检测的机制原理以及实现方式
  5. 2020年程序员面试必备书单,这一篇整理齐了
  6. openwrt添加驱动代码的方法总结
  7. 北京 住房公积金 查询
  8. Java转Go从零开始学习一:GoLand环境搭建及输出HelloWord
  9. 8个可以提高数据科学工作效率并节省宝贵时间的Python库
  10. Java并发原理抽丝剥茧,读写锁ReadWriteLock实现深入剖析