注:本文程序参考董继扬等人的论文《严重椒盐噪声污染图像的非线性滤波算法》2003.12
思想是根据局部统计信息,将像素点分为信息点和正负噪声点,然后对这3种不同的情况进行分别处理,达到保留图像细节的目的。经过几次迭代实验效果很好。
废话少说,上代码:
clc
clear all;
Image=imread('lena512.bmp');
[hei,len]=size(Image);
Image=imnoise(Image,'salt & pepper',0.5);
Image1=Image;
N=zeros(hei,len);
d1=2;
d2=1;
T=5;
TT=30;
% for ik=1:3
for i=1:hei
for j=1:len
[ii,jj]=getinds(i,j,d1,hei,len);
le=length(ii);
for k=1:le
ik=ii(k);
jk=jj(k);
tmp(k)=Image(ik,jk);
end
max=0; min=255;
for iii=1:length(tmp)
if tmp(iii)>max
max=tmp(iii);
end
if tmp(iii)
min=tmp(iii);