2021年5月1日 星期六

s1071536 影像處理作業3

 一、作業說明 

請撰寫一個程式,讀取一張 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的資料)

四、執行結果
Padding Image
Spectrum
Phase
H(u,v), D0 = 100
H(u,v) × F(u,v)
The Real part of IDFT of HF, multipled by (-1)^(x+y)
Result
Compare


圖片來源:


沒有留言:

張貼留言