从统计学的观点来看,凡是统计特征不随时间变化的噪声称为平稳噪声,而统计特征随时间变化的噪声称为非平稳噪声。幅值基本相同,但是噪声出现的位置是随机的,称为椒盐噪声;如果噪声的幅值是随机的,根据幅值大小的分布,有高斯型和瑞利型两种,分别称为高斯噪声和瑞利噪声。由于去除噪声处理的原理和方法很多,这里只给出了简单的描述和我自己已实现的几种方法的java源代码。
常见的去噪处理有均值滤波,中值滤波,灰度最小方差均值滤波,K近邻平滑滤波,对称近邻均值滤波,西戈玛平滑滤波等。
均值滤波
定义
均值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,用模板的均值来替代原像素的值的方法。
如下图,1~8为(x,y)的邻近像素。
权系数矩阵模板
![](https://img-my.csdn.net/uploads/201211/05/1352112966_5641.jpg)
g = (f(x-1,y-1) + f(x,y-1)+ f(x+1,y-1) + f(x-1,y) + f(x,y) + f(x+1,y) + f(x-1,y+1) + f(x,y+1) + f(x+1,y+1))/9
方法优缺点
优点:算法简单,计算速度快;对高斯噪声的处理效果好
缺点:降低噪声的同时使图像产生模糊,特别是景物的边缘和细节部分。
代码:
I=imread('lena.jpg');
[m n]=size(I);
I1=zeros(m,n);
for i=2:m-1
for j=2:n-1
for k=-1:1
for p=-1:1
I1(i,j)=I1(i,j)+I(i+k,j+p)*1/9;
end
end
end
end
imshow(I1,[]);
中值滤波
定义
中值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,对模板的像素由小到大进行排序,再用模板的中值来替代原像素的值的方法。
权系数矩阵模板
![](https://img-my.csdn.net/uploads/201211/05/1352113042_4130.jpg)
g = median[(x-1,y-1) + f(x,y-1)+ f(x+1,y-1) + f(x-1,y) + f(x,y) + f(x+1,y) + f(x-1,y+1) + f(x,y+1) + f(x+1,y+1)]
x=imread('lena.jpg');
y=imnoise(x,'salt & pepper',0.04); %加椒盐噪声
z=medfilt2(y(:,:),[5 5],'symmetric'); %中值滤波
imshow(z);
imwrite(z,'medfilt.jpg');
title('zhongzhilvbo');
中值滤波的:主要针对椒盐噪声的处理效果好;
3、高斯平滑滤波器(Gaussian Smoothing Filter)
高斯平滑滤波器被使用去模糊图像,和均值滤波器差不多,但是和均值滤波器不一样的地方就是核不同。均值滤波器的核每一个值都是相等,而高斯平滑滤波器的核内的数却是呈现高斯分布的。
对于二维高斯分布:
它的分布图如下:
作为高斯平滑滤波器的核就应该呈现出上图的布局,例如:
一般在使用时我们用的模板是:
[1 2 1;2 4 2;1 2 1]/16 的模板
编程类似中值滤波的过程