2019年5月13日 星期一

S1051417的作業3

一、作業要求

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

二、原理

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

三、使用環境/語言

  • Windows 10
  • Visual Studio 2015
  • Opencv 3.2
四、特殊程式片段註解
  • getOptimalDFTSize(inputImg.rows);  //m為大於等於inputImg.rows裡的最小值,且須為2、3、5的次方相乘
  • magnitude(planes[0], planes[1], planes[0]); //planes[0] = sqrt((planes[0])^2 + (planes[1])^2
五、環境設置

  • 設置opencv3.2後引入opencv2/opencv.hpp和conio.h
六、執行結果



原圖




                                         
                                                                     
                                                                              頻譜


                                     

                                                                          逆向dft求原圖

七、參考資料

      http://monkeycoding.com/?tag=dft

沒有留言:

張貼留言