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
Numpy 为什么np.fft.fft2的计算取决于图像的形状?_Numpy_Image Processing_Fft - Fatal编程技术网

Numpy 为什么np.fft.fft2的计算取决于图像的形状?

Numpy 为什么np.fft.fft2的计算取决于图像的形状?,numpy,image-processing,fft,Numpy,Image Processing,Fft,我在计算不同大小的图像缓冲区的二维fft。我注意到,对于某些形状,计算时间会突然增加 我正在使用python 3.7和numpy 1.16.0。我还尝试了pyfftw,但问题没有出现 下面是一个代码示例,强调了我在numpy方面的问题: 将numpy导入为np 导入时间 假图像=np.ones((10008192)) 对于范围内的i(200700,50): 裁剪=假图像[:,i:] 开始=时间。时间() res_scipak=np.fft.fft2(裁剪) end=time.time() 打印(

我在计算不同大小的图像缓冲区的二维fft。我注意到,对于某些形状,计算时间会突然增加

我正在使用python 3.7和numpy 1.16.0。我还尝试了pyfftw,但问题没有出现

下面是一个代码示例,强调了我在numpy方面的问题:

将numpy导入为np
导入时间
假图像=np.ones((10008192))
对于范围内的i(200700,50):
裁剪=假图像[:,i:]
开始=时间。时间()
res_scipak=np.fft.fft2(裁剪)
end=time.time()
打印(f“{i}:{end-start}”)
我得到以下结果:

200: 0.8815453052520752
250: 0.8947739601135254
300: 16.496759176254272
350: 9.420636177062988
400: 4.677924156188965
450: 1.1415870189666748
500: 4.911479711532593
550: 29.64967179298401
600: 1.1793103218078613
650: 3.6275839805603027

实际上,当列的数量减少时,我希望看到计算时间减少。

fft在考虑小素数的大小时效果最好。考虑到这一点,将您的观察结果与:

import sympy

for i in range(200,700,50):
    print(i,sympy.primefactors(8192-i))

200 [2, 3, 37]
250 [2, 11, 19]
300 [2, 1973]
350 [2, 3, 1307]
400 [2, 487]
450 [2, 7, 79]
500 [2, 3, 641]
550 [2, 3821]
600 [2, 13, 73]
650 [2, 3, 419]
为什么它不适用于pyfftw?例如,有一些处理大素数的方法,看起来很简单