簡體   English   中英

使用1D變換實現2D逆傅里葉變換

[英]Implementing 2D inverse fourier transform using 1D transforms

我試圖在Python中實現一些將圖像轉換為傅里葉域的函數,反之亦然,用於圖像處理任務。

我使用重復的1D-DFT實現了2D-DFT,並且它運行良好,但是當我嘗試使用重復的逆1D-DFT實現2D逆DFT時,出現了一些奇怪的問題:當我將圖像轉換為其傅里葉域然后返回在圖像域中,看起來圖像被反射並與其反射合並,如下所示:

這是輸入:

IMG

這是輸出

IMG

這是導致混亂的功能:

def IDFT2(fourier_image):
    image = np.zeros(fourier_image.shape)
    for col in range(image.shape[1]):
        image[:, col] = IDFT1(fourier_image[:, col])

    for row in range(image.shape[0]):
        image[row, :] = IDFT1(image[row,:])

    return image

我做錯了什么? 我很確定IDFT1工作正常,常規2D-DFT也是如此。

我不使用Python,所以我不自信地分析你的代碼,但我的賭注是你很可能忘記在某個階段實現復雜的值....

它應該是:

  1. DFT行從實際域到復雜域
  2. DFT列的結果從復雜到復雜的域
  3. 如果需要,應用規范化
  4. 任何或不處理......
  5. iDFT從復雜域到復雜域的行
  6. iDFT列的結果從復雜到真實域
  7. 如果需要,應用規范化

如果你在第二遍(子彈#2,#6 )中僅使用真實的復雜域DFT / iDFT ,那么它將創建鏡像,因為實際值的DFT是鏡像序列...順便說一句。 如果你先處理行或列也沒關系...你也可以先在DFT中處理行,然后在iDFT中首先處理列,結果應該是相同的+/-浮動錯誤......

有關詳情,請參閱

以及所有子鏈接,尤其是2D FFT and wrapping example以便您可以將結果與工作中的結果進行比較

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM