[Digital Image Processing Matlab] Mean/Median Filter + Noise Recognition

[Digital Image Processing Matlab] Mean/Median Filter + Noise Recognition

Read in an image, and use mean filtering and median filtering for image smoothing, the former includes the noise identification part.

function F=filtering(image)

%调用代码-------------------------------
% imageR=imread('aa.jpg'); 
% image=rgb2gray(imageR); filtering(image);
%--------------------------------------

image=double(image);
[row,column]=size(image);

%均值滤波----------------------------
%平滑时忽略图像边界数据
Image1=zeros(row,column);  %%%matlab读入图像的数据是uint8,数值一般采用double型存储和运算
for i=2:(row-1)                %%%imshow 显示图像时对double认为在[0,1]之间,大于1的都为白色
    for j=2:(column-1)
        I=mean(mean([image(i-1,j-1),image(i-1,j),image(i-1,j+1);
            image(i,j-1),image(i,j),image(i,j+1),
            image(i+1,j-1),image(i+1,j),image(i+1,j+1)]));
        Image1(i,j)=I;
        %Image1(i,j)=mean(mean(I));
    end
end
%含噪声识别
Image2=zeros(row,column);  
for i=2:(row-1)              
    for j=2:(column-1)
        I=[image(i-1,j-1),image(i-1,j),image(i-1,j+1);
            image(i,j-1),image(i,j),image(i,j+1),
            image(i+1,j-1),image(i+1,j),image(i+1,j+1)];
        m=mean(mean(I));  %均值
        s=std(std(I));  %标准差
        if ((m-2*s<=image(i,j))&&(image(i,j)<=m+2*s))
            Image2(i,j)=image(i,j);
        else Image2(i,j)=m;
        end
    end
end
subplot(1,3,1);imshow(uint8(image));
title('原图')
subplot(1,3,2);imshow(uint8(Image1));    %类型转换!!!
title('均值滤波空间平滑')
subplot(1,3,3);imshow(uint8(Image2));   
title('均值滤波空间平滑(进行判断)')

%中值滤波------------------------------------------
Image3=zeros(row,column);
for i=2:(row-1)             
    for j=2:(column-1)
           I=[image(i-1,j-1),image(i-1,j),image(i-1,j+1);
            image(i,j-1),image(i,j),image(i,j+1),
            image(i+1,j-1),image(i+1,j),image(i+1,j+1)];
        I=reshape(I,[1,9]);
        Image3(i,j)=median(I);
    end
end
figure,
subplot(1,2,1);imshow(uint8(image));
title('原图')
subplot(1,2,2);imshow(uint8(Image3));
title('中值滤波空间平滑后');

end

test:
insert image description here

insert image description here

Guess you like

Origin blog.csdn.net/gsgs1234/article/details/123427160