Python Windows下使用NumPy阵列对图像进行快速傅里叶变换时的内存错误
代码可以从我的Ubuntu 11.04上的Python Windows下使用NumPy阵列对图像进行快速傅里叶变换时的内存错误,python,windows,numpy,fft,Python,Windows,Numpy,Fft,代码可以从我的Ubuntu 11.04上的.tiff图像计算傅里叶变换。在Windows XP上,它会产生内存错误。改变什么?多谢各位 def fouriertransform(result): #function for Fourier transform computation for filename in glob.iglob ('*.tif') imgfourier = scipy.misc.imread(filename) #read the imag
.tiff
图像计算傅里叶变换。在Windows XP上,它会产生内存错误。改变什么?多谢各位
def fouriertransform(result): #function for Fourier transform computation
for filename in glob.iglob ('*.tif')
imgfourier = scipy.misc.imread(filename) #read the image
arrayfourier = numpy.array([imgfourier])#make an array
# Take the fourier transform of the image.
F1 = fftpack.fft2(arrayfourier)
# 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
L = psd2D
np.set_printoptions(threshold=3)
#np.set_printoptions(precision = 3, threshold = None, edgeitems = None, linewidth = 3, suppress = True, nanstr = None, infstr = None, formatter = None)
for subarray in L:
for array in subarray:
for array in subarray:
for elem in array:
print '%3.10f\n' % elem
错误输出为:
Traceback (most recent call last):
File "C:\Documents and Settings\HrenMudak\Мои документы\Моя музыка\fourier.py", line 27, in <module>
F1 = fftpack.fft2(arrayfourier)
File "C:\Python27\lib\site-packages\scipy\fftpack\basic.py", line 571, in fft2
return fftn(x,shape,axes,overwrite_x)
File "C:\Python27\lib\site-packages\scipy\fftpack\basic.py", line 521, in fftn
return _raw_fftn_dispatch(x, shape, axes, overwrite_x, 1)
File "C:\Python27\lib\site-packages\scipy\fftpack\basic.py", line 535, in _raw_fftn_dispatch
return _raw_fftnd(tmp,shape,axes,direction,overwrite_x,work_function)
File "C:\Python27\lib\site-packages\scipy\fftpack\basic.py", line 463, in _raw_fftnd
x, copy_made = _fix_shape(x, s[i], waxes[i])
File "C:\Python27\lib\site-packages\scipy\fftpack\basic.py", line 134, in _fix_shape
z = zeros(s,x.dtype.char)
MemoryError
回溯(最近一次呼叫最后一次):
文件“C:\Documents and Settings\HrenMudak\Мзззззе\fourier.py”,第27行,in
F1=fftpack.fft2(阵列浏览器)
文件“C:\Python27\lib\site packages\scipy\fftpack\basic.py”,第571行,在fft2中
返回fftn(x、形状、轴、覆盖x)
文件“C:\Python27\lib\site packages\scipy\fftpack\basic.py”,第521行,在fftn中
返回原始fftn调度(x,形状,轴,覆盖x,1)
文件“C:\Python27\lib\site packages\scipy\fftpack\basic.py”,第535行,在原始fftn中
返回原始fftnd(tmp、形状、轴、方向、覆盖x、工作功能)
文件“C:\Python27\lib\site packages\scipy\fftpack\basic.py”,第463行,在\u raw\u fftnd中
x、 复制=固定形状(x,s[i],蜡[i])
文件“C:\Python27\lib\site packages\scipy\fftpack\basic.py”,第134行,形状为“fix”
z=零(s,x.dtype.char)
记忆者
我尝试运行您的代码,但我用函数替换了mahotas.imread
,因为我没有该库,无法重现您的错误
还有一些评论:
- 您能否尝试使用
功能而不是scipy.misc.imread
功能?我想问题可能就在那里mahotas
- 抛出的实际异常是什么?(+其他输出?)
- 你的形象有多大尺寸?灰度/RGB?打印大图像的所有值确实会占用相当多的内存,因此最好使用matplotlibs
函数将结果可视化imshow
print imgfourier.shape
此外,您可以尝试使用imread中的flatten=True
选项:imgfourier=imread(filename,flatte=True)#读取图像
谢谢,图像是90 MB。tiff(使用IrphanView合并其中10个图像)我为scipy.misc.imread函数设置flatten=True,出现相同的内存错误,Thanks90MB tiff图像看起来相当大;可能是imread
功能不适合处理如此大的图像。你说它是从其他10张图片中合并出来的是什么意思?您是否有机会尝试阅读3d(医学)图像卷?您是否也可以在另一个tif图像上测试您的代码?