求程序:灰度图像 椒盐噪声 matlab

求在灰度图像中 用matlab加入椒盐噪声的子程序、去除椒盐噪声的子程序,只要椒盐噪声的,不要其他噪声。
尽量要原创的,我在百度上找的都不好,本人对MATLAB了解也不多。
最好再给介绍一下椒盐噪声和椒盐噪声对灰度图像产生的影响,越详细越好,百度百科上介绍的太少了。
急求啊,尽管不多,如果有满意的答案我可以把我的财富值都拿出来!
别的不要了,给个“均值滤波”的源程序段就行

均值滤波器程序送上。这个程序是我做边缘检测是写的,刚开始用高斯滤波器做均值滤波,LZ可以借鉴一下。程序送上~~~~

clc
close all
clear all
%%%生成高斯平滑滤波模板%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
hg=zeros(3,3); %设定高斯平滑滤波模板的大小为3*3
delta=0.5;
for x=1:1:3
for y=1:1:3
u=x-2;
v=y-2;
hg(x,y)=exp(-(u^2+v^2)/(2*pi*delta^2));
end
end
h=hg/sum(hg(:));
%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%读入图像%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%

f = imread('1111.tif'); % 读入图像文件
f=rgb2gray(im2double(f));
imshow(f)
title('原始图像');
[m,n]=size(f);
ftemp=zeros(m,n);
rowhigh=m-1;
colhigh=n-1;
%%%高斯滤波%%%
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];
A=h.*mod;
ftemp(x,y)=sum(A(:));
end
end
f=ftemp
figure,imshow(f)
title('通过高斯滤波器后的图像');

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %%%利用roberts算子进行边缘检测%%%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sx=[-1 -2 -1;0 0 0;1 2 1];
sy=[-1 0 1;-2 0 2;-1 0 1];
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-1) f(x+1,y) f(x+1,y+1)];
fsx=sx.*mod;
fsy=sy.*mod;
ftemp(x,y)=sqrt((sum(fsx(:)))^2+(sum(fsy(:)))^2);
end
end
fr=im2uint8(ftemp);
figure,imshow(fr)
title('用roberts算子边缘检测的原始图像');

%%%域值分割%%%
TH1=60; %设定阈值
for x=2:1:rowhigh-1
for y=2:1:colhigh-1
if (fr(x,y)>=TH1)&((fr(x,y-1) <= fr(x,y)) & (fr(x,y) > fr(x,y+1)) )
fr(x,y)=200;
elseif(fr(x,y)>=TH1)&( (fr(x-1,y) <=fr(x,y)) & (fr(x,y) >fr(x+1,y)))
fr(x,y)=200;
else fr(x,y)=50;
end
end
end
figure,imshow(fr)
title('用roberts算子边缘检测并细化后的图像');
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-28
下面的例子是最简单的用中值滤波去除椒盐噪声的例子,关于去噪本身至今都是图像处理的热门研究方向,别人发明了新方法自己就去发表论文了,还能送给你么,要原创只有靠自己了。

I = imread('eight.tif');
J = imnoise(I,'salt & pepper',0.02);%加椒盐噪声
K = medfilt2(J);%中值滤波
imshow(I), figure, imshow(J), figure, imshow(K)
第2个回答  2019-03-08
%你好。我的程序只针对bmp图像。如果是其他格式,请补充提问。
%窗口大小是5*5,请按图片需要适当调整。
clc;
close
all;
clear
all;
win=[5
5];
img=imread('saltpepper.bmp');
figure;imshow(img);
x=img(:,:,1);
y=img(:,:,2);
z=img(:,:,3);
x
=
medfilt2(x,win);
y
=
medfilt2(y,win);
z
=
medfilt2(z,win);
new_img=cat(3,x,y,z);
figure;imshow(new_img);
第3个回答  2010-04-28
Image_new=imnoise(Image,'salt & pepper',0.01);%0.01是要加入的噪声的密度 matlab默认的是0.05
相似回答