高斯(Gaussian)滤波、中值(Median)滤波与双边(Bilateral)滤波的特点

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

图像预处理过程中,常常会遇到类似这样问题:有没有一个“好”的算法?例如,有没有一个好的边缘检测算法,或者有没有一个好的滤波算法?但通常来说,没有一个算法能够满足通用性要求,每个算法都有各自的特点。因此,对于这类问题,最先要问的是:我要解决什么问题,为什么我需要一个这样的算法?对于人造物体的检测,可能需要边缘检测算法,因为人造物体中,有规律的边缘或直线比较常见,但需要调整一些参数;对于非人造物体,可能识别特征或颜色更合适,这里并不需要边缘检测。这篇文章介绍一下高斯滤波、中值滤波与双边滤波的基本特点,实际应用中可能会遇到的一些问题。

高斯滤波

高斯滤波是线性(Linear)滤波的一种,原理是针对图像中的每一个点(Pixel)与高斯内核(Kernel)进行卷积计算,并将计算结果相加,输出到目标图像中。
高斯滤波的通用性与性能都比较好,并且由于是线性滤波,对于卷积计算过程,可以通过对Kernel的降维,使算法的时间复杂度由n2降为n2。另外,在OpenCV中,针对特定尺寸的Kernel,如33, 55, 77都有特殊的实现,使得性能相比其它的Kernel,有额外的提升。

中值滤波

中值滤波属于非线性(Non-linear)滤波的一种。中值滤波使用一个围绕当前像素的矩形,查找区域内像素的中值(Median or Middle-Value),并用该中值替换矩形区域内的其它像素点。中值滤波对于散射噪声(Shot Noise)的处理比较理想,因为散射噪声通常与周围像素值的差异非常大。但中值滤波的性能一般,因为算法执行过程中,要使用中值对其它像素进行替换。而且对于高斯噪声的处理不理想,不过可以通过追加针对区域像素最大值与最小值的忽略,来计算中值。

双边滤波

如果采用一个基于权重的Kernel和一个更好的排除算法(如,中值滤波会导致图像的边缘不清晰,因为中值的选择很可能基于图像的背景像素进行),会发生什么?这个思路就是双边滤波的基本想法。双边滤波中,输出像素基于相邻像素的计算的权重值进行,而权重函数的系数基于一个Domain Kernel和Range Kernel计算而来。Domain Kernel通常是高斯Kernel,而Range Kernel用于计算相邻像素与中心像素的相似度。双边滤波的性能不是特别好,但对于以上俩种滤波算法来说,其重要的特点是能够保持图像的边缘清晰(高斯滤波会导致像素移位),这在检测应用中有重要的意义。

