python 图像的离散傅立叶变换实例


Posted in Python onJanuary 02, 2020

图像(MxN)的二维离散傅立叶变换可以将图像由空间域变换到频域中去,空间域中用x,y来表示空间坐标,频域由u,v来表示频率,二维离散傅立叶变换的公式如下:

python 图像的离散傅立叶变换实例

在python中,numpy库的fft模块有实现好了的二维离散傅立叶变换函数,函数是fft2,输入一张灰度图,输出经过二维离散傅立叶变换后的结果,但是具体实现并不是直接用上述公式,而是用快速傅立叶变换。结果需要通过使用abs求绝对值才可以进行可视化,但是视觉效果并不理想,因为傅立叶频谱范围很大,所以要用log对数变换来改善视觉效果。

在使用log函数的时候,要写成log(1 + x) 而不是直接用log(x),这是为了避开对0做对数处理。

另外,图像变换的原点需要移动到频域矩形的中心,所以要对fft2的结果使用fftshift函数。最后也可以使用log来改善可视化效果。

代码如下:

import numpy as np
import matplotlib.pyplot as plt

img = plt.imread('photo.jpg')

#根据公式转成灰度图
img = 0.2126 * img[:,:,0] + 0.7152 * img[:,:,1] + 0.0722 * img[:,:,2]

#显示原图
plt.subplot(231),plt.imshow(img,'gray'),plt.title('original')

#进行傅立叶变换,并显示结果
fft2 = np.fft.fft2(img)
plt.subplot(232),plt.imshow(np.abs(fft2),'gray'),plt.title('fft2')

#将图像变换的原点移动到频域矩形的中心,并显示效果
shift2center = np.fft.fftshift(fft2)
plt.subplot(233),plt.imshow(np.abs(shift2center),'gray'),plt.title('shift2center')

#对傅立叶变换的结果进行对数变换,并显示效果
log_fft2 = np.log(1 + np.abs(fft2))
plt.subplot(235),plt.imshow(log_fft2,'gray'),plt.title('log_fft2')

#对中心化后的结果进行对数变换,并显示结果
log_shift2center = np.log(1 + np.abs(shift2center))
plt.subplot(236),plt.imshow(log_shift2center,'gray'),plt.title('log_shift2center')

运行结果:

python 图像的离散傅立叶变换实例

python 图像的离散傅立叶变换实例

根据公式实现的二维离散傅立叶变换如下:

import numpy as np
import matplotlib.pyplot as plt
PI = 3.141591265
img = plt.imread('temp.jpg')

#根据公式转成灰度图
img = 0.2126 * img[:,:,0] + 0.7152 * img[:,:,1] + 0.0722 * img[:,:,2]

#显示原图
plt.subplot(131),plt.imshow(img,'gray'),plt.title('original')

#进行傅立叶变换,并显示结果
fft2 = np.fft.fft2(img)
log_fft2 = np.log(1 + np.abs(fft2))
plt.subplot(132),plt.imshow(log_fft2,'gray'),plt.title('log_fft2')

h , w = img.shape
#生成一个同样大小的复数矩阵
F = np.zeros([h,w],'complex128')
for u in range(h):
 for v in range(w):
  res = 0
  for x in range(h):
   for y in range(w):
    res += img[x,y] * np.exp(-1.j * 2 * PI * (u * x / h + v * y / w))
  F[u,v] = res
log_F = np.log(1 + np.abs(F))
plt.subplot(133),plt.imshow(log_F,'gray'),plt.title('log_F')

直接根据公式实现复杂度很高,因为是四重循环,时间复杂度为python 图像的离散傅立叶变换实例 ,所以实际用的时候需要用快速傅立叶变换来实现

以上这篇python 图像的离散傅立叶变换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
解决python "No module named pip" 的问题
Oct 13 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
Python语言异常处理测试过程解析
Jan 08 Python
python实现电子词典
Mar 03 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 #Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 #Python
pytorch实现onehot编码转为普通label标签
Jan 02 #Python
pytorch标签转onehot形式实例
Jan 02 #Python
Python socket聊天脚本代码实例
Jan 02 #Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 #Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 #Python
You might like
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
php正则表达式学习笔记
2015/11/13 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
深入Python函数编程的一些特性
2015/04/13 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python日志syslog使用原理详解
2020/02/18 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
五种Python转义表示法
2020/11/27 Python
python xlsxwriter模块的使用
2020/12/24 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
Gap工厂店:Gap Factory
2017/11/02 全球购物
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
linux下进程间通信的方式
2014/12/23 面试题
会计的岗位职责
2014/03/15 职场文书
《悯农》教学反思
2014/04/28 职场文书
党员目标管理责任书
2014/07/25 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
党员对照检查材料
2014/09/22 职场文书
中秋节寄语2015
2015/03/24 职场文书
产品调价通知函
2015/04/20 职场文书
法院答辩状格式
2015/05/22 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
Python实现为PDF去除水印的示例代码
2022/04/03 Python