使用scipy.fftpack时出现内存错误,如何避免?

3
我需要从一张.tiff医学图像中,在Python中计算傅里叶系数。代码会产生内存错误:
for filename in glob.iglob ('*.tif'):
        imgfourier = scipy.misc.imread (filename, flatten = True)
        image = numpy.array([imgfourier])#make an array 
         # Take the fourier transform of the image.
        F1 = fftpack.fft2(image)
         # Now shift so that low spatial frequencies are in the center.
        F2 = fftpack.fftshift(F1)
         # the 2D power spectrum is:
        psd2D = np.abs(F2)**2
        print psd2D

非常感谢您的帮助!谢谢


5
你的图像有多大,你又有多少内存? - tiago
1个回答

2

我找到了这个讨论,他们在scipy.fftpack中发现了内存泄漏,并建议使用numpy.fft包。此外,你还可以避免使用中间变量来节省内存:

import numpy as np
import glob
import scipy.misc
for filename in glob.iglob('*.tif'):
    imgfourier = scipy.misc.imread (filename, flatten = True)
    print np.abs(np.fft.fftshift(np.fft.fft2(np.array([imgfourier]))))**2

文件"C:\Python27\lib\site-packages\numpy\fft\fftpack.py",第75行,_raw_fft函数出现内存错误。 - KvasDub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接