matlab的图片滤波处理


椒盐噪声
高斯噪声
MATLAB自带函数
均值滤波
中值滤波
自编模版

%读取图片并转换为灰度图片

I=imread('1.jpg');

imshow(I);

I1=rgb2gray(I);

imshow(I1);
椒盐噪声

I2=imnoise(I1,'gaussian');

figure,imshow(I2);
高斯噪声

I3=imnoise(I1,'salt & pepper');

figure,imshow(I3);
MATLAB自带函数

均值滤波

avgModel=fspecial('average',3);%3*3的模版

Iavg=filter2(avgModel,I2)/255;

figure,imshow(Iavg);
中值滤波

Imid=medfilt2(I3,[3,3]);%3*3的模版

figure,imshow(Imid);
自编模版

%均值滤波

n=3;%行数为3

model(1:n,1:n)=1;%算子为3*3,全部为1

Iavg=I2;%设置传入的图片

for i=2:length(Iavg)-1%遍历所有的列数和行数

    for j=2:length(Iavg(2,:))-1

        x=I2(i-(n-1)/2:i+(n-1)/2,j-(n-1)/2:j+(n-1)/2);%3*3

        xuint=uint8(model).*uint8(x);

        x_avg=mean(xuint(:));%求出中心点的平均值

        Iavg(i,j)=x_avg;%赋值

    end

end

figure,imshow(Iavg);
%中值滤波

n=3;%行数为3

Imid=I3;%设置传入的图片

for i=2:length(I1)-1

    for j=2:length(I1(2,:))-1

        x=I3(i-(n-1)/2:i+(n-1)/2,j-(n-1)/2:j+(n-1)/2);%3*3

        x_mid=median(x(:));

        Imid(i,j)=x_mid;

    end

end

figure,imshow(Imid);

 

你可能感兴趣的:(matlab)