實作離散傅立葉(Discrete Fourier Transform)及空間域與頻域濾波器
介紹:
輸入一張灰階圖,對它做傅立葉後,計算他的頻譜大小與相位角度用灰階的圖片表示。並分別在空間域與頻域實作Gaussian smooth filter,必須可調整的標準差及濾波器大小。
實作:
我們先輸入一張64*64的灰階圖,如下:
輸入一張灰階圖,對它做傅立葉後,計算他的頻譜大小與相位角度用灰階的圖片表示。並分別在空間域與頻域實作Gaussian smooth filter,必須可調整的標準差及濾波器大小。
實作:
我們先輸入一張64*64的灰階圖,如下:
先在原圖做zero-padding成128*128得到結果如下:
再將此圖每點做 *(-1)^(row+col) 的動作
即可利用以下公式做傅立葉:
每個點會得到自己的複數(實部加虛部)
再利用以下公式計算即可得到得到每點的頻譜大小:
再經過log處理,頻譜結果如下:
然後我們再利用以下公式,即可得到相位角度的大小:
相位角度結果如下:
若我們想實作Gaussian smooth filter在頻域上,請給定一個D0再利用以下公式,產生一個Gaussian smooth filter
結果:
此filter設定的D0為20
再乘到我們傅立葉做完的每個點上,再利用以下公式做反傅立葉:
再從左上角取下結果圖,如下:
D0=20
比較:
左為原圖 右為D0=20的圖
若我們要在空間域實作Gaussian smooth filter,我們需先設定標準差及濾波器大小,在利用以下公式,產生一個Gaussian mask
然後實作在原圖上,即可得到結果如下:
此圖的標準差設為1.5 mask大小設為3*3
此圖的標準差設為1.5 mask大小設為5*5
會因為mask大小,邊緣會有些無法實作,因此我直接設為0,所以當mask size越大,黑色邊緣也會越大。
沒有留言:
張貼留言