将下面代码直接贴入matlab中,并将读入图像修改成自己机子上的,就可以运行
了。可以按照“%%”顺序分步来运行
%% function 自适应中值滤波器
%%%%%%%%%%%%%%%
%实现两个功能:
%1.对高密度的椒盐噪声有好的滤除效果;
%2.滤波时减少对图像的模糊;
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
%原理:
%1.椒盐噪声概率越大,滤波器窗口需越大。故若滤波器窗口随噪声概率自适应变
化,才能有好的滤除效果
%2.为减少对图像的模糊,需在得出原图像值并非椒盐噪声点时,保留原图像值不
变;
%3.椒盐噪声点的特点:该点的值为该点领域上的最大或最小;
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
%步骤(得到图像中某点(x,y)(即窗口中心点)的值的步骤):
%1.设定一个起始窗口,以及窗口的最大尺寸;
%2.(此步用于确定窗口大小)对窗口内像素排序,判断中值是否是噪声点,若不
是,继续第3步,若是,转到第5步;
%3.判断中心点是否是噪声点,若不是,则输出该点的值(即图像中该点的原值不
变);若是,则输出中值;
%4.窗口尺寸增大,若新窗口尺寸小于设定好的最大值,重复第2步,若大于,则
滤波器输出前一个窗口的中值;
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
%参数说明:
%被噪声污染的图像(即退化图像也即待处理图像):Inoise
%滤波器输出图像:Imf
%起始窗口尺寸:nmin*nmin(只取奇数),窗口尺寸最大值:nmax*nmax
%图像大小:Im*In
%窗口内图像的最大值Smax,中值Smed,最小值Smin
%%%%%%%%%%%%%%%%%%%%
%%
clear
clf