2022年4月14日 星期四

s1081502 作業4

作業說明:

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

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

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

(程式利用課本的frequency filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。)

開發環境:

  •       Window10   
  •       Microsoft Visual Studio 2017
  •       OpenCv 4.5.5

程式功能:

  • 輸入欲讀取圖片的名稱或路徑
  • 使用imread(path, IMREAD_GRAYSCALE)以灰階模式讀取一張圖像 
  • getOptimalDFTSize()找到圖片的最佳尺寸
  • copyMakeBorder()以0填充圖像邊界
  • 用dft()進行離散傅立葉轉換
  • 分離通道後用magnitude()和phase()得到頻譜圖和相位角
  • 透過課本公式先得到Gaussian Low-Pass filter的圖
  • 將它與前面傅立葉轉換的結果相乘再用idft()取逆傅立葉轉換
  • 分離通道後用magnitude()得到平滑後圖像

執行結果:

原圖

頻譜圖

相位角

Gaussian Low-Pass filter

平滑後圖像




沒有留言:

張貼留言