0
点赞
收藏
分享

微信扫一扫

MATLAB---六抽头滤波

架构大数据双料架构师 2022-04-14 阅读 29
matlab

在这里插入图片描述

%% 六抽头滤波
clc,clear,close all  % 清理命令区、清理工作区、关闭显示图形
warning off       % 消除警告
feature jit off      % 加速代码运行
[filename ,pathname]=...
    uigetfile({'*.bmp';'*.tif';'*.jpg';},'选择图片'); %选择图片路径
str=[pathname filename]; % 合成路径+文件名
im = imread(str);        % 读图
im = imnoise(im,'gaussian',0,1e-3); % 原图像 + 白噪声

filter_coef = [1 -5 20 20 -5 1]/32;  %(6-tap filter)系数
im_inter = six_tap_filter(im, filter_coef); % 六抽头滤波

figure,
subplot(121),imshow(im);title('原始图像')
colormap(jet)  % 颜色
shading interp % 消隐
subplot(122),imshow(im_inter,[]);title('六抽头滤波图像')
colormap(jet)  % 颜色
shading interp % 消隐
function A_interp_pic = six_tap_filter(A, filter_coef)
% 六抽头插值滤波
% 函数输入:    A: 输入图像
%             filter_coef: 滤波器系数
% 函数输出:   
%             A_interp_pic:  六抽头插值滤波图像

if (length(size(A)) == 3)
% 如果输入图像为3D数组,则重复插值滤波3for i=1:3
        A_interp_pic(:,:,i) = Bilinear_Filter_interp(A(:,:,i),filter_coef);
    end
    
else
    [m,n] = size(A);       % 求行列
    % 初始化
    A1 = [];           % 初始化
    A_interp_pic = []; % 初始化
    % 列插值
    A_col= filter2(filter_coef,A);       % 滤波
    for i=1:n
        A1 = [A1,A(:,i),A_col(:,i)];
    end
    A1(:,end) = [];    % 去边缘
    % 行插值
    A_rows = filter2(filter_coef,A1')';  % 滤波
    for i=1:m
        A_interp_pic = [A_interp_pic; A1(i,:); A_rows(i,:)];
    end
    A_interp_pic(end,:) = []; % 去边缘
    
end


举报

相关推荐

0 条评论