matlab练习程序(最大中值滤波)

clear;
clc;
width=3;
xwidth=(width-1)/2;
imgn=imread('1.bmp');
imshow(imgn,[]);
imgn=double(imgn);
[m n]=size(imgn);
imgn1=imgn;
z=zeros(4,width);
tem=1;
for i=1+xwidth:1:m-xwidth
for j=1+xwidth:1:n-xwidth

for k=-xwidth:1:xwidth
z(1,tem)=imgn(i,j+k);
z(2,tem)=imgn(i+k,j);
z(3,tem)=imgn(i-k,j+k);
z(4,tem)=imgn(i+k,j+k);
tem=tem+1;
end
z1=median(z(1,:));
z2=median(z(2,:));
z3=median(z(3,:));
z4=median(z(4,:));
tem=1;

% z1=mean([imgn(i,j-1),imgn(i,j),imgn(i,j+1)]);
% z2=mean([imgn(i-1,j),imgn(i,j),imgn(i+1,j)]);
% z3=mean([imgn(i+1,j-1),imgn(i,j),imgn(i-1,j+1)]);
% z4=mean([imgn(i-1,j-1),imgn(i,j),imgn(i+1,j+1)]);

imgn1(i,j)=max([z1,z2,z3,z4]);
end
end
figure,imshow(imgn1,[]);
posted @ 2012-01-28 23:18  Dsp Tian  阅读(4563)  评论(0编辑  收藏  举报