一、作業說明
請撰寫一個程式,讀取一張256色灰階圖像。
(1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
(2) 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。
二、開發環境
l Windows 11
l Visual Studio 2017
l OpenCV - 4.5.5
三、實作方法
- 頻譜大小與相位角度
- 使用 dft() 進行傅立葉轉換
- 使用 split() 分離虛實部
- 使用 magnitude() 生成頻譜
- 使用 phase() 生成相位圖
- Gaussian Low-Pass filter
- 將圖片大小乘兩倍做 DFT,除原圖外其餘部分填0
- 使用 for 迴圈,每個位置乘上 pow(-1, i + j)
- 使用 dft() 進行傅立葉轉換
- 使用 split() 分離虛實部
- 使用 multiply() 將實部與虛部分別乘上 Low-Pass filter
- 使用 merge() 將虛實部合併
- 使用 idft() 將圖片轉回
- 使用 for 迴圈,將轉回的實數部分每個位置乘上 pow(-1, i + j)
- 將圖片裁切為 1/4
四、執行結果
輸入原圖
padded 0
mul pow(-1, i + j)
amplitude
angel
Gaussian Low-Pass filter
實部 multiply Low-Pass filter
轉回原圖並裁切 1/4
(嘗試很久都轉不回來QQ)
沒有留言:
張貼留言