1.fft2()函数
Y=fft2(X,m,n);%二维快速傅里叶操作
2、fftshift()
Ys=fftshift(Y,dim);%零频移到中间
3、ifft2()
对频谱进行处理(如log压缩舒展处理),在把频谱转换成空间域图像。
Xf=ifft2(Ys);%傅里叶反变换
有意思的交换相位谱
% c6s2.m
% 读取图片
A = rgb2gray(imresize(imread('G:\0ShiJue\1.jpg'),[225,225]));
B = rgb2gray(imread('G:\0ShiJue\tennisBall.jpg'));
% 求傅立叶变换
Af = fft2(A);
Bf = fft2(B);
% 分别求幅度谱和相位谱
AfA = abs(Af);
AfB = angle(Af);
BfA = abs(Bf);
BfB = angle(Bf);
% 交换相位谱并重建复数矩阵
AfR = AfA .* cos(BfB) + AfA .* sin(BfB) .* i;
BfR = BfA .* cos(AfB) + BfA .* sin(AfB) .* i;
% 傅立叶反变换
AR = abs(ifft2(AfR));
BR = abs(ifft2(BfR));
% 显示图像
subplot(2,2,1);
imshow(A);
title('美女原图像');
subplot(2,2,2);
imshow(B);
title('猫的原图像');
subplot(2,2,3);
imshow(AR, []);
title('美女的幅度谱和猫的相位谱组合');
subplot(2,2,4);
imshow(BR, []);
title('猫的幅度谱和美女的相位谱组合');
4、频域滤波的步骤
If=fft2(I);%原图傅里叶变换
Is=fftshift(If);%零频移到中心
Iout=Is.*Hs;%与频域滤镜相乘
Iout=ifftshift(Iout);%零频移到左上
Iout=ifft2(Iout);%傅里叶反变换
imshow(Iout);%输出
5、理想低通滤波器
function Hs=imidealflpf(I,freq)
[m n]=size(I);
Hs=ones(m,n);
for i=1:m
forj=1:n
if(sqrt((i-m/2)^2+(j-N/2)^2))>freq)
Hs(i,j)=0;
end
end
end
6、高斯低通滤波器
实际上,常用高斯低通滤波器。
function out = imgaussflpf(I, sigma)
% imgaussflpf函数 构造频域高斯低通滤波器
% I参数 输入的灰度图像
% sigma参数 高斯函数的Sigma参数
[M,N] = size(I);
out = ones(M,N);
for i=1:M
for j=1:N
out(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
end
end
应用例子:
I = imread('../baby_noise.bmp'); %读入原图像
% 生成滤镜
ff = imgaussflpf (I, 20);
% 应用滤镜
out = imfreqfilt(I, ff);
figure (1);
subplot(2,2,1);
imshow(I);
title('Source');
% 计算FFT并显示
temp = fft2(double(I));
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,1);
imshow(temp, []);
title('Source');
figure (1);
subplot(2,2,2);
imshow(out);
title('Gauss LPF, sigma=20');
% 计算FFT并显示
temp = fft2(out);
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,2);
imshow(temp, []);
title(' Gauss LPF, sigma=20');
% 生成滤镜
ff = imgaussflpf (I, 40);
% 应用滤镜
out = imfreqfilt(I, ff);
figure (1);
subplot(2,2,3);
imshow(out);
title('Gauss LPF, sigma =40');
% 计算FFT并显示
temp = fft2(out);
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,3);
imshow(temp, []);
title(' Gauss LPF, sigma =40');
% 生成滤镜
ff = imgaussflpf (I, 60);
% 应用滤镜
out = imfreqfilt(I, ff);
figure (1);
subplot(2,2,4);
imshow(out);
title('Gauss LPF, sigma =60');
% 计算FFT并显示
temp = fft2(out);
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,4);
imshow(temp, []);
title(' Gauss LPF, sigma =60');
7、高斯高通滤波器
function out = imgaussfhpf(I, sigma)
% imgaussfhpf函数 构造频域高斯高通滤波器
% I参数 输入的灰度图像
% sigma参数 高斯函数的Sigma参数
[M,N] = size(I);
out = ones(M,N);
for i=1:M
for j=1:N
out(i,j) = 1 - exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
end
end
8、拉普拉斯高通滤波器
function out = imlapf(I)
% imlapff函数 构造频域拉普拉斯滤波器
% I参数 输入的灰度图像
[M,N] = size(I);
out = ones(M,N);
for i=1:M
for j=1:N
out(i,j) = -((i-M/2)^2+(j-N/2)^2);
end
end
参考:1、http://www.epubit.com.cn/book/onlinechapter/15159
2、http://whuhan2013.github.io/blog/2016/12/25/my-image-strong/