📄 aver_filter.m
字号:
function aver_filter( Image_name,N,out_filename )
%非线性平滑滤波器G1 平均
%输入参数 文件名 N为模板大小(正奇数)
%读取图像-------------
if nargin<3
disp('输入参数错误!!!');
return;
end
image=imread(Image_name);
if isrgb(image)
image=rgb2gray(image);
end
% 图像扩展--------------
[size_m,size_n]=size(image);
image_ex=zeros(size_m+N-1,size_n+N-1);
% 赋值
for row=1:size_m
for col=1:size_n
image_ex(row+(N-1)/2,col+(N-1)/2)=image(row,col);
end
end
% 对每个象素------------------
pattern_plate=zeros(N,N); %模板
image_new=zeros(size_m,size_n); %滤后图像矩阵
for row=1:size_m
for col=1:size_n
% 取模板的元素
for row_p=1:N
for col_p=1:N
pattern_plate(row_p,col_p)=image_ex(row+row_p-1,col+col_p-1);
end
end
% 求模板的平均值得滤后图像矩阵
image_new(row,col)=mean2(pattern_plate);
end
end
% 输出---------------
imshow(image_new,[]);
title('滤后图像');
imwrite( uint8(image_new),out_filename )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -