2022年4月13日 星期三

s1083304 作業4

  1. 作業說明

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

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

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

2. 開發環境

Windows 10

Visual Studio Code 1.64

OpenCV 4.5.5.

3. 實作方法

(1)

1. cv2.IMREAD_GRAYSCALE 讀入灰階圖片

2. 用 getOptimalDFTSize() 還有 copyMakeBorder() ,存下實部和虛部,最後用 merge() 合併通道 

3. dft()進行傅立葉轉換

4. split() 分離通道,以 magnitude() 取得頻譜,phase() 取得相位角,將複數轉為幅值

5. log() 對圖片做對數縮放

6. 對圖片幅度分布圖做中心化,最後normalized()控制值於 0,1 之間並輸出

(2)

1. cv2.IMREAD_GRAYSCALE 讀入灰階圖片

2. 建立一個 5*5 高斯低通卷積核矩陣 kernel,中心點權重偏重,水平垂直方向呈高斯分布,如下:



3. 自定義函數,先對圖片做邊緣擴充 kernel 大小

4. for loop 對圖片各個點做卷積,原圖各點圖像乘上 kernel 對應數並相加,最後將圖片截為原圖尺寸並回傳

5. 最後以 pyplot.imshow 以 cmap='gray' 輸出,對比原圖

4. 執行結果

原圖
    

                                                         Spectrum Magnitude

    

                                                                     Phase

    

                                                           Guassian Low Pass

   

                                                                       對比圖    

                                              原圖                                     Gaussian Low pass



沒有留言:

張貼留言