【问题标题】:fourier and zero padding傅立叶和零填充
【发布时间】:2012-10-08 10:57:58
【问题描述】:

我正在使用蒙版和离散傅立叶变换过滤图像,直到现在我有这个

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;

我知道我需要对蒙版进行零填充,但我不知道该怎么做,我需要帮助 谢谢!

【问题讨论】:

    标签: image matlab filtering padding dft


    【解决方案1】:

    你想要的是 '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 是一个 2D 矩阵,所以如果需要的话 rgb2gray 它):

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

    它更快,因为您不需要将所有这些零相乘,并且应该得到相同的结果。

    【讨论】:

      猜你喜欢
      • 2017-02-02
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      相关资源
      最近更新 更多