MATLAB中基于GUI的噪声抑制imnoise,medfilt2命令

源代码:

%噪声抑制
% --- Executes on button press in Noise.

function Noise_Callback(hObject, eventdata, handles)
global x
global p
y=rgb2gray(x);
p = imnoise(y,'salt & pepper',0.1);
%加10%的椒盐
axes(handles.axes1);
imshow(p);
g=medfilt2(p);
axes(handles.axes2);
imshow(g);

imnoise用法

在MATLAB中,使用函数imnoise函数来使用噪声污染一幅图像:

g = imnoise(f, type, parameters)

输出:g是被污染的图像

输入:f是输入的原图像,type是加入的噪声类型,parameters是噪声的一些参数:

g=imnoise(f,‘gaussian’,m,var)是将均值为m,方差为var的高斯噪声加到图像f上。m的默认值是0、var默认值是0.01。

g=imnoise(f,‘salt & pepper’,d)用椒盐噪声污染图像f,其中d是噪声密度(即包含噪声值的图像区域的百分比)。因此,大约有d*numel(f)个像素受到污染,默认的噪声密度为0.05。

g=imnoise(f,‘speckle’,var)用方程g=f + n*f将乘性噪声添加到图像f上,其中n是均值为0、方差为var的均匀分布的随机噪声。var的默认值为0.04。

medfilt2用法:

       中值滤波是图像处理中的一个常用步骤,它对于斑点噪声(en:speckle noise)和椒盐噪声(en:salt-and-pepper noise)来说尤其有用。保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。当要求在降低噪声的同时要求保持边缘,中值滤波较卷积有更好的效果。

在matlab中,medfilt2函数用于执行二维中值滤波,使用方法如下:
  B = medfilt2(A, [m n]) 
  B = medfilt2(A)
  B = medfilt2(A, ’indexed’, ...)
  其中[m n]表示邻域块的大小,默认值为[3 3]。
  //b=medfilt2(a,[m,n]);
  b是中值滤波后的图象矩阵,a是原图矩阵,m和n是处理模版大小,默认3×3。

 

 

你可能感兴趣的:(MATLAB)