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中的socket模块使用代理实例
May 29 Python
深入理解Python变量与常量
Jun 02 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
PyQt5每天必学之单行文本框
Apr 19 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
Python类反射机制使用实例解析
Dec 30 Python
python多进程使用函数封装实例
May 02 Python
Python变量格式化输出实现原理解析
Aug 06 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
PHP strtotime函数详解
2009/12/18 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
基于jquery的tab切换 js原理
2010/04/01 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
关于毕业的中学校园广播稿
2014/01/26 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
财务负责人岗位职责
2015/02/03 职场文书
小学新教师个人总结
2015/02/05 职场文书
大连星海广场导游词
2015/02/10 职场文书
电影开国大典观后感
2015/06/04 职场文书