我正在使用应用程序来增强图像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之后,指纹图像中的脊和谷之间的对比也不能明显区分.所以需要做任何附加参数对指纹图像进行操作?
你可以在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