我查了一些網路上的內容以及查了書的一些東西
發現越來越搞混了@@
請版上的大大幫忙解惑!!感謝了
在wiki上查到 DFT(g)˙DFT(im)=DFT(g*im) 假設g為一gaussian function
然後我在書上看到 G=lpfilter('gaussian',M,N,sig)
(G在這裡應該算gaussian filtering in DFT domain,也就是G=DFT(g) )
接下來我就對image求他DFT I=fft2(im) (也就是I=DFT(im))
然後做 R = G.*I (做頻域對應項相乘)
然後在做 imshow(uint8(ifft2(R)) ) (把R轉回spatial domain後顯示出來)
這樣的結果的確沒錯
但是我在做的時候發現 我把 g=ifft2(G) 顯示出來得到的是
http://imgur.com/bPyqpGQ
但這讓我很疑惑 我們的gaussian function 不是應該是下面的圖
http://imgur.com/9taVtVQ
然後我這樣做的結果就會失敗 想知道原因
g=fspecial('gaussian',8,1);
G=fft2(g);
IM=fft2(im);
M=G.*IM;
imshow(uint8(ifft2(M)))
原圖可能是這樣
http://imgur.com/nmqBkUD
照書上的方法是這樣
http://imgur.com/NtFJuVs
而我自己做出來是這樣
http://imgur.com/Vh6Jp6o
從高斯圖是可以感覺到圖可能會變成類似這樣
但卻無法完全了解原因 會被切割成四項
而且要怎麼從一般的高斯函數求出要對DFT domain上對應項相乘的gaussian function
也就是從 g 求出 DFT(g)˙DFT(I)的DFT(g)
※ 引述《lance5487 ( )》之銘言:
: 若我對image(二維)作一高斯filter 的convolution
: 那在頻域上(我轉換到DFT domain上)相當於DFT(G#I)=DFT(G)*DFT(I) (#為convolution)
: BY wiki第一項公式 ( http://en.wikipedia.org/wiki/Convolution_theorem )
: 我現在想求出DFT(G#I),且是利用DFT(G)*DFT(I)
: 那我想問怎麼作 DFT(G) * DFT(I)的動作? 有相關的function嗎還是要如何實作?
: 因為假設我們現在做的dft是8*8的block好了 那它轉成dft上後就有64個basis
: 那雙方的係數要如何做整理?而兩個basis的coefficient相乘後會變到哪個basis的
: coefficient?我總感覺會跑到不是這64個basis上?可是他又是基底,怎麼會跑到一個
: 基底無法生成的地方?
: 總感覺我講的有點玄XDD 不知道大家懂我意思嗎??
: 請大家幫忙了,謝謝大家了。