好吧,我来自问自答吧。查了半天资料,发现还是对傅里叶变换理解的不透造成的困惑。
1.区分rft_generic和 fft_generic
rft_generic计算输入图像的实值FFT。注意这里是实值,在这种情况下,复杂的输出图像具有冗余。图像右半部分中的值是图像左半部分中对应值的复杂共轭。因此,运行时和内存只能通过计算和存储复杂图像的左半部分来保存,所以在direction='to_freq'时,输出的频域图像是尺寸(w/2+1)*h的复杂图像,其中w和h是输入图像的宽度和高度。
2. gen_gauss_filter
gen_gauss_filter频域内产生一个高斯滤波器,注意这里是频域的。但是这个频域图像并不是直接构造的,下面是我的理解:首先产生一个高斯核,然后根据输入的参数对这个高斯核矩阵做傅里叶变换,得到特定模式和特定分辨率的所谓频域的滤波器,例如我要进行rft_generic的变换,那么我的高斯滤波器模式就要写为‘rft’。并通过设置参数保持频域滤波器和原图像一致。
3 .convol_fft
我们都知道空间域的卷积,就是频域内的相乘。convol_fft在频域中对两个(傅里叶变换后的)图像进行卷积。其实就是将频域图像ImageFFT的像素乘以滤波器ImageFilter的相应像素。
如上,我理解有不对的地方欢迎指正。
|