2021年5月1日 星期六

s1061460 影像處理作業3

 作業說明:

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

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

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

 

操作環境:

l  作業系統 :  Windows10

l  編譯軟體 :  Visual Studio Code

l  使用語言 :  Python / OpenCV 4.5.1

 

實作方法:

1. (1) 運用OpenCV提供之讀取圖片檔函數cv2.imread將圖片讀取進來。

    (2) 將圖片Zero Padding2M*2N的圖 ,並且讓圖維持在左上角。

    (3) 讓頻譜置中,將圖的顏色值存入 f(u,v) 再做 DFT 得到 F(u,v)

     (4) 將上述公式取得之實數存放第一個陣列, 虛數存放第二個陣列,
並且計算Spectrum的值和Phase angle的值。

     (5) Spectrum不易觀察,故進行log算法,log (1+sqrt(r*r+i*i))
並將SpectrumPhase angle 的值域調整至0~255

2. 方法一:

    (1) 由上述步驟得到的傅立葉轉換F(u,v),計算 D(u,v) H(u,v)

    (2) 再計算G(u,v)=H(u,v)*F(u,v),對G(u,v)inverse

    (3) 將圖片裁切左上角轉回原圖

  方法二:

(1)    計算Mask

(2)    對原圖周圍做Padding

(3)    用計算出的Mask對原圖做Convolution


執行結果:

原圖:

頻譜大小:

相位角度:

平滑後圖像:



沒有留言:

張貼留言