FFT:为什么来自不同频域数据的重建产生相同的结果

时间:2018-01-03 06:17:20

标签: matlab fft

改变某个值位置的(i)fftshift操作是否与重建图像有关? 如果使用零填充,在频域中切割数据也毫无意义? MATLAB演示:

I = imread('cameraman.tif');

% making 3 different frequency data
kraw = fft2(I);
kshift = fftshift(kraw);
kcut = kshift(:,1:end-64);

imshow(abs([kraw,kshift,kcut]),[])
% reconstructing
ToImage = @(x) uint8(abs(x));
Rraw = ToImage(ifft2(kraw));
Rshift = ToImage(ifft2(kshift));
Rcut = ToImage(ifft2(kcut,size(I,1),size(I,2)));
imshow([I,Rraw,Rshift,Rcut])

% metric the difference
ssim_raw = ssim(uint8(abs(Rraw)),I);
ssim_shift = ssim(uint8(abs(Rshift)),I);
ssim_cut = ssim(uint8(abs(Rcut)),I);
title(['SSIM:    1-----|-----',num2str(ssim_raw),'----|-----',num2str(ssim_shift),'----|-----',num2str(ssim_cut)])

1 个答案:

答案 0 :(得分:1)

我现在无法运行matlab,但一般的答案是他们来产生不同的结果。 DFT是同构,这意味着任何图像都只有一个光谱,任何光谱都只有一个图像。

您应该查看结果的实际连贯差异。例如,频域中的移位相当于空间域中的线性相位乘法,并且不会影响幅度。剪切示例让我感到惊讶,因此我怀疑它是ssim指标如何工作的结果。我不熟悉它所以我不能给出任何细节。

相关问题