我已经使用过FourierTransform和FFTConvolution类,我也研究了他们的代码以使它们适应我的程序,无论如何我仍然对这些类有一些疑问,我希望你能帮助我!
首先,FourConTransform产生的输出尺寸和FFTConvolution类中fftKernel的尺寸与输入图像的尺寸不同,为什么?例如,为什么如果我转换256x256图像,我会得到一个281x560的光谱?
其次,试图找出我对第一个疑问的答案,我发现光谱尺寸是通过使用包edu.mines.jtk.dsp计算的,特别是FftReal / FftComplex类,都是基于Pfacc课程。对Pfacc类的评论说这个类实现了FFT计算的PFA算法,所以我的第二个疑问是:FourierTransform和FFTConvolution类是否实现了PFA算法?
答案 0 :(得分:0)
对于卷积,输出点的数量等于:
N_out = N_in + K + 1
其中:
N_out = no of output points
N_in = no of input points
K = kernel size
因此,看起来您正在使用304x25内核对256x256图像进行卷积。
对于PFA算法,这只是一个实现细节--FFT维度被分解为小素数的幂。最终结果与DFT相同。