作業過程
離散傅立葉轉換 DFT 練習
請撰寫一個程式,讀取一張 256 色灰階圖像。 (1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像
方式呈現出。 (2)對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。(程式利用課本的
frequency filter 步驟者可得滿分!)
操作環境
Windows 10Python 3.8.5Spyder 4openCV 4.5.1numpy 1.20.2matplotlib 3.4.1
操作過程
1.讀取圖片
2.將圖片轉為灰階的形式
3.利用 f = np.fft.fft2(img_man) #利用傅立葉變換演算法得到頻率分布
4.fshift = np.fft.fftshift(f) # 預設結果中心點位置是在左上角# 呼叫fftshift()函式轉移到中間位置
5.fimg = np.log(np.abs(fshift)) # fft 結果是複數,其絕對值結果是振幅 輸出頻譜圖
6.np.angle() #輸出相位圖
7 利用
rows,cols = img_man.shape
mask = np.zeros(img_man.shape,np.uint8)
mask[rows/2-20:rows/2+20,cols/2-20:cols/2+20] = 1
把空間域濾波中的Laplace模板的1變成0,0變成1,形成Gaussian Low-Pass
執行結果
原圖vs傅立葉頻譜:
原圖vs angle-phase:
原圖 vs Gaussian-lowpass:
沒有留言:
張貼留言