2022年4月13日 星期三

s1071552 作業4


1.作業說明

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

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

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


2.開發環境

ios 10.15.7 
Visual Studio Code 1.63 
OpenCV - 4.5.5

3.實作方法


1. 
(1) 運用OpenCV提供之讀取圖片檔函數cv2.imread將圖片讀取進來。 
(2) 將圖片Zero Padding成2M*2N的圖 ,並且讓圖維持在左上角。 
(3) 讓頻譜置中,將圖的顏色值存入 f(u,v) 再做 DFT 得到 F(u,v)。











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









(5) Spectrum不易觀察,故進行log算法,log (1+sqrt(r*r+i*i)), 並將Spectrum和Phase 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


4.執行結果

原圖

padded 0

中心化 *pow(-1, i + j)

 Spectrum

phase

平滑後之圖像







沒有留言:

張貼留言