对图像进行傅里叶变换,使高频分量位于中心

Fourier transformation on images such that high frequency components lie at the center

我熟悉在图像上应用高通滤波器的常规方法:

  1. 对图像应用 FFT np.fft.fft2
  2. FFT 偏移 np.fft.fftshift 使低频居中。
  3. 在此频域图像上应用适当的高通滤波器
  4. FFT移位np.fft.fftshift和傅里叶逆变换np.fft.ifft2得到对应的空间域图像

如果我的理解是正确的,当我们按照这些步骤操作时,低频位于傅立叶域图像的中心附近。

我们如何应用 np.fft.fft2 以使高频而不是低频居中?

附加信息:我在 Yin 等人的以下论文 'A Fourier Perspective on Model Robustness in Computer Vision' 中遇到了这种应用高通滤波器的特殊方法。阿尔。 https://arxiv.org/abs/1906.08988

我很好奇他们是如何实现的。

要使二维阵列的中心没有低频,您不需要应用 np.fft.fftshift。事实上,这个函数交换了图像的一半,将低频(最初靠近边界)放在中心。

请注意,高频不会完全位于中心,而是位于十字形位置。下图显示了图像的未移位 FFT 计算。橙色部分是最高频率,最低频率位于角落。

如果你真的需要高频只在中心(而不是在十字形位置),那么你需要执行重新投影。但是,请注意,由于扩散,此操作可能会部分破坏高频。 AFAIK,没有办法(完全)阻止这种情况。