1.開發環境:
opencv:4.5.5
windows10
visual studio 2019,c++
2.作業說明:
(1)計算輸入圖的離散傅立葉轉換(DFT)結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
在函式dft2中主要是在做:
1.使用getOptimalDFTSize()和copyMakeBorder()將圖像擴充成適合DFT的尺寸。
2.用merge將plane中存放的實部與虛部合併成一個多通道數組。
3.用dft()做離散傅立葉之後將結果回傳。
回到主程式:
4.將從dft2()得到的回傳結果用split()分開實部和虛部。
5.用magnitude()計算,然後進行對數變換
6.用logArray()將spectrum剪裁為偶數行與偶數列
7.重新排列spectrum的區域,使原點在圖像中心。
8.用normalize歸一化。
這樣就得到頻譜圖了。
相位圖的處理寫在plotPhase()函式裡。
一樣是先用dft2得到mergeArray,用split()分開實部和虛部,然後遍歷做arc tan(虛部/實部),將圖片重新排列成四個象限,最後也用normalize歸一化。
(2)對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。
使用了GaussianBlur()。
沒有留言:
張貼留言