請撰寫一個程式,讀取一張 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
四. 程式結果 (程式有提供比較原圖功能)
沒有留言:
張貼留言