2019年5月13日 星期一

s1053314 的作業 3

一、作業要求

撰寫一個程式,讀取一張 256 色灰階圖像。計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。

二、原理

傅立葉轉換常用在分析各種濾波器的特性。可以是用2D離散傅立葉轉換分析影像的頻域特性。
實現2D離散傅立葉轉換(DFT)的演算法叫做快速傅立葉轉換(FFT),對影像進行x方向和y方向的傅立葉轉換,會得到影像的頻域表示圖。

直觀來說,一個正弦訊號如果幅度變化很快,可以稱之高頻訊號,如果轉換很慢,可以稱之低頻訊號。在影像中灰階值變化快的位置,可以稱之高頻分量,灰階值變化慢鑿稱之低頻分量。

然而2D傅立葉轉換的一公式為:
反轉換為:
當u=v=0時,反轉換可以實現將頻域圖像恢復成時域圖像:
三、使用環境/語言

  • Windows 10
  • Spyder 
  • Python 3.7.1
  • Opencv 3.4.1
四、特殊程式片段註解
  • np.fft.fft2() //對訊號進行頻率轉換輸出一個複數陣列,第一個引數為灰階影像,第二個引數為輸出陣列大小
  • np.fft.fftshift() //進行移頻操作
  • np.abs() //取絕對值,將複數變化成實數
  • np.log() //取log,將數據變化成較小的範圍
  • np.angle() //取相位
五、環境設置

  • 將Anaconda的路徑加入的path
  • 於Anaconda cloud server中搜尋package(cmd輸入:anaconda search opencv)
  • 挑選一個符合系統的package(cmd輸入:conda install -c https://conda.anaconda.org/package名稱)
  • 下載完畢後,開啟Spyder執行程式
六、執行結果

七、參考資料

沒有留言:

張貼留言