2022年4月12日 星期二

s1073522 作業4

一、作業說明

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

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

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

二、開發環境

l   Windows 11

l   Visual Studio 2017

l   OpenCV - 4.5.5

三、實作方法

  1. 頻譜大小與相位角度
    1. 使用 dft() 進行傅立葉轉換
    2. 使用 split() 分離虛實部
    3. 使用 magnitude() 生成頻譜
    4. 使用 phase() 生成相位圖
  2. Gaussian Low-Pass filter
    1. 將圖片大小乘兩倍做 DFT,除原圖外其餘部分填0
    2. 使用 for 迴圈,每個位置乘上 pow(-1, i + j)
    3. 使用 dft() 進行傅立葉轉換
    4. 使用 split() 分離虛實部
    5. 使用 multiply() 將實部與虛部分別乘上 Low-Pass filter
    6. 使用 merge() 將虛實部合併
    7. 使用 idft() 將圖片轉回
    8. 使用 for 迴圈,將轉回的實數部分每個位置乘上 pow(-1, i + j)
    9. 將圖片裁切為 1/4

四、執行結果

輸入原圖


padded 0


mul pow(-1, i + j)

(有人的陰影但不明顯)

 amplitude


 angel


Gaussian Low-Pass filter

實部 multiply Low-Pass filter


 

轉回原圖並裁切 1/4

(嘗試很久都轉不回來QQ)

 












 

 

沒有留言:

張貼留言