Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Image processing 为什么FFT会加速卷积运算?_Image Processing_Signal Processing_Fft_Convolution - Fatal编程技术网

Image processing 为什么FFT会加速卷积运算?

Image processing 为什么FFT会加速卷积运算?,image-processing,signal-processing,fft,convolution,Image Processing,Signal Processing,Fft,Convolution,我看到很多文献,他们说通过使用fft可以得到更快的卷积。我知道需要从结果中得到fft和ifft,但我真的不明白为什么使用fft可以使卷积更快 FFT加速足够大的滤波器的卷积,因为卷积需要对每个输出样本进行N次乘法(和N-1次)加法,反之,对N个样本块进行(2)N^2次运算 考虑到必须通过加零将FFT处理的块大小加倍,每个块需要(2)*(2N)*log(2N)操作来执行FFT,2N操作来乘法,再4N*log(2N)操作来执行逆FFT,因此存在一个盈亏平衡点,其中8Nlog2N警告:FFT中的主要操

我看到很多文献,他们说通过使用fft可以得到更快的卷积。我知道需要从结果中得到fft和ifft,但我真的不明白为什么使用fft可以使卷积更快

FFT加速足够大的滤波器的卷积,因为卷积需要对每个输出样本进行N次乘法(和N-1次)加法,反之,对N个样本块进行(2)N^2次运算


考虑到必须通过加零将FFT处理的块大小加倍,每个块需要(2)*(2N)*log(2N)操作来执行FFT,2N操作来乘法,再4N*log(2N)操作来执行逆FFT,因此存在一个盈亏平衡点,其中8Nlog2N警告:FFT中的主要操作也很复杂(意味着一个复数乘法需要4个实数乘法和2个加法,或者3个乘法和5个加法加上Karatsuba分解)反正KNlog(kN)最终将小于N^2。那么,为什么fft空间中的计算成本小于时间,我的意思是,它使用的是更小的数据块还是其他东西?你所说的滤波器是什么意思?fft必须使用更大的块。-1.这个解释不完整、不正确且具有误导性。请参阅以获得更好的解释。@Akisuikonen,请阅读该链接。您已将所有内容折叠为N,这掩盖了真正的问题。在典型的图像过滤中,您有一个大图像,即WxW(使用该链接的术语)一个滤波器是KxK。这已经假设为平方。卷积中的FFT的好处是K相对于W的大小的函数。将所有值都压缩为N很简单,这就掩盖了真正的问题。事实上,matlab的conv2函数因此不使用FFT。在大多数图像滤波应用中,kFFT是fas如果卷积的内核是“大的”,那么它比直接卷积要大。这在程序员的SE问题中有解释