当前位置:网站首页>《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);
边栏推荐
- Popular framework: the use of glide
- Detailed analysis of pytorch's automatic derivation mechanism, pytorch's core magic
- 關於miui12.5 紅米k20pro用au或者povo2出現問題的解决辦法
- MySQL的存储过程练习题
- DDD application and practice of domestic hotel transactions -- Code
- Map of mL: Based on Boston house price regression prediction data set, an interpretable case of xgboost model using map value
- LVGL 8.2 text shadow
- 按照功能对Boost库进行分类
- Test evaluation of software testing
- leetcode:6110. The number of incremental paths in the grid graph [DFS + cache]
猜你喜欢
Stm32f1 and stm32subeide programming example -max7219 drives 8-bit 7-segment nixie tube (based on GPIO)
sql优化之查询优化器
【MySQL从入门到精通】【高级篇】(四)MySQL权限管理与控制
C # WPF realizes the real-time screen capture function of screen capture box
ML之shap:基于boston波士顿房价回归预测数据集利用shap值对XGBoost模型实现可解释性案例
leetcode:6109. Number of people who know the secret [definition of DP]
Nowcoder reverse linked list
Oppo find N2 product form first exposure: supplement all short boards
Sqlserver functions, creation and use of stored procedures
Data warehouse interview question preparation
随机推荐
WT588F02B-8S(C006_03)单芯片语音ic方案为智能门铃设计降本增效赋能
MATLAB中tiledlayout函数使用
R language uses dplyr package group_ The by function and the summarize function calculate the mean and standard deviation of the target variables based on the grouped variables
Data center concept
Abnormal value detection using shap value
Progress in architecture
STM32F1与STM32CubeIDE编程实例-MAX7219驱动8位7段数码管(基于GPIO)
R language uses bwplot function in lattice package to visualize box plot and par Settings parameter custom theme mode
leetcode:6109. 知道秘密的人数【dp的定义】
数据埋点的一些问题和想法
关于miui12.5 红米k20pro用au或者povo2出现问题的解决办法
ML:SHAP值的简介、原理、使用方法、经典案例之详细攻略
sql优化之查询优化器
Popular framework: the use of glide
Use of tiledlayout function in MATLAB
flink sql-client.sh 使用教程
gin集成支付宝支付
Talk about 10 tips to ensure thread safety
聊聊保证线程安全的 10 个小技巧
R language uses follow up of epidisplay package The plot function visualizes the longitudinal follow-up map of multiple ID (case) monitoring indicators, and uses stress The col parameter specifies the