2012-10-18 46 views
4

我使用口罩和離散的傅立葉Trasform過濾的圖像,到現在我有這個傅立葉和零填充

A=double(imread('C:\Users\samsung\Documents\Lab Imagenes\CHE.jpg','jpg')); 
B=[1 4 6 4 1; 4 16 24 16 4; 6 24 36 24 6; 4 16 24 16 4; 1 4 6 4 1]; 
F=(1/256).*(B); 
DFT_A=fftshift(fft2(A)); 
imshow(DFT_A); 
DFT_A_F=DFT_A.*F; 
figure 
imshow(DFT_A_F) 

但是當我想看看我得到這個錯誤

??? Error using ==> times 
Matrix dimensions must agree. 

Error in ==> fourier1 at 10 
DFT_A_F=DFT_A.*F; 
部分結果

我知道我需要對面罩進行零填充,但我不知道該怎麼做,請幫助我 謝謝!

回答

2

你想要什麼叫「padarray」,只是在定義DFT_A:

padsize= [round(0.5*size(DFT_A,1)-0.5*size(F,1)) round(0.5*size(DFT_A,2)-0.5*size(F,2))]; 
F = padarray(F, padsize); 
DFT_A_F=DFT_A.*F; 
... 

但爲什麼你不只是(假設A是一個二維矩陣,所以如果需要rgb2gray它):

DFT_A_F = conv2(A,B,'same'); 

它更快,因爲你不需要乘以所有這些零,並應得到相同的結果。

+0

感謝您的幫助,這非常有幫助 – user1755076