[英]Implementing 2D inverse fourier transform using 1D transforms
我試圖在Python中實現一些將圖像轉換為傅里葉域的函數,反之亦然,用於圖像處理任務。
我使用重復的1D-DFT實現了2D-DFT,並且它運行良好,但是當我嘗試使用重復的逆1D-DFT實現2D逆DFT時,出現了一些奇怪的問題:當我將圖像轉換為其傅里葉域然后返回在圖像域中,看起來圖像被反射並與其反射合並,如下所示:
這是輸入:
這是輸出
這是導致混亂的功能:
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,所以我不自信地分析你的代碼,但我的賭注是你很可能忘記在某個階段實現復雜的值....
它應該是:
如果你在第二遍(子彈#2,#6 )中僅使用真實的復雜域DFT / iDFT ,那么它將創建鏡像,因為實際值的DFT是鏡像序列...順便說一句。 如果你先處理行或列也沒關系...你也可以先在DFT中處理行,然后在iDFT中首先處理列,結果應該是相同的+/-浮動錯誤......
有關詳情,請參閱
以及所有子鏈接,尤其是2D FFT and wrapping example
以便您可以將結果與工作中的結果進行比較
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.