⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weight_filter.m

📁 关于偏微分方程进行图像处理的电子书,对于学习动态轮廓实现图像的分割非常有用
💻 M
字号:
function weight_filter( Image_name,flag,out_filename )
% 用各模板进行去噪和锐化   
%输入参数   Image_name 文件名    
%           flag       模板类型标志1~4
if nargin<3
    disp('请按参数格式输入参数!!!');
    return;
end

if flag~=1 & flag~=2 & flag~=3 & flag~=4
    disp('参数flag输入错误!!!');
    return;
end

N=3;
pattern_plate=zeros(N,N);       %模板
% 各类模板
if flag==1
    pattern_plate=[1/9 1/9 1/9; 1/9 1/9 1/9; 1/9 1/9 1/9];
elseif flag==2
    pattern_plate=[1/16 1/8 1/16; 1/8 1/4 1/8; 1/16 1/8 1/16];    % 平滑滤波器
elseif flag==3
    pattern_plate=[0 -1 0; -1 5 -1; 0 -1 0];                      % 反锐化掩蔽滤波器
elseif flag==4    
        A=1.7;
        pattern_plate=[0 -1 0; -1 A+5 -1; 0 -1 0];                % 高提升滤波器
end

% 读取图像---------- 
image_I=imread(Image_name);
if isrgb(image_I)
    image_I=rgb2gray(image_I);
end

subplot(1,2,1);
imshow(image_I,[]);
title('原图像');

%图像扩展--------------
[size_m,size_n]=size(image_I);
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_I(row,col);
    end
end
%对每个象素------------------
temp_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
                temp_plate(row_p,col_p)=image_ex(row+row_p-1,col+col_p-1);   
            end
        end          
        image_new(row,col)=sum(sum(temp_plate.*pattern_plate));              
    end
end
%输出---------------
subplot(1,2,2);
imshow(uint8(image_new));
title('滤波后图像');
imwrite(uint8(image_new),out_filename);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -