2022年4月13日 星期三

s1081523 作業4

 

s1081523 作業4

作業說明:

 離散傅立葉轉換 DFT練習

 

請撰寫一個程式,讀取一張256色灰階圖像。

(1)  計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。

(2)  對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。

 

開發環境: 

·     Windows 10

·     Visual Studio 2019

·     OpenCV 4.5.5

·     C++

 

實作方法:

1.      先用imread(“路徑”, IMREAD_GRAYSCALE)將圖片以灰階讀取進來。

2.      getOptimalDFTSize函數將長寬延伸到最佳尺寸,邊界用0填充。此步驟是為了提高離散傅立葉變換的運算速度。

接著用copyMakeBorder填充圖像邊界。



3.      為傅立葉變換結果分配儲存空間,因為轉換後有實部虛部,分別存到planes[0]planes[1] 並將planes[0], planes[1]合併成多通道的數組complexI



4.      進行傅立葉變換



將複數轉為頻譜大小,並將多通道的complexI分離成單通道



5.      因為變換後的幅度範圍大,因此進行對數尺度縮放



剪切和重新分布頻譜圖象限



6.      歸依化,將幅度控制在可顯示範圍[0, 1]之間



原圖



顯示頻譜值



7.      呼叫自訂義函數phaseSpectrum,求出相位角度並回傳



顯示結果



8.      呼叫GaussianBlur函數,並且給訂參數



顯示結果




沒有留言:

張貼留言