当前位置:网站首页>《opencv学习笔记》-- 线性滤波:方框滤波、均值滤波、高斯滤波
《opencv学习笔记》-- 线性滤波:方框滤波、均值滤波、高斯滤波
2022-07-04 13:08:00 【cc_rong】
平滑处理(模糊处理)
一般用来减少图像上的噪点或者失真。降低图像分辨率时,使用平滑处理。
消除图像中的噪声成分叫作图像的平滑化或滤波操作。
图像滤波的目的:
1、抽出对象的特征作为图像识别的特征模式;
2、为适应图像处理的要求,消除图像数字化时所混入的噪声。
平滑滤波是低频增强的空间域滤波技术。它的目的有两类:
1、模糊; 2、消除噪音。
常用的图像平滑处理操作方法:
线性:
方框滤波---------BoxBlur函数
均值滤波(邻域平均滤波)---------Blur函数
高斯滤波---------GaussianBlur函数
非线性:
中值滤波---------medianBlur函数
双边滤波---------bilateralFilter函数
线性滤波器
线性滤波器经常用于消除输入信号中不想要的频率或者从许多频率中选择一个想要的频率。
常见的线性滤波器如下:
低通滤波器:允许低频率通过;
高通滤波器:允许高频率通过;
带通滤波器:允许一定范围频率通过;
带阻滤波器:阻止一定范围频率通过并且允许其他频率通过;
全通滤波器:允许所有频率通过,仅仅改变相位关系;
陷波滤波器:阻止一个狭窄频率范围通过,是一种特殊的带阻滤波器。
方框滤波
boxBlur函数 sources\modules\imgproc\src 下的 smooth.cpp
void boxFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor = Point(-1,-1), bool normalize = true, int borderType = BORDER_DEFAULT )
参数1,src,输入图像,即源图像,填Mat类的对象。该函数对通道是独立处理的,且可以 处理任意通道数的图片。注意,待处理的图片深度应该为CV_8U、CV_16U、 CV_16S、CV_32F以及CV_64F之一。
参数2,dst,即目标图像,需要和源图片有一样的尺寸和类型。
参数3,ddepth,输出图像的深度,-1代表使用原图深度,即src.depth()。
参数4,ksize,内核的大小。一般用Size(w, h)来表示内核的大小,其中w为像素宽度,h为 像素高度。Size(3, 3)就表示3 x 3的核大小 ,Size(5, 5)就表示5 x 5的核大小。
参数5,anchor,表示锚点(即被平滑的那个点)。默认值Point(-1,-1)。如果这个点坐标是负 值的话,就表示取核的中心为锚点,所以默认值Point(-1,-1)表示这个锚点在核的中 心。
参数6,normalize,默认值为true,表示内核是否被其区域归一化(normalized)
参数7,borderType,用于推断图像外部像素的某种边界模式。默认值: BORDER_DEFAULT,一般不使用。
boxFilter函数所用的核表示:
其中
显示效果:
ksize越大,图片越模糊。
代码:
Mat srcImg1; Mat srcImg2; srcImg1 = imread("E:\\img\\logo3.png"); imshow("源图srcImg1", srcImg1); boxFilter(srcImg1, srcImg2, -1, Size(14, 18)); imshow("方框滤波srcImg2", srcImg2);
均值滤波
均值滤波输出图像的每个像素是核窗口内输入图像对应像素的平均值(所有像素加权系数相等),也就是进行归一化后的方框滤波。均值滤波是典型的线性滤波算法。主要方法为邻域平均法,即用一片图像区域的各个像素的均值来代替原图像中的各个像素值。缺陷:不能很很好地保护图像细节,在图像去噪的同时也破坏图像的细节部分,使得图像变得模糊,不能很好的去除噪点。void blur(InputArray src, outputArraydst, Size ksize, Point anchor = Point(-1, -1), int borderType = BORDER_DEFAULT)
参数1,输入图像,即源图像,Mat类的对象。该函数对通道是独立处理的,且可以处理任意 通道数的图片。注意,待处理的图片深度应该为CV_8U、CV_16U、CV_16S、 CV_32F以及CV_64F之一。
参数2,目标图像,需要和源图片有一样的尺寸和类型。可以用Mat::Clone,以源图片作为模 板,来初始化得到目标图.
参数3,内核的大小。一般用Size(w, h)来表示内核的大小,其中w为像素宽度,h为像素高 度。Size(3,3)就表示3x3的核大小 ,Size(5,5)就表示5x5的核大小。
参数4,表示锚点(即被平滑的那个点)。默认值Point(-1,-1)。如果这个点坐标是负值的话, 就表示取核的中心为锚点,所以默认值Point(-1,-1)表示这个锚点在核的中心。
参数5,用于推断图像外部像素的某种边界模式。默认值BORDER_DEFAULT,一般不使 用。
显示效果:
代码:
Mat srcImg1; Mat srcImg2; srcImg1 = imread("E:\\img\\logo3.png"); imshow("源图srcImg1", srcImg1); blur(srcImg1, srcImg2, Size(18, 18)); imshow("均值滤波srcImg2", srcImg2);
高斯滤波
高斯滤波是指用高斯函数作为滤波函数的滤波操作;
应用场景: 图像处理的减噪过程。
高斯滤波的具体实现:
用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
图像的高斯模糊是图像与正态分布做卷积。高斯模糊是高斯低通滤波。GaussianBlur 函数:用高斯滤波器来模糊一张图片将源图像和指定的高斯核函数做卷积运算,并且支持就地过滤。void GaussianBlur(InputArray src, outputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT )
参数1,输入图像,填Mat类的对象。可以是单独的任意通道数的图片,
注意,其图片深度应该为CV_8U、CV_16U、CV_16S、CV_32F以及CV_64F之一。
参数2,目标图像,需要和源图片有一样的尺寸和类型。可以用Mat::Clone,以源图片为模 板,来初始化得到目标图。
参数3,高斯内核的大小。其中 ksize.width和ksize.height可以不同,都必须为正数和奇数,
或者是零,都由sigma计算而来。
参数4,表示高斯核函数在X方向的的标准偏差。
参数5,表示高斯核函数在Y方向的的标准偏差。若sigmaY为零,将它设为sigmaX;
如果sigmaX和 sigmaY都是0,由ksize.width和 ksize.height计算出来。
参数6,用于推断图像外部像素的某种边界模式。默认值BORDER_DEFAULT,一般不使 用。
显示效果:
代码:
Mat srcImg1; Mat srcImg2; srcImg1 = imread("E:\\img\\logo3.png"); imshow("源图srcImg1", srcImg1); GaussianBlur(srcImg1, srcImg2, Size(5, 5), 0, 0); imshow("高斯滤波srcImg2", srcImg2);
边栏推荐
- Innovation and development of independent industrial software
- 迅为IMX6Q开发板QT系统移植tinyplay
- 电商系统中红包活动设计
- vscode 常用插件汇总
- DDD application and practice of domestic hotel transactions -- Code
- Data center concept
- R language uses bwplot function in lattice package to visualize box plot and par Settings parameter custom theme mode
- What is the difference between Bi financial analysis in a narrow sense and financial analysis in a broad sense?
- redis 日常笔记
- 【MySQL从入门到精通】【高级篇】(四)MySQL权限管理与控制
猜你喜欢
sql优化之查询优化器
Leetcode 61: 旋转链表
去除重複字母[貪心+單調棧(用數組+len來維持單調序列)]
C # WPF realizes the real-time screen capture function of screen capture box
Test evaluation of software testing
软件测试之测试评估
Remove duplicate letters [greedy + monotonic stack (maintain monotonic sequence with array +len)]
codeforce:C. Sum of Substrings【边界处理 + 贡献思维 + 灵光一现】
Xcode abnormal pictures cause IPA packet size problems
Transplant tinyplay for imx6q development board QT system
随机推荐
10.(地图数据篇)离线地形数据处理(供Cesium使用)
Chapter 16 string localization and message Dictionary (2)
Use of tiledlayout function in MATLAB
The implementation of OSD on rk1126 platform supports color translucency and multi-channel support for Chinese
海外游戏代投需要注意的
统计php程序运行时间及设置PHP最长运行时间
scratch古堡历险记 电子学会图形化编程scratch等级考试三级真题和答案解析2022年6月
Popular framework: the use of glide
LifeCycle
ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例
失败率高达80%,企业数字化转型路上有哪些挑战?
RK1126平台OSD的实现支持颜色半透明度多通道支持中文
DDD application and practice of domestic hotel transactions -- Code
LVGL 8.2 Sorting a List using up and down buttons
leetcode:6110. 网格图中递增路径的数目【dfs + cache】
第十六章 字符串本地化和消息字典(二)
开发中常见问题总结
[MySQL from introduction to proficiency] [advanced chapter] (V) SQL statement execution process of MySQL
redis 日常笔记
LVGL 8.2 LED