2022年4月14日 星期四

s1073318 作業4

 一、 作業說明

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

沒有留言:

張貼留言