首先了解一下图像存在的噪声类型,这样才能使我们在图像处理中思路更加清晰,以下的内容都来自于中英文文献和互联网,在此就不对每一个参考一一列出。
高斯噪声是一种具有正态分布(也称作高斯分布)概率密度函数的噪声。换句话说,高斯噪声的值遵循高斯分布或者它在各个频率分量上的能量具有高斯分布。它被极其普遍地应用为用以产生加成性高斯白噪声(AWGN)的迭代白噪声。噪声PDF如下:z代表图像灰度,u是z的均值,o是z的标准差,所以高斯噪声的灰度值大多集中在图像的均值附近,因此均值滤波器主要适合于去除高斯噪声,具体方法可以用matlab实现,但是matlab仅仅适合仿真看现象,正真在现实生活中我们需要的实际的降噪,比如用FPGA等等。
matlab代码分析:
%Main函数: diagram = imread('C:\Users\Administrator\Desktop\Compressed\fiter\lena256.jpg');%读入图片 diagram = rgb2gray(diagram);%将图片转换为灰度图 figure,imshow(diagram),title('Original picture');%显示原图 diagram_n = imnoise(diagram,'salt & pepper',0.01);%加入噪声 figure,imshow(diagram_n),title('Picture with noise');%显示加入噪声的图片 r=3;%构造滤波器模板 r为行数,c为列数 c=3; sigma = 1;%高斯函数中的参数sigma
w_a = fspecial('average',[r c]);%用Matlab自带函数构造均值滤波器 diagram_a2 = imfilter(diagram_n,w_a,'replicate');%用Matlab自带函数进行均值滤波 figure,imshow(diagram_a2),title('Average filter by Matlab');%显示滤波后的图片
w_g = fspecial('gaussian',[r c],1);%用Matlab自带函数构造高斯滤波器 diagram_g2 = imfilter(diagram_n,w_g,'replicate');%用Matlab自带函数进行均值滤波 figure,imshow(diagram_g2),title('Gaussian filter by Matlab');%显示滤波后的图片
%中值滤波 %diagram_m1 = filter_wq(diagram_n,[r c],'med',0);%调用自编函数进行中值滤波 %figure,imshow(diagram_m1),title('Med filter by WQ');%显示滤波后的图片 diagram_m2=medfilt2(diagram_n,'symmetric');%用Matlab自带函数对图像进行中值滤波 figure,imshow(diagram_m2),title('Med filter by Matlab');%显示滤波后的图片