提取傅立叶变换的低频系数

时间:2013-10-10 11:43:18

标签: matlab image-processing

我已经对像这样的图像应用了傅里叶变换:

I = imread('img.jpg');
img = fftshift(I);
F = fft2(img);
magnitude = mat2gray(100*log(1+abs(fftshift(F))));    % Magnitude spectrum
phase = mat2gray( (angle(F)) );                       % Phase spectrum

利用离散傅立叶变换的能量压缩特性,如何提取傅里叶变换的低频值系数的21x21矩阵?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

I = imread('peppers.jpg');
img = fftshift(I);
F = fftshift(fft2(img));

% magnitude = mat2gray(100*log(1+abs(F)));    % Magnitude spectrum
% phase = mat2gray( (angle(F)) );             % Phase spectrum

[M N K] = size(F);

L = 10;

fsub(M,N,K)=0;
fsub(M/2-L:M/2+L,N/2-L:N/2+L,1:K) = F(M/2-L:M/2+L,N/2-L:N/2+L,1:K);


I2 = uint8(real(ifftshift(ifft2(ifftshift(fsub))));

figure
subplot(121)
imshow(I)

subplot(122)
imshow(I2)

左侧面板是原始面板,右侧面板仅选择核心频率成分后面板。

enter image description here