opencv--图形模糊【2】

1、中值滤波

1.1、 定义

中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。此外,中值滤波的算法比较简单,也易于用硬件实现。所以,中值滤波方法一经提出后,便在数字信号处理领得到重要的应用。

中值滤波方法:对一个数字信号序列xj(-∞<j<∞)进行滤波处理时,首先要定义一个长度为奇数的L长窗口,L=2N+1,N为正整数。设在某一个时刻,窗口内的信号样本为x(i-N),…,x(i),…,x(i+N),其中x(i)为位于窗口中心的信号样本值。对这L个信号样本值按从小到大的顺序排列后,其中值,在i处的样值,便定义为中值滤波的输出值。

在这里插入图片描述
中值滤波是在“最小绝对误差”准则下的最优滤波。

在实际应用中,随着所选用窗口长度的增加,滤波的计算量将会迅速增加。因此,寻求中值滤波的快速算法,是中值滤波理论的一个重要研究内容。
中值滤波的快速算法,一般采用下述三种方式:
①直方图数据修正法;
②样本值二进制表示逻辑判断法;
③数字和模拟的选择网络法。

对中值滤波的理论研究,还集中于统计特性分析和根序列的描述方面。当一个信号序列经一特定窗口长度的中值滤波反复处理后,它会收敛于某一个不再变化的序列,这个序列称为中值滤波的根序列。根序列是描述中值滤波特性的一个重要概念。通过对根序列结构的研究,可以确定原信号序列中,哪些成分可以经中值滤波后保留下来,哪些成分将被抑制。这对确定中值滤波器的窗口长度,提供了重要依据。用VLSI实现的中值滤波器芯片,可供实时处理中应用。

1.2、 实现方法

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为33,55区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

  1. 通过从图像中的某个采样窗口取出奇数个数据进行排序
  2. 用排序后的中值取代要处理的数据即可

1.3、 应用

中值滤波法对消除椒盐噪声非常有效,在光学测量条纹图象的相位分析处理方法中有特殊作用,但在条纹中心分析方法中作用不大。

椒盐噪声


椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。

中值滤波在图像处理中,常用于保护边缘信息,是经典的平滑噪声的方法。


2、双边滤波

2.1、 定义

双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点 。双边滤波器的好处是可以做边缘保存(edge preserving),一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显地模糊边缘,对于高频细节的保护效果并不明显。

双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。和其他滤波原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度,所用的加权平均基于高斯分布。最重要的是,双边滤波的权重不仅考虑了像素的欧氏距离(如普通的高斯低通滤波,只考虑了位置对中心像素的影响),还考虑了像素范围域中的辐射差异(例如卷积核中像素与中心像素之间相似程度、颜色强度,深度距离等),在计算中心像素的时候同时考虑这两个权重。
在这里插入图片描述在这里插入图片描述

https://www.cnblogs.com/qiqibaby/p/5296681.html
http://www.cnblogs.com/Imageshop/p/3406823.html

相关API

在这里插入图片描述

CV_EXPORTS_W void medianBlur( InputArray src, OutputArray dst, int ksize );
ksize: 滤波模板的尺寸大小,必须是大于1的奇数,如357……
CV_EXPORTS_W void bilateralFilter( InputArray src, OutputArray dst, int d,
                                   double sigmaColor, double sigmaSpace,
                                   int borderType = BORDER_DEFAULT );
1. 值域和空域的两个方差sigma可以简单的设置为相等,小于10,无太大效果,大于150效果太强,像卡通片似的。
2. 滤波器尺寸d:大于5将较慢(5 forreal-time),d=9for off-lineapplications,d 是像素邻域“直径”。
3. Sigma_color较大,则在邻域中的像素值相差较大的像素点也会用来平均。
4. Sigma_space较大,则虽然离得较远,但是,只要值相近,就会互相影响。
5. 将sigma_sapce设置较大,sigma_color设置较小,可获得较好的效果(椒盐噪声)。

举例:

int main() {
	Mat src = imread("D:\\first.jpg");
	if (!src.data) {
		cerr << "open error" << endl;
		return -1;
	}
	Mat dst,dst1,dst2;
	medianBlur(src, dst, 7);
	bilateralFilter(src, dst1,5,100, 150);
	GaussianBlur(src, dst2, Size(5, 5), 11, 11);
	imshow("src", src);
	imshow("MedianBlur", dst);
	imshow("Bilateralfilter", dst1);
	imshow("GaussianBlur", dst2);
	waitKey(0);
	return 0;


}

在这里插入图片描述

https://blog.csdn.net/piaoxuezhong/article/details/78302920

猜你喜欢

转载自blog.csdn.net/qq_41498261/article/details/83995911