中值濾波算法


步驟:

(1)對窗內的每行像素按降序排序,得到最大值、中間值和最小值。

(2)把三行的最小值即第三列相比較,取其中的最大值。

(3)把三行的最大值即第一列相比較,取其中的最小值。

(4)把三行的中間值即第二列相比較,再取一次中間值。

(5)把前面的到的三個值再做一次排序,獲得的中值即該窗口的中值。

代碼:

close all;
clear all;
clc;

I=imread('C:\Users\luoqi\Desktop\圖片\影院\file.jpg');
if ndims(I)==3
    I=rgb2gray(I);
end
[m,n]=size(I);
%%
%添加高斯白噪聲
J=zeros(m,n);
simd=20*rand(1);

% for i=1:m
%    for j=1:2:n
%        t1=rand(1);
%        t2=rand(1);
%        z1=simd*cos(2*pi*t1)*sqrt(-2*log(t2));
%        z2=simd*sin(2*pi*t1)*sqrt(-2*log(t2));
%        J(i,j)=I(i,j)+z1;
%        if j+1<=n
%            J(i,j+1)=I(i,j+1)+z2;
%        end
%    end
% end

% for i=1:m
%    for j=1:n
%        if J(i,j)>255
%            J(i,j)=255;
%        elseif J(i,j)<0
%            J(i,j)=0;
%        end
%    end
% end
%J=uint8(J);
%figure(1);
%imshow(J);

%%
%添加椒鹽噪聲
J=imnoise(I,'salt & pepper',0.02);
figure(1);
imshow(J);
%%
%中值濾波
% for i=2:m-1
%    for j=2:n-1
%        median3x3=[J(i-1,j-1),J(i-1,j),J(i-1,j+1);
%                   J(i,j-1),J(i,j),J(i,j+1);
%                   J(i+1,j-1),J(i+1,j),J(i+1,j+1);];
%        sort1=sort(median3x3,2,'descend');
%        sort2=sort([sort1(1),sort1(4),sort1(7)],'descend');
%        sort3=sort([sort1(2),sort1(5),sort1(8)],'descend');
%        sort4=sort([sort1(3),sort1(6),sort1(9)],'descend');
%        mid_num=sort([sort2(3),sort3(2),sort4(1)],'descend');
%        J(i,j)=mid_num(2);
%    end
% end

%%
%matlab自帶函數
J=medfilt2(J);

figure(2)
imshow(J);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM