一、作業說明
請撰寫一個程式,讀取一張 256 色灰階圖像。
(1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像
方式呈現出。
(2)對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。(程式利用課本的
frequency filter 步驟者可得滿分!)
二、作業環境
● Windows 10
● Python 3.7.10
● opencv 3.4.2
● numpy 1.19.5
● matplotlib 3.3.4
三、實作方法
1.使用imread將圖片以灰階方式讀入
2.使用zero padding將圖片補到2M*2N大小(M:圖高,N:圖寬),並讓圖片靠左上
3.multiplying f(u,v) by (-1)^(x+y)
4.使用傅立葉轉換將圖轉成頻域(np.fft.fft2()) -> F(u,v)
5.取得頻譜圖及相位圖(np.angle())
6.建立GaussLowpassFilter(D0 = 100) -> H(u,v)
7.將H(u,v)、F(u,v)相乘取得過濾後的頻譜(G(u,v) = H(u,v) * F(u,v))
8.使用逆傅立葉轉換將資料轉換回spatial domain(np.fft.ifftshift())
9.multiplying real part by (-1)^(x+y)
10.Extracting後得到結果(刪掉padding的資料)
四、執行結果
圖片來源:
沒有留言:
張貼留言