這不是一個「編程」的問題。但我相信這是在這個社區廣爲人知和理解的東西。如何乘不同尺寸的兩個圖像的譜?
我有一個圖像,X,和一個更小的圖像,Y,我需要通過自己的FFT乘以卷積兩個。但由於它們的尺寸不一樣,我不知道如何進行頻域倍增。
我對x(這是一個整數矩陣的維數4096 x 4096)的(二維)FFT給出了頻域表示,X(這是一個複數矩陣,我認爲它是維是2048 x 2048)。同樣,我對y(這是一個尺寸爲64 x 64的整數矩陣)的二維FFT,給出了頻域表示,Y(這也是一個複數矩陣,我認爲它的尺寸是32 x 32)
我在Numerical Recipes中使用了fourn函數,所以我的輸入矩陣x和y必須摺疊成一維數組,它們被離散傅立葉變換X代替和Y.問題是,即使這是一個圖像的二維問題,我正在使用一維數組。
如果我試圖將兩個完全相同的圖像進行卷積,x和y。它都將是非常簡單的:
X = FFT(x)
Y = FFT(y)
Z = X * Y (term by term multiplication)
Convolution of x and y = IFFT(Z)
但是,如果X和Y是不同的長度,我該怎麼做乘法?
一種可能性是襯墊出y以具有相同的尺寸爲×。但是這似乎非常低效。另一種可能是填充Y具有與X相同的尺寸。但我不知道這在頻率空間中意味着什麼。
這是另一種提出這個問題的方法:如果我想使用FFT對兩幅尺寸非常不同的圖像進行卷積處理,以便我們可以對它們的光譜進行乘法運算(頻域表示),那麼我該如何進行乘法運算?
謝謝,
〜邁克爾。
你試圖用這種卷積做什麼?你想計算小圖像y在你的大圖像x上的二維卷積嗎?例如,如果您在大圖像x中搜索小片y,則可以使用卷積來實現y的相關搜索。在傅里葉域中它將更有效率。但是如果這是你的目標,你不會想把它們摺疊成1D。乘以x和y的譜的應用是什麼? – 2009-09-18 19:20:09