2022年4月14日 星期四

s1073513 作業 4

1.作業說明:

 

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

 

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

 

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

 

(程式利用課本的frequency filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。)

2. 開發環境:

Windows 10

OpenCV 4.5.5

Python 3.7

3. 實作方法:

(1)

        先利用imread將照片輸入

 

        cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)函式進行傅立葉轉換

 

        np.fft.fftshift(dft)將输出的零頻率分量移到中心

 

        extract magnitude and phase images : cv2.cartToPolar(dft_shift[:,:,0], dft_shift[:,:,1])

        get spectrum : np.log(mag) /20

(2)

        參考PIL原始檔的ImageFilter.py

        高斯的計算公式: res1=1/(2*math.pi*self.sigema*self.sigema)

                            res2=math.exp(-(x*x+y*y)/(2*self.sigema*self.sigema))

4.結果:

• (1)


        


        


         (2)






沒有留言:

張貼留言