2019年5月15日 星期三

s1051447的作業3

1072 CS362 影像處理概論 作業 3
1051447 梁雅錡
作業題目:
撰寫一個程式,讀取一張 256 色灰階圖像。計算輸入圖的離散傅立葉轉換結果,並 將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。


撰寫過程
(1)   作業系統環境:Windows
(2)   程式語言:Python
(3)   程式開發軟體:Pycharm
(4)   開發環境:

開發環境名稱
使用情形
Python 3.6
採用Python 3.6編寫程式。
OpenCV.4.0.0.21
利用OpenCV 4.0.0.21的套件讀取讀片、對圖片進行各式轉換、以及存取圖片檔。
Numpy 1.15.4
使用Numpy 1.15.4調整圖片的各個像素變動。

Matplotlib2.1.2
Matplotlib2.1.2畫出頻譜圖以及相位圖,存取輸出內容。

(5)   程式內容:
1.在傅立葉的轉換上,我使用Numpy來實現,使用np.fft.fft2(),主要是將空間域轉化為頻率域,第一個參數是輸入影像,它是灰度影第二個參數是可選的,它決定了輸出陣列的大小,如果它大於輸入影的大小,則輸入影象在計算FFT之前填充了0。如果它小於輸入影,輸入影將被裁剪,如果沒有引數傳遞,輸出陣列的大小將與輸入相同。

2.得到結果後,零頻率分量(DC分量)將位於左上角。 如果要將其置於中心位置,則需要在兩個方向上將結果移動,這邊我使用np.fft.fftshift()進行移動,將低頻部分移動到影像的中心。

3.目前得到的結果並不是一個歸一化的影像,我利用20*np.log(np.abs(img))進行歸一化,取得頻譜;接著用numpy自帶的angle函式(np.angle()),可以直接根據複數的實部與虛部求出角度(默認出來的角度是弧度),取得相位。


(6)  程式成果:

    I. 左上圖為原圖,右邊依序是原圖轉灰階圖、頻譜圖、相位圖




    II.左上圖為原圖,右邊依序是原圖轉灰階圖、頻譜圖、相位圖


     III.左上圖為原圖,右邊依序是原圖轉灰階圖、頻譜圖、相位圖

    依照我的程式成果比較下來,我們可以得到結論是:
  • 在成果中,可以在中心看到更多的白色區域,表示低頻率的內容更多.。
  • 可以將影像視為在兩個方向上取樣的訊號
  • 在X和Y方向上進行傅立葉變換可以得到影像的頻率表示。

(7)  儲存結果:
      如下圖所示,儲存每次matplot畫出的影像,使用的是plt.savefig()。


沒有留言:

張貼留言