day16:非线性滤波

非线性滤波的滤被结果不是由滤波器内的像素值通过线性组合计算得到, 其计算过程可能包含 排序、逻辑计算等. 由于线性滤波 是通过对所有像素值线性组合得到滤被后的结果, 因此含有噪声的像素点也会被考虑进去,噪声不会被消除 , 而是以更柔和 的形式存在.例如,在某个像萦值都为0
的黑色区域内, 存在一个像素值为 255 的噪声, 只要线性滤波器中噪声处的系数不为零,这个噪声就将永远存在,只是通过与滤波器中系数的乘积 使得 噪声值变得更加柔和, 这时使用非线性滤波效果可能会更好,通过逻辑判断将该噪声过滤, 常见的 非线性滤波有中值滤波和双边滤波。

1:中值滤波:

中值滤波就是用滤波器范围内所有像素值的中值来替替代 滤波器中心位置像索值的滤波方法,是一
种基于排序统计理论的能够有效抑制噪声的非线性信号处 理方法.
相比于均值滤波,中值滤波对于脉冲干扰信号和图像扫描噪声的处理效果更佳。 同时,在一定条件下,中值滤波对图像的边缘信息保护效果更佳 ,可以避 免图像细节的模糊。 但是,当中值滤波尺寸变大之后 ,同 样会产生图像模糊的效果。在处理时 间上,中 值滤波消耗的时间要远大于均值滤 波消耗的时间.

代码:

void visionagin::MedianOpearate()
{
	Mat gauss = imread("C:\\Users\\86176\\Downloads\\visionimage\\Gauss.jpeg");
	Mat salt = imread("C:\\Users\\86176\\Downloads\\visionimage\\salt.jpeg");
	Mat gauss_res, salt_res;
	medianBlur(gauss, gauss_res, 3);
	medianBlur(salt, salt_res, 3);
	imshow("gauss", gauss);
	imshow("salt", salt);
	imshow("gauss_res", gauss_res);
	imshow("salt_res", salt_res);
}

2:双边滤波:

前面我们介绍的滤波方法都会对图像造成模糊, 使得边缘信息变弱或者消失,因此需要 一种能 够对图像边缘信息进行保留的滤波算法,双边滤波就是经典且常用的能够保留图像边缘信息的滤波 算法之一.双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的滤波算法,可以实现在保留区域信息的基础上实现对噪声的去除、对局部边缘的平滑.双边滤波对高
频率的波动信号起到平滑的作用, 同时保留大幅值变化的信号波动, 进而实现对保留图像中边缘信
息的作用.

 代码:

 

void visionagin:: BilaterOperate()
{
	Mat gauss = imread("C:\\Users\\86176\\Downloads\\visionimage\\Gauss.jpeg");
	Mat salt = imread("C:\\Users\\86176\\Downloads\\visionimage\\salt.jpeg");
	Mat gauss_res, salt_res;
	bilateralFilter(gauss, gauss_res, 9, 50, 50);
	bilateralFilter(salt, salt_res, 9, 80, 80);
	imshow("gauss", gauss);
	imshow("salt", salt);
	imshow("gauss_res", gauss_res);
	imshow("salt_res", salt_res);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值