《opencv学习笔记》-- 非线性滤波:中值滤波、双边滤波

本文介绍了中值滤波和双边滤波两种图像处理技术。中值滤波通过使用邻域像素值的中值来替换当前像素点的值,有效去除脉冲噪声和椒盐噪声,同时保护图像边缘。而双边滤波则结合了空域和灰度相似性,既能平滑图像又能保留边缘信息。在代码示例中,展示了如何使用OpenCV库分别实现这两种滤波方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中值滤波

用像素点邻域灰度值的中值来代替该像素点的灰度值,在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节。

原理:

        把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。

中值滤波对滤除脉冲干扰即图像扫描噪声有明显的效果 也可用于保护边缘信息。
void medianBlur( InputArray src, OutputArray dst, int ksize );

使用中值滤波器来平滑(模糊)处理一张图片。对于多通道图片,它对每一个通道都单独进行处理,并支持就地操作。

参数1:输入参数,填1、3或者4通道的Mat类型的图像。当 ksize为3或者5的时候,图像深                 度需为CV_8U、CV_16U、CV_32F其中之一,对于较大孔径尺寸的图片, 它只                     能是CV_8U。

参数2:目标图像,函数的输出参数,和源图片有一样的尺寸和类型。可以用 Mat::Clone,                 以源图片为模板,来初始化得到目标图。

参数3:核算子的大小,孔径的线性尺寸( aperture linear size),注意:参数必须是大于1的                 奇数,比如:3、5、7、9…….

显示效果:

代码:

Mat srcImg1;
Mat srcImg2;

srcImg1 = imread("E:\\img\\logo3.png");
imshow("源图srcImg1", srcImg1);

medianBlur(srcImg1, srcImg2, 5);
imshow("中值滤波srcImg2", srcImg2);

双边滤波

双边滤波是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保留图像的同时削弱噪声的效果

双边滤波器可以做边缘保存

双边滤波器 基于空间分布的高斯滤波函数 在边缘附近, 离得较远的像素不会对边缘上 的像 素值影响 太多 ,可以 保证边缘附近像素值的保 存。
双边滤波器: 于保存 了过 多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净地滤掉,只 能对于低频信息进行较好地滤波。
函数: 用双边滤波器来处理一张图片,由src输入图片,结果于dst输出。
void bilateralFilter(InputArray src, OutputArraydst, int d, 
                     double sigmaColor, double sigmaSpace,  
                     int borderType = BORDER_DEFAULT)

参数1,输入图像,即源图像,需要为8位或者浮点型单通道、三通道的图像。

参数2,目标图像,需要和源图片有一样的尺寸和类型。

参数3,表示在过滤过程中每个像素邻域的直径。如果这个值设为非正数,那么OpenCV会                 从第五个参数sigmaSpace来计算出它来。

参数4,颜色空间滤波器的sigma值。这个参数的值越大,表明该像素邻域内有更广的颜色会               被混合到一起,产生较大的半相等颜色区域。

参数5,sigmaSpace坐标空间中滤波器的sigma值,坐标空间的标注方差。sigmaSpace数值             越大,越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。             当d>0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。

参数6,用于推断图像外部像素的某种边界模式。默认值BORDER_DEFAULT。

显示效果:

 

代码:

Mat srcImg1;
Mat srcImg2;

srcImg1 = imread("E:\\img\\logo3.png");
imshow("源图srcImg1", srcImg1);

bilateralFilter(srcImg1, srcImg2, 25, 25 * 2, 25 / 2);
imshow("双边滤波srcImg2", srcImg2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值