我尝试在python中对一个图像进行fft,改变转换后的图像并进行反向fft。具体地说,我有一张网格的图片,我想对它进行变换,然后将变换的中心、窄的垂直狭缝去掉,然后进行反向fft。在
我现在使用的代码,对于变换平面不做任何更改:
import os
os.chdir('/Users/terra/Desktop')
import Image, numpy
i = Image.open('grid.png')
i = i.convert('L') #convert to grayscale
a = numpy.asarray(i) # a is readonly
b = abs(numpy.fft.rfft2(a))
j = Image.fromarray(b)
j.save('grid2.png')
到目前为止,我收到一条错误消息:
回溯(最近一次呼叫): 文件“/Users/terra/Documents/pic2.py”,第11行,in j、 保存('grid2.png') 文件“/库/框架/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/图像.py“,第1439行,保存中 save_处理程序(self、fp、filename) 文件“/库/框架/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/PngImagePlugin.py“,第506行,in\u save raise IOError,“无法将模式%s写入PNG”%mode IOError:无法将模式F写入PNG
我对编程和傅立叶变换很陌生,所以我在网上找到的大多数相关线索都是我的头绪。非常具体的帮助非常感谢。谢谢!在
主要的问题是数组在FFT之后包含浮点,但是要使它对PNG输出有用,您需要有
uint8
s最简单的方法是直接将其转换为
uint8
:这可能无法生成所需的图像,因此在将数组中的值转换为整数之前,必须以某种方式对数组中的值进行规范化。在
相关问题 更多 >
编程相关推荐