OpenCV中的非线性滤波——中值滤波双边滤波(15) 非线性滤波中值滤波双边滤波 1.1 非线性滤波 滤波器是线性的,即两个信号之和的响应是它们各自响应的和(每个像素的输出值是一些输入像素的加权和。线性滤波器易于构造,但是很多情况下,使用邻域像素的非线性滤波会达到更好的效果。比如:在噪声是散粒噪声而不是高斯噪声时,图像偶尔出现很大的值的时候,用高斯滤波器对图像进行模糊的话,噪声像素是不会被去除的,他们只会转换为更为柔和的但仍可见的散粒,此时可以使用中值滤波; 1.2 中值滤波 中值滤波是一种典型的非滤波技术,基本方法就是:用像素点领域灰度值的中值来代替.. 阅读详情

相关推荐

算法系列——高斯滤波

高斯滤波是一种基于高斯函数的线性平滑技术,广泛应用于信号处理领域。本文系统介绍了其核心原理、C语言实现及优化方法。文章首先阐述高斯滤波的加权平均特性,详细解析高斯核生成步骤(包括窗口确定、高斯值计算和归一化处理)。随后结合代码实例,深入分析数据结构设计、初始化流程、卷积运算实现及状态管理机制。针对不同应用场景,文章对比了高斯滤波的优缺点,并给出参数选择建议(如窗口大小取6σ+1)和优化方向(动态参数调整、快速卷积算法等)。最后强调在实际应用中需平衡滤波效果计算效率,特别在实时系统中要考虑信号延迟问题。

嵌入式小蟹总的CSDN 1803

关于高斯滤波的一些理解

滤波算法简介 图像处理中,常用的滤波算法有均值滤波中值滤波以及高斯滤波等。均值滤波使用模板内所有像素的平均值代替模板中心像素灰度值,这种方法易收到噪声的干扰,不能完全消除噪声,只能相对减弱噪声;中值滤波计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值,这种方法对噪声不是那么敏感,能够较好的消除椒盐噪声,但是容易导致图像的不连续性。高斯滤...

大熊 6万+

关于cvSmooth(包括简单,中值高斯双边)的总结

关于cvSmooth函数的总结

never give up的博客 7142

高斯滤波(Gauss filtering)

1.概念介绍  高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。  通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。  高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。   对应均值滤波和方框滤波来说,其邻域内每个像素的权重是相等的。而在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内.

半濠春水的博客 9万+

图像处理:高斯滤波算法

高斯滤波是一种常用的图像处理技术,常用于去噪、平滑和边缘检测等应用中。它是基于高斯函数的概念,由于高斯函数的性质,距离中心像素越远的像素对新值的贡献越小,对图像中的像素进行加权平均处理,使得周围像素的影响比较大,而远离中心像素的影响则较小。因此,高斯滤波可以平滑图像并去除一部分噪声,同时保留图像中的边缘和细节。具体来说,高斯滤波是通过一个矩阵(卷积核)来实现的。这个矩阵的值是由高斯函数计算出来的,高斯函数在中心点处取得最大值,随着距离的增加而逐渐减小。

m0_62919535的博客 1万+

高斯Gaussian滤波中值Median滤波双边Bilateral滤波特点图像预处理过程中,常常会遇到类似这样问题:有没有一个“好”的算法?例如,有没有一个好的边缘检测算法,或者有没

图像预处理过程中,常常会遇到类似这样问题:有没有一个“好”的算法?例如,有没有一个好的边缘检测算法,或者有没有一个好的滤波算法?但通常来说,没有一个算法能够满足通用性要求,每个算法都有各自的特点。因此,对于这类问题,最先要问的是:我要解决什么问题,为什么我需要一个这样的算法?对于人造物体的检测,可能需要边缘检测算法,因为人造物体中,有规律的边缘或直线比较常见,但需要调整一些参数;对于非人造物体,可...

不二的博客 723

【Qt&OpenCV 图像平滑/滤波处理 -- Blur/Gaussian/Median/Bilateral

以下是关于利用Qt构建GUI并使用OpenCV中的Blur/Gaussian/Median/Bilateral函数进行图像平滑处理。软件版本:Qt-5.12.0/OpenCV-4.5.3平台:Windows10/11–64

richard_yuu的博客 2085

opencv图像平滑滤波处理cvSmooth的汇总

函数 cvSmooth 可使用简单模糊、简单无缩放变换的模糊、中值模糊、高斯模糊、双边滤波的任何一种方法平滑图像。每一种方法都有自己的特点以及局限。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的值,从而消除孤立的噪声点。高斯滤波实质上是一种信号的滤波器,其用途是信号的平滑处理,我们知道数字图像用于后期应用,其噪声是最大的问题。

never give up的博客 3008

[学习opencv]高斯中值、均值、双边滤波

以前的时候,为了过滤图像中的一些噪点,学过一些简单的滤波,比如中值滤波,均值滤波,也是自己实现的。   在opencv中有现成的函数可以调用,实现滤波的操作。   函数的原型如下: CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst, int smoothtype CV_DEFAULT(

固本培元的专栏 2375

双边滤波图像增强技术

<br />     在图像处理领域中,滤波是图像增强的一项非常重要的手段,其基本原理就是将图像中的每个点其相邻的几个像素点的像素值作邻域运算,即进行加权平均卷积运算。很显然,当图像中存在明显的边缘信息时,通常的邻域运算必然会导致图像中边缘点的像素值发生变化,使图像的边缘变得模糊不清。为了改善这一现象,提出了双边滤波的方法,双边滤波器模板的卷积权值的选取不仅取决于普通低通滤波的像素邻域位置关系,同时还由相邻像素的亮度信息所决定。用模板对图像的边缘进行平滑处理,在有效去除噪声的同时,还能很大程度地保持并加强

2196

OpenCV blur归一化滤波GaussianBlur高斯滤波medianBlur中值滤波

代码位置:16-ImageBlur.py import cv2 img = cv2.imread('./res/mini.jpeg') cv2.imshow('org', img) kernelsizes = [(3,3), (9,9), (15, 15)] for kernel in kernelsizes: blur = cv2.blur(img, kernel) cv2....

kingroc的博客 1698

OPENCV 简单模糊 中值模糊 高斯模糊 双边模糊等

#include "cv.h" #include "opencv/highgui.h" int main(){     IplImage *img= cvLoadImage("C:\\lena.jpg");//读取图片     cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);     cvNamedWindow("Example2",CV

chengyangyy的专栏 3344

c语言定义图像滤波函数,OpenCV之cvSmooth函数平滑滤波

1、cvSmooth函数用法定义原型void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,int param1, int param2, double param3, double param4 );src:输入图像.dst:输出图像.smoothtype平滑方法:CV_BLUR_NO_SCALE(简单不带尺度...

weixin_33034651的博客 614

Homogeneous_Gaussian_Median_Bilateral_blure

#include #include #include #include using namespace std; using namespace cv; int DELAY_CAPTION = 1500; int DELAY_BLUR = 100; int MAX_KERNEL_LENGTH = 31; Mat src; Mat dst; cha

726

使用cvSmooth()函数以五种方式平滑图像

简单模糊、简单无缩放模糊、中值滤波高斯模糊、双边滤波 #include #include #include #include #include #include using namespace std; using namespace cv; int main(int argc, const char * argv[]) { /*使用cvSmooth多种方法平滑处

u011559236的博客 4469

OpenCV 4.8 图像去噪实战:5种滤波器处理椒盐/高斯噪声效果对比

本文详细介绍了OpenCV 4.8中五种经典图像去噪滤波器的实现效果对比,包括均值滤波高斯滤波中值滤波双边滤波和非局部均值去噪(NLM)。通过量化指标PSNR和SSIM,分析了这些滤波器在处理椒盐噪声和高斯噪声时的表现差异,并提供了参数优化建议和不同场景下的选择策略,帮助开发者提升图像处理质量。

weixin_30832405的博客 401

图像处理平滑处理--高斯滤波,简单模糊,中值模糊,双边滤波,简单无放缩变换

#include  #include #include   #include #include #include #include #include #include using namespace std; using namespace cv;   int main(int argc, char* argv[]) { IplImage *img=

琐碎~时光 1423

matlab和OpenCV滤波

matlab:1线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: k1=filter2(fspecial(‘average’,3),I1)/255; %进行3*3模板平滑滤波 k2=filter2(fspecial(‘average’,5),I1)/255; %进行5*5模板平滑滤波2.中值滤波器 k1=medfilt2(J); %进行3*3模板中值滤波 k2=medfilt2(

miss libra 2224
上一篇: Kernel启动过程中被Stuck的调试
下一篇: 细看都是坑(OpenCV中的matchTemplate方法)
coroutines
博客等级 码龄14年 9236粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值