2012-10-18 112 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