加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – fft和array-to-image / image-to-array-conversion

发布时间:2020-12-20 12:16:34 所属栏目:Python 来源:网络整理
导读:我想对图像进行傅里叶变换. 但是如何将图片更改为数组呢? 在此之后,我想我应该使用numpy.fft.rfft2进行转换. 以及如何从阵列变回图像? 提前致谢. 解决方法 您可以使用 PIL库加载/保存图像并转换为numpy数组. import Image,numpyi = Image.open('img.png')i
我想对图像进行傅里叶变换.
但是如何将图片更改为数组呢?
在此之后,我想我应该使用numpy.fft.rfft2进行转换.
以及如何从阵列变回图像?
提前致谢.

解决方法

您可以使用 PIL库加载/保存图像并转换为numpy数组.

import Image,numpy
i = Image.open('img.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('img2.png')

我之前使用了abs,因为FFT的结果具有复杂的值,因此将其直接转换为图像并不合理.转换为灰度是为了使FFT仅在单个通道上完成 – 您可以选择另一种方式来选择通道,或者将正确的轴参数传递给rfft2,然后提取所需的通道.

编辑:

要执行逆FFT并返回原始图像,以下内容适用于我:

import Image,numpy
i = Image.open('img.png')
i = i.convert('L')    #convert to grayscale
a = numpy.asarray(i)

b = numpy.fft.rfft2(a)
c = numpy.fft.irfft2(b)

j = Image.fromarray(c.astype(numpy.uint8))
j.save('img2.png')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读