Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 频域卷积_Matlab_Gaussian_Convolution - Fatal编程技术网

Matlab 频域卷积

Matlab 频域卷积,matlab,gaussian,convolution,Matlab,Gaussian,Convolution,我只是偶然发现了这个问题,并试图通过实际测试来了解它的影响 考虑一个(nxn)高斯核。选择适当的方差进行计算 相同的。在频率范围内执行线性和循环卷积 在映像上具有此内核的域。你能说说这件事吗 结果如何 我尝试用以下代码在Matlab中实现上述功能 clc; close all; clear all; I = imread('my_face.jpg'); Irez = imresize(I,[512 512]); %resize image

我只是偶然发现了这个问题,并试图通过实际测试来了解它的影响

考虑一个(nxn)高斯核。选择适当的方差进行计算 相同的。在频率范围内执行线性和循环卷积 在映像上具有此内核的域。你能说说这件事吗 结果如何

我尝试用以下代码在Matlab中实现上述功能

     clc;
     close all;
     clear all;

     I = imread('my_face.jpg');
     Irez = imresize(I,[512 512]); %resize image
     figure(1);
     imshow(Irez);
     Irez = rgb2gray(Irez);

     M = 2*size(I,1)+1;
     N = 2*size(I,2)+1;

     Ifreq = fft2(I,M,N);
     gaus = fspecial('gaussian',5,0.7);

     Igaus = conv2(gaus,abs(Ifreq));
     Iface = real(ifft2(Igaus));
     Iout = Iface(1:size(I,1),1:size(I,2));
     figure(2)
     imshow(Iout);
我的问题是:

  • 我走对了吗?我在做问题期望我做的事吗?或者,我应该考虑或考虑高斯核的FFT或者在频域中具有相似的高斯核?请告诉我你们是否找到了实现这一目标的正确方法

  • 线性卷积的等价物是乘法。什么是循环卷积的等价物

  • 此外,上面的代码给了我以下错误:

    类型的输入参数的未定义函数或方法“conv2” “double”和属性“full 3d real”


    很明显,对于conv2的输入,两者都必须是双精度的。你能帮我实际解决这个问题吗?

    我觉得你在fspecial函数中提供了正确的参数。必须指定此函数中的列数和行数。我从matlab帮助中复制了以下行:

    h=fspecial('average',hsize)返回大小为hsize的平均滤波器h。参数hsize可以是指定h中的行数和列数的向量,也可以是标量,在这种情况下,h是一个方阵。hsize的默认值为[3]

    gaus = fspecial('gaussian', [M N],5,0.7);
    

    您可以在这里找到更多信息:

    您感到困惑了。看起来你正在对图像进行DFT,在“频域”中对其进行卷积,然后进行逆DFT。问题的关键在于表明“空间域”中的卷积可以在“频率域”中完成,但操作是不同的。要在“频域”中进行循环卷积,需要取图像和核的DFT,将它们的傅里叶系数元素相乘,然后取结果的逆DFT。这是一种(有时)更快的过滤方式。至少这是我对这个问题的解释。。。但这似乎有点不清楚…@jucestain你是对的。我必须考虑高斯和图像的DFT,并在频域中尝试卷积。你能详细告诉我怎么做吗?真的很抱歉再问你一次。