Python +OpenCV CH15:傅里叶变换

本文深入探讨了傅里叶变换的基础理论,并使用Python的numpy库和OpenCV实现了傅里叶变换及其逆变换。介绍了如何进行高通和低通滤波,展示了在频域处理图像以实现特定目的,如边缘检测和图像模糊。
摘要由CSDN通过智能技术生成

1 傅里叶变换

1.1 基础理论

在这里插入图片描述

  • 相位 : 不是同时开始的一组余弦函数,在叠加时需要体现开始时间

  • 注意问题
    ・对象是二值图像.所以需预先进行阈值分割,或者边缘检测
    ・寻找轮廓需要更改原始图像,因此需对原图做出拷贝
    ・OpenCV中,是从黑色背景中寻找白色对象.

1.2在numpy中实现傅里叶变换

1.2.1 傅里叶变换numpy.fft.fft2函数
  • 实现傅里叶变换, 返回一个复数数组(complex ndarray)
    在这里插入图片描述

其中,参数:
・image – 输入图像;
・mode – 轮廓的检索模式;
  →cv2.RETR_EXTERNAL 只检测外轮廓
  →cv2.RETR_LIST 检测的轮廓不建立等级关系
  →cv2.RETR_CCOMP 建立两个等级的轮廓,上一层为外边界,内层为内孔的

1.2.2 边角到中心numpy.fft.fftshift函数
  • 将零频率分量移到频谱中心
    在这里插入图片描述
1.2.3 去掉负数20*np.log(np.abs(fshift))函数
  • 返回的结果是双通道的(实部,虚部),映射到[0,255]区间才能展示
    ・先对频谱图像(fshift)计算绝对值, 求对数, 再*20
    在这里插入图片描述
1.2.2 代码示例
  • 代码
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread("image\\lena.bmp",0)
f = np.fft.fft2(img)
fshift=np.fft.fftshift(f)
result=20*np.log(np.abs(fshift)
plt.subplot(121), plt.imshow(img,cmap='gray'),plt.title('original'),plt.axis('off')
plt.subplot(122), plt.imshow(result,cmap='gray'),plt.title('result'),plt.axis('off')
plt.show()
  • 示例结果(原图,频谱图)
    在这里插入图片描述
  • 注意
    ・傅里叶变换得到低频,高频信息,分别做针对处理能实现不同目的;
    ・傅里叶变换是可逆的,图像经过傅里叶变换,逆傅里叶变换后,能恢复到原图;
    ・在频域对图像进行处理,会反映在逆变换图像上;

1.3 numpy实现逆傅里叶变换

  • 对原始图像进行傅里叶变换得到的低频和高频进行处理,再恢复到原始图像上
  • 低频: 主要是细节信息. 低通后的图像,因为去掉了高频的边界信息,会显得模糊
  • 高频: 主要是边界信息. 高通后的图像,会保留边界,但丢失细节, 图像对比度也会变化

在这里插入图片描述

1.3.1 逆变换函数 numpy.fft.ifft2
  • 实现傅里叶逆变换,得到一个复数数组
1.3.2 中心到边角 numpy.fft.ifftshift
  • fftshift函数的逆函数
1.3.2 复数转换np.abs
  • 同傅里叶变化时的转换
    cv2.dft()。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread("image\\lena.bmp",0)
f = np.fft.fft2(img)#傅里叶变换
fshift = np.fft.fftshift(f)#低频部分左上角移到中央

ishift = np.fft.ifftshift(fshift)#低频部分中央移到左上角
iimg = np.fft.ifft2(ishift)#逆傅里叶变换
iimg = np.abs(iimg)

plt.su
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值