2019年5月15日 星期三

1051522 作業3

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

二. 環境
    - Windows 10
    - Visual Studio 2017 C# with EmguCV 3.4.3 (Nuget)

    (EmguCV為OpenCV在.Net平台上的包裝套件,C#可直接新增專案利用Nuget套件管理來快速安裝EmguCV,缺點就是新專案都要重新安裝一次)

三. 程式說明
    基本上是照著官方文件的說明,再改成用C#去實作。

    主要部分是:
    1. 先用CopyMakeBorder padding圖片到適合的大小
    2. 再去用Dft去做傅立葉轉換得到實部跟虛部的結果
    3. 然後根據是要得到Spectrum或是Phase去做不同的處理

    官方的說明有說可以利用cartToPolar去得到magnitude和phase,
    我phase的取得就是根據這個函數得來的,但是magnitude部分回拿到全黑的圖,
    所以magnitude部分我照著官方的方式,直接套用公式去算出magnitude

    先根據公式得到magnitude





    然後再把值域做log轉換





    最後在正規化後顯示出來

    官方API文件說明可參考: Here


四. 程式結果 (程式有提供比較原圖功能)





Fig1. 原圖





沒有留言:

張貼留言