function [U, V] = dftuv(M, N)
u = 0:(M - 1);
v = 0:(N - 1);
idx = find(u > M/2); %找大于M/2的数据
u(idx) = u(idx) - M; %将大于M/2的数据减去M
idy = find(v > N/2);
v(idy) = v(idy) - N;
[V, U] = meshgrid(v, u);
function H = hpfilter(type,M,N,D0,n)
if nargin ==4
n=1;
end;
H1p=lpfilter(type,M,N,D0,n);
H=1-H1p;
function [H,D]=lpfilter(type,M,N,D0,n)
[U,V]=dftuv(M,N);
D=sqrt(U^2+V^2);
switch type
case 'ideal'
H=double(D<=D0);
case 'btw'
if nargin==4
n=3;
end
H=1./(1+(D./D0).^(2*n));
case 'gaussian'
H=exp(-(D.^2)./(2*(D0^2)));
otherwise
error('Unknow filter type.')
end
clear all;close all;clc;
f=zeros(256);
f(120:135,112:143)=1;
F=fft2(f);
FC=fftshift(F);
S=log(1+abs(FC));
figure,subplot(2,2,1);imshow(f);title('原始图像');
subplot(2,2,2);imshow(abs(F),[]);title('FFT变换后图像');
subplot(2,2,3);imshow(abs(FC),[]);title('坐标调整后图像');
subplot(2,2,4);imshow(S,[]);title('对数变换后图像');
f=imread('lena.jpg');
f=im2double(f);
w=fspecial('gaussian',10,3);
F=fft2(f);
S=log(1+abs(fftshift(F)));
g=imfilter(f,w);
F1=fft2(g);
S1=log(1+abs(fftshift(F1)));
figure,subplot(2,2,1);imshow(f);title('原始图像');
subplot(2,2,2);imshow(S,[]);title('原始FFT变换图像');
subplot(2,2,3);imshow(g/max(max(g)));title('滤波后图像');
subplot(2,2,4);imshow(S1,[]);title('滤波后FFT变换后图像');
lvboqi.rar_高通滤波
版权申诉
147 浏览量
2022-09-24
06:59:17
上传
评论
收藏 783B RAR 举报
![avatar](https://profile-avatar.csdnimg.cn/f3b7c8d80edb45ee84389e2d10b9d009_weixin_42662293.jpg!1)
局外狗
- 粉丝: 69
- 资源: 1万+