FFT实现

rac*_*ana 2 java fft

我正在使用应用程序来增强图像FFT.

我已经实现了以下代码FFT:

在此输入图像描述

对于上图中的第一个公式,我实现了如下代码:

  void fft(int x , int y , int size) {

    for(int i=x; i<x+32 ; i++){
        for(int j=y ; j<y+32 ; j++){
            double kth = -2 * Math.PI * (((i*x)/size)+((j*y)/size));
            ComplexNumber expo = new ComplexNumber(Math.cos(kth),Math.sin(kth));
            output.values[i][j] = ComplexNumber.cMult(input.values[x][y],expo) ;
            intermediate.values[i][j] = output.values[i][j];
            input.values[i][j] = output.values[i][j];
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

我还实现了第二个和第三个公式的代码,但我得到的结果不正确.我该怎么办 ?

为第一个方程实现的代码是否正确?

编辑

我已尝试在指纹图像上使用Catalano框架中的建议函数.应用Catalano框架后输入图像和输出图像:

输入图像

在此输入图像描述

傅里叶变换

在此输入图像描述

频率滤波器

在此输入图像描述

产量

在此输入图像描述

当我将它应用于指纹图像时,输入图像和输出图像之间的差异并不那么有效.即使在应用FFT之后,指纹图像中的脊和谷之间的对比也不能明显区分.所以需要做任何附加参数对指纹图像进行操作?

Hem*_*lia 5

你可以在java中使用FFT如下:

这个链接已经死了(http://blog.datasingularity.com/?p=53)

http://introcs.cs.princeton.edu/java/97data/FFT.java.html

并且参考FFTW的信息是"西方最快的傅里叶变换",并且有一些Java包装器:来自http://www.fftw.org/download.html

  • +1能够回答不存在的问题. (7认同)