下面是某同学针对图像被灰度值为255的白点噪声干扰而在Matlab平台编写的利用3*3模板完成数字图像选择性中值滤波的程序。阅读并补充完整程序。 中值滤波Matlab程序如下:
F=[1 1 1 8 7 4; 2 255 2 3 3 3; 3 3 255 4 3 3; 3 3 3 255 4 6; 3 3 4 5 255 8; 2 3 4 6 7 8]%加载输入图像
G=F; imshow(uint8(F));%显示原图像
[m,n]=size(F); %提取原图像F空间分辨率,并存为变量m和n temp=0; %两个数交换时,临时存储数据所用变量 threshold=200; %设置阈值 for i=2:m-1 %设置行循环变量i及取值范围 for j=2:n-1 %设置列循环变量j及取值范围 if F(i,j)> threshold %阈值判断执行 a=[F(i-1,j-1),F(i-1,j),F(i-1,j+1),F(i,j-1),F(i,j),F(i,j+1),F(i+1,j-1),F(i+1,j),F(i+1,j+1)]; %将9个数据组成数组 %%%%利用冒泡法按从大到小排序 for u=1:8
%%%%%%%%%%%%%%%%%%%%%%%语句1begin (1分) %%%%%%%%%%%%%%%%%%%%%%%语句1 end
if a(v)<a(v+1)
%%%%%%%%%%%%%%%%%%%%%%%语句2begin (2分) %%%%%%%%%%%%%%%%%%%%%%%语句2 end %%%%%%%%%%%%%%%%%%%%%%%语句3begin (2分) %%%%%%%%%%%%%%%%%%%%%%%语句3 end %%%%%%%%%%%%%%%%%%%%%%%语句4begin (2分) %%%%%%%%%%%%%%%%%%%%%%%语句4 end end %判断结束
end %循环结束 end %循环结束
%%%%冒泡法排序结束
G(i,j)=a(5) ; %用中值替换结果图像G中相应的像素灰度值 end % 阈值判断执行结束
end %循环结束 end %循环结束 imshow(uint8(G),[]); %显示中值滤波的结果图像