美文网首页
OpenCV实现傅里叶变换

OpenCV实现傅里叶变换

作者: 大龙10 | 来源:发表于2021-11-17 07:11 被阅读0次

《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05

第14章 傅里叶变换

14.3 OpenCV实现傅里叶变换

  OpenCV提供了函数cv2.dft()和cv2.idft()来实现傅里叶变换和逆傅里叶变换.

14.3.1 实现傅里叶变换

  函数cv2.dft()的语法格式为:返回结果=cv2.dft(原始图像,转换标识)

  函数cv2.dft()返回的值是双通道的,第1个通道是结果的实数部分,第2个通道是结果的虚数部分。

14.3.2 实现逆傅里叶变换

  在OpenCV中,使用函数cv2.idft()实现逆傅里叶变换,该函数是傅里叶变换函数cv2.dft()的逆函数。

14.3.3 低通滤波示例

  前面讲过,在一幅图像内,低频信号对应图像内变化缓慢的灰度分量。例如,在一幅大草原的图像中,低频信号对应着颜色趋于一致的广袤草原。低通滤波器让高频信号衰减而让低频信号通过,图像进行低通滤波后会变模糊。

【例14.6】使用函数cv2.dft()对图像进行傅里叶变换,得到其频谱图像。
然后,在频域内将其高频分量的值处理为0,实现低通滤波。
最后,对图像进行逆傅里叶变换,得到恢复的原始图像。
观察傅里叶变换前后图像的差异。

import numpy as np
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('image\\lena.bmp',0)
dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT)
dftShift = np.fft.fftshift(dft)
rows, cols = img.shape
crow,ccol = int(rows/2) , int(cols/2)
mask = np.zeros((rows,cols,2),np.uint8)
#两个通道,与频谱图像匹配
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
fShift = dftShift*mask
ishift = np.fft.ifftshift(fShift)
iImg = cv2.idft(ishift)
iImg= cv2.magnitude(iImg[:,:,0],iImg[:,:,1])
plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('original'), plt.axis('off')
plt.subplot(122),plt.imshow(iImg, cmap = 'gray')
plt.title('result'), plt.axis('off')
plt.show()
图14-19 傅里叶变换前后的对比图

运行上述代码,得到如图14-19所示的结果,左图为原始图像,右图为变换后的图像。可以看到,经过低通滤波后,图像的边缘信息被削弱了。

相关文章

  • cv2实现傅里叶变换---OpenCV-Python开发指南(3

    前言 在前一篇的博文中,我们详细讲解了傅里叶变换的原理以及使用Numpy库实现傅里叶变换。但是其实OpenCV有直...

  • OpenCV实现傅里叶变换

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第1...

  • openCV:傅里叶变换

    傅里叶变换 概念 https://zhuanlan.zhihu.com/p/19763358 傅里叶变换的作用 高...

  • OpenCV离散傅里叶变换

    离散傅里叶变换 作用:得到图像中几何结构信息 结论:傅里叶变换后的白色部分(即幅度较大的低频部分),表示的是图像中...

  • OpenCV--傅里叶变换

    我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班。。。以时间为参照就是时域分析。...

  • OpenCV 离散傅里叶变换

    离散傅里叶变换(DFT) 定义 离散傅里叶变换(Discrete Fourier Transform,缩写为DFT...

  • Scipy

    通过傅里叶变换实现图片降噪 scipy.fftpack模块用来计算快速傅里叶变换速度比传统傅里叶变换更快,是对之前...

  • opencv-python傅里叶变换

    具体参考https://segmentfault.com/a/1190000015679127

  • OpenCV+Python 频域分析

    参考: opencv-python官方文档《刚萨雷斯数字图像处理(MATLAB版)》 图像处理中的傅里叶变换 二维...

  • C++ opencv-3.4.1 图片矫正

    对于倾斜的图片通过矫正可以得到水平的图片。一般有如下几种基于opencv的组合方式进行图片矫正。 傅里叶变换 + ...

网友评论

      本文标题:OpenCV实现傅里叶变换

      本文链接:https://www.haomeiwen.com/subject/gowuzltx.html