我正在使用面具和Discret Fourier 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;
我知道我需要对面具进行零填充,但我不知道该怎么做,请我需要帮助 谢谢!
答案 0 :(得分:2)
您想要的是'padarray':
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是一个2D矩阵,那么rgb2gray如果需要的话):
DFT_A_F = conv2(A,B,'same');
它更快,因为你不需要将所有这些零相乘,并且应该得到相同的结果。