Halcom 发表于 2017-3-7 21:52:19

理想高通滤波器

function H = freqfilter_ideal_Hp(M,N,D0)
% 理想高通滤波器
% input:
%   M,N:频域滤波器的尺寸
%   D0:带阻滤波器的截止频率
% output:
%       H:M x N的矩阵,表示频域滤波器矩阵,数据类型为double,
u = -M/2:M/2-1;
v = -N/2:N/2-1;
= meshgrid(u,v);
D = sqrt(U.^2+V.^2);
H = double(D>=D0);
end
主程序如下:
clc,clear,close all
warning off
feature jit off
D0 = 64; % 阻止的频率点与频域中心的距离
im = imread('coloredChips.png');         % 原图像
R = imnoise(im(:,:,1),'gaussian',0,0.01);% R + 白噪声
G = imnoise(im(:,:,2),'gaussian',0,0.01);% G + 白噪声
B = imnoise(im(:,:,3),'gaussian',0,0.01);% B + 白噪声
im = cat(3,R,G,B);                         % 原图像 + 白噪声
H = freqfilter_ideal_Hp(2*size(R,1),2*size(R,2),D0);   % 理想高通滤波器
R1 = fftfilt2(R,H);
G1 = fftfilt2(G,H);
B1 = fftfilt2(B,H);
im1 = cat(3,R1,G1,B1);
im1 = uint8(im1);
figure('color',)
subplot(121),imshow(im,[]); title('原始图像')
subplot(122),imshow(im1,[]); title('理想高通滤波图像');子函数:function Z = fftfilt2(X,H)
% 频域滤波
% 函数输入:
%       X:输入的空域图像矩阵,double类型
%       H,频域滤波器,一般为图像X的2倍时较好
% 函数输出:
%       Z:输出的空域图像局长呢,数据类型为double类型
% 二维傅里叶变换
F = fft2(X,size(H,1),size(H,2));
% 傅里叶反变换
Z = H.*F;
Z = ifftshift(Z);
Z = abs(ifft2(Z));
Z = Z(1:size(X,1),1:size(X,2));


页: [1]
查看完整版本: 理想高通滤波器