当前位置:网站首页>《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);
边栏推荐
- Oppo find N2 product form first exposure: supplement all short boards
- 电商系统中红包活动设计
- Matters needing attention in overseas game Investment Agency
- 【算法leetcode】面试题 04.03. 特定深度节点链表(多语言实现)
- Progress in architecture
- 一种架构来完成所有任务—Transformer架构正在以一己之力统一AI江湖
- LiveData
- Why should Base64 encoding be used for image transmission
- Sqlserver functions, creation and use of stored procedures
- Chapter 16 string localization and message Dictionary (2)
猜你喜欢

Intelligence d'affaires bi analyse financière, analyse financière au sens étroit et analyse financière au sens large sont - ils différents?

Gin integrated Alipay payment

【信息检索】分类和聚类的实验

nowcoder重排链表

The failure rate is as high as 80%. What are the challenges on the way of enterprise digital transformation?

实战解惑 | OpenCV中如何提取不规则ROI区域

Why should Base64 encoding be used for image transmission

第十七章 进程内存

What is the difference between Bi financial analysis in a narrow sense and financial analysis in a broad sense?

Detailed analysis of pytorch's automatic derivation mechanism, pytorch's core magic
随机推荐
Solutions to the problems of miui12.5 red rice k20pro using Au or povo2
Solutions aux problèmes d'utilisation de l'au ou du povo 2 dans le riz rouge k20pro MIUI 12.5
AI and Life Sciences
Leetcode 61: rotating linked list
[information retrieval] link analysis
LVGL 8.2 LED
MySQL triggers
商业智能BI财务分析,狭义的财务分析和广义的财务分析有何不同?
ML之shap:基于boston波士顿房价回归预测数据集利用Shap值对LiR线性回归模型实现可解释性案例
【MySQL从入门到精通】【高级篇】(五)MySQL的SQL语句执行流程
What is the difference between Bi financial analysis in a narrow sense and financial analysis in a broad sense?
Popular framework: the use of glide
scratch古堡历险记 电子学会图形化编程scratch等级考试三级真题和答案解析2022年6月
Supprimer les lettres dupliquées [avidité + pile monotone (maintenir la séquence monotone avec un tableau + Len)]
[MySQL from introduction to proficiency] [advanced chapter] (IV) MySQL permission management and control
R language dplyr package summary_ If function calculates the mean and median of all numerical data columns in dataframe data, and summarizes all numerical variables based on conditions
Respect others' behavior
Docker compose public network deployment redis sentinel mode
Scratch Castle Adventure Electronic Society graphical programming scratch grade examination level 3 true questions and answers analysis June 2022
LVGL 8.2 Sorting a List using up and down buttons





