Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 斐济:imglib2 FFT算法说明_Java_Image Processing_Fft_Imagej_Prime Factoring - Fatal编程技术网

Java 斐济:imglib2 FFT算法说明

Java 斐济:imglib2 FFT算法说明,java,image-processing,fft,imagej,prime-factoring,Java,Image Processing,Fft,Imagej,Prime Factoring,我已经使用过FourierTransform和FFTConvolution类,我还研究了它们的代码,以便使它们适合我的程序,无论如何,我仍然对这些类有一些疑问,希望您能帮助我 首先,FFTConvolution类中Fourier变换和fftKernel产生的输出的维度与输入图像的维度不同,为什么?例如,如果我变换一幅256x256的图像,为什么会得到一幅281x560的光谱 其次,为了找到我第一个疑问的答案,我发现频谱维度是通过使用包edu.mines.jtk.dsp计算的,尤其是基于Pfacc

我已经使用过FourierTransform和FFTConvolution类,我还研究了它们的代码,以便使它们适合我的程序,无论如何,我仍然对这些类有一些疑问,希望您能帮助我

首先,FFTConvolution类中Fourier变换和fftKernel产生的输出的维度与输入图像的维度不同,为什么?例如,如果我变换一幅256x256的图像,为什么会得到一幅281x560的光谱


其次,为了找到我第一个疑问的答案,我发现频谱维度是通过使用包edu.mines.jtk.dsp计算的,尤其是基于Pfacc类的FftReal/FftComplex类。对Pfacc类的评论说该类实现了FFT计算的PFA算法,所以我的第二个疑问是:Fourier Transform和FFT Convolution类是否实现了PFA算法

对于卷积,输出点数等于:

N_out = N_in + K + 1
其中:

N_out = no of output points
N_in = no of input points
K = kernel size
因此,看起来您正在将256x256映像与304x25内核进行卷积


至于PFA算法,这只是一个实现细节——FFT维度被分解为小素数的幂。但最终结果与DFT相同。

映像和内核都是256x256。在这种情况下,请在问题中至少包含代码的相关部分。问题不在我的代码中,我只想解释一下库imglib2的类FFTConvolution和FourierTransform,谢谢“问题不在我的代码中“--伟大的故事,兄弟。”。说真的,即使你认为你的代码没有什么问题,但是让别人知道你是如何调用这些例程的,这将有助于进一步了解你的问题。哈哈,我解释得不好。我正在使用imglib2编写一个插件,这个插件必须产生与Matlab例程相同的结果。代码对我来说很好,我已经检查过了,我还与一些斐济开发人员进行了交谈。无论如何,我注意到两个代码的中间结果存在一些差异,这是由FFT计算引起的。在Matlab中计算的FFT与在斐济计算的FFT相差约1e0,而在卷积之前,输入图像之间的差值为1e-7。