2013-10-17 59 views
3

我正在使用應用程序來使用FFT來增強圖像。FFT實現

我已經實現的代碼FFT

enter image description here

對於上面的圖片的第一個公式我已經實現的代碼如下:

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]; 
     } 

    } 

} 

我也實現的代碼爲第二和第三個公式,但我得到的結果是不正確的。 我該怎麼辦?

爲第一個方程實施的代碼是否正確?

編輯

我試圖與在指紋圖像上卡塔拉諾框架建議功能。施加卡塔拉諾框架後 輸入圖像和輸出圖像:

輸入圖像

enter image description here

傅立葉變換

enter image description here

頻率濾波器

enter image description here

輸出

enter image description here

正如我申請它放在指紋圖像的輸入圖像和輸出圖像之間的差不那麼在脊和谷之間effective.The對比度即使應用了FFT,指紋圖像也不能清晰地區分。因此,是否需要對指紋圖像進行操作的附加參數?

回答

2

您可以使用Catalano Framework

請參閱下面的代碼和結果。

FastBitmap fb = new FastBitmap("c:\\files\\test.bmp"); 
fb.toGrayscale(); 
JOptionPane.showMessageDialog(null, fb.toIcon(), "Image", JOptionPane.PLAIN_MESSAGE); 

FourierTransform ft = new FourierTransform(fb); 
ft.Forward(); 
fb = ft.toFastBitmap(); 
JOptionPane.showMessageDialog(null, fb.toIcon(), "Fourier Transform", JOptionPane.PLAIN_MESSAGE); 

FrequencyFilter ff = new FrequencyFilter(0, 60); 
ff.ApplyInPlace(ft); 
fb = ft.toFastBitmap(); 
JOptionPane.showMessageDialog(null, fb.toIcon(), "Frequency Filter", JOptionPane.PLAIN_MESSAGE); 

ft.Backward(); 
fb = ft.toFastBitmap(); 
JOptionPane.showMessageDialog(null, fb.toIcon(), "Result", JOptionPane.PLAIN_MESSAGE); 

Original image

Fourier Transform

Frequency Filter

Result

+0

該實現支持零功能,用於沒有功率f 2的計算矩陣。 –

+0

我已經應用了包含在框架中的新功能。但它並不如我在指紋圖像上應用它。爲了表明我編輯了我的問題,請你幫我解決這個問題嗎? – rachana

+0

如果你想用傅里葉增強圖像,你應該研究方向傅里葉濾波(http://visgraph.cs.ust.hk/biometrics/Papers/FingerPrints/fin-visp1994-04-01.pdf)。 這與原來的方法有點不同。所以我可以在將來學習和實施。 –

4

,你可以在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

+7

+1回答不存在的問題的能力。 – Maroun

+0

@Hemant Metalia我已經通過了建議的網站。謝謝你。但是我有公式,併爲此實現了代碼。但是有一些價值有疑問。你能幫我一下嗎? – rachana

+0

@HemantMetalia你能幫助我更好地理解,隨着時間的推移,我可以使用3D FFT濾鏡圖像嗎? – 452