均值滤波
均值滤波所使用的运算是卷积。均值滤波用邻域内像素的平均值来代替中心像素的值,相当于低通滤波,有将图像模糊化的趋势,对椒盐噪声基本无能为力。
在MATLAB中,可使用imfilter函数来实现线性空间滤波,该函数的语法如下:
J = imfilter(I,w,filtering_mode,boundary_options’size_options)
其中,I为输入图像, w为滤波模板, J为滤波后输出图像。filtering_mode对默认规定为' corr',对卷积规定为' conv'。 boundary_options处理边界填充问题,边界的大小由滤波器的尺寸确定。size_options 有' same '和'full'两个模式。关于imfilter函数的更详细的说明,可在MATLAB中输入help imfilter查看。
示例代码
I = imread('toyobjects.png');
I_1 = imnoise(I,'salt & pepper',0.3); %对图像添加椒盐噪声
I_2 = imnoise(I,'gaussian',0.3); %对图像添加椒盐噪声
w = [1 1 1 1 1;1 1 1 1 1;1 1 1 1 1;]/25 %取5×5大小掩模
J = imfilter(I_1,w,'corr','replicate'); %对椒盐噪声图像进行
均值滤波处理
K = imfilter(I_2,w,'corr','replicate'); %对高斯噪声图像进行
均值滤波处理
subplot(2,2,1),imshow(I_1),title('(a)添加椒盐噪声图像');
subplot(2,2,2),imshow(I_1),title('(b)添加高斯噪声图像');
subplot(2,2,3),imshow(J),title('(c)均值滤波处理椒盐噪声');
subplot(2,2,4),imshow(K),title('(d)均值滤波处理高斯噪声');