一、 作業說明
請撰寫一個程式,讀取一張256色灰階圖像。
(1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
(2) 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。
(程式利用課本的frequency filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。)
二、 作業環境
Windows 10
OpenCV 4.5.5
Visual Studio 2017
三、 實作方法
(1)
1.讀取灰階圖片,對圖片增加zero padding得到fp(x,y)
2.置中低頻區,對fp(x,y)乘上fftshift:(-1)^(x+y)
3.把圖片轉為複數型式,用內建函數dft()對圖片做傅立葉轉換
4.使用內建函數split()得到圖片傅立葉轉換後的實部、虛部,使用內建函數cartToPolar()得到頻譜大小、相位角度
(2)
1.讀取灰階圖片,對圖片增加zero padding得到fp(x,y)
2.置中低頻區,對fp(x,y)乘上fftshift:(-1)^(x+y)
3.把圖片轉為複數型式,用內建函數dft()對圖片做傅立葉轉換
4.產生與fp(x,y)相同大小的Gaussian kernel
H(u,v)
5.使用內建函數split()得到圖片傅立葉轉換後的實部、虛部,對實部、虛部分別乘上H(u,v),相當於對頻譜大小乘上H(u,v)且不改變相位角度
6.對上一步結果做逆傅立葉轉換,再乘上fftshift,裁切左上方四分之一圖片,即得到高斯模糊後的圖片
Gaussian kernel H(u,v):
Gaussian kernel(D0=50) |
四、執行結果
原圖 |
頻譜大小 |
相位角度 |
高斯模糊結果(D0=50) |
沒有留言:
張貼留言