opencv-傅里叶变换

cv2.dft()cv2.idft() 是 OpenCV 中用于进行离散傅里叶变换(DFT)和逆离散傅里叶变换(IDFT)的函数。这些函数用于将图像从空间域转换到频率域以及从频率域转换回空间域。

cv2.dft()

dst = cv2.dft(src, flags=None, nonzeroRows=None)
  • src: 输入数组,可以是灰度图像或浮点型矩阵。
  • flags: 操作标志,可以是 cv2.DFT_COMPLEX_OUTPUT 表示输出结果为复数。
  • nonzeroRows: 可选参数,通常为 None

cv2.dft() 函数将输入数组进行离散傅里叶变换。

import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取灰度图像
img = cv2.imread(r"C:\Users\mzd\Desktop\opencv\2.jpg", cv2.IMREAD_GRAYSCALE)# 进行二维离散傅里叶变换
dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)# 将低频部分移到图像中心
dft_shift = np.fft.fftshift(dft)# 计算幅度谱
magnitude_spectrum = 20 * np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))# 显示原始图像和傅里叶变换后的幅度谱
plt.figure(figsize=(12, 6))plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.show()

在这里插入图片描述

cv2.idft()

dst = cv2.idft(src, flags=None, nonzeroRows=None)
  • src: 输入数组,可以是复数数组,通常为 cv2.dft() 的输出结果。
  • flags: 操作标志,可以是 cv2.DFT_SCALE 表示进行逆变换时对结果进行缩放。
  • nonzeroRows: 可选参数,通常为 None

cv2.idft() 函数将输入数组进行逆离散傅里叶变换,将频率域的结果转换回空间域。

import cv2
import numpy as np
import matplotlib.pyplot as plt# 生成一个简单的图像
img = np.zeros((100, 100), dtype=np.uint8)
img[30:70, 30:70] = 255# 进行二维离散傅里叶变换
dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)# 将低频部分移到图像中心
dft_shift = np.fft.fftshift(dft)# 进行逆离散傅里叶变换
idft = cv2.idft(dft_shift)# 取逆变换的实部
result_img = cv2.magnitude(idft[:, :, 0], idft[:, :, 1]).astype(np.uint8)# 显示原始图像、傅里叶变换后的频率域和逆变换结果
plt.figure(figsize=(12, 6))plt.subplot(131), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])plt.subplot(132), plt.imshow(np.log(1 + cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1])), cmap='gray')
plt.title('Magnitude Spectrum (Log)'), plt.xticks([]), plt.yticks([])plt.subplot(133), plt.imshow(result_img, cmap='gray')
plt.title('IDFT Result'), plt.xticks([]), plt.yticks([])plt.show()

在这里插入图片描述

在这个示例中,我们首先生成一个简单的图像,然后进行二维离散傅里叶变换。接着,通过逆离散傅里叶变换将频率域的结果转换回时域,最后绘制了原始图像、傅里叶变换后的频率域(以对数尺度表示)和逆变换的结果。逆离散傅里叶变换通常用于还原由傅里叶变换得到的频率域表示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/209466.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023亚太杯数学建模A题思路 - 采果机器人的图像识别技术

# 1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世 界上最大的苹果出口国,全球每两个苹果中就有一个,全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

HTML实现简易计算器

随便写的&#xff0c;可能有bug&#xff0c;可以在评论区指出哈。 HTML代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>AI简易计算器</title> </head> <body> <table id"c…

Modbus转Profinet网关:PLC与天信流量计通讯的经典案例

无论您是PLC或工业设备的制造商&#xff0c;还是工业自动化系统的维护人员&#xff0c;可能会遇到需要将不同协议的设备连接组合并通讯的情况&#xff0c;Modbus和Profinet是现代工业自动化中常见的两种通信协议&#xff0c;在工业控制领域中被广泛应用。 在这种情况绝大多数会…

利用Python进行数据分析:30万人都在看的畅销书,更新了!!!

利用Python进行数据分析 概述好书推荐升级特性pandas作译者简介主要变动 导读视频&#xff1a;收获写在末尾&#xff1a; 主页传送门&#xff1a;&#x1f4c0; 传送 概述 想学习python进行数据分析&#xff0c;这本《利用python进行数据分析》是绕不开的一本书。目前该书根据…

C#开发的OpenRA游戏之属性Selectable(9)

C#开发的OpenRA游戏之属性Selectable(9) 在游戏里,一个物品是否具有选中的能力,是通过添加属性Selectable来实现的。当一个物品不能被用户选取,那么就不要添加这个属性。 这个属性定义在下面这段描述里: ^Selectable: Selectable: SelectionDecorations: WithSpriteCon…

搜维尔科技:Faceware面部捕捉最佳实践!

视频源和分辨率&#xff1a; 我们的软件针对 RGB 彩色素材进行了优化&#xff0c;不支持使用红外摄像机。 我们建议视频分辨率为 720p 和 1080p。低于 720p 的分辨率可能会对跟踪质量产生负面影响&#xff0c;而高于 1080p 的分辨率会导致存储要求和传输时间增加&#xff0c;而…

3-合并区间

1题目描述 2思路 在合并区间之前&#xff0c;需要对所有的区间按照区间第一个元素进行排序&#xff0c;这样可以保证已经合并的各个区间之后不会再包含其他区间&#xff0c;或者被其他区间包含&#xff1b; 首先自己进行一下排序练习&#xff0c;回顾冒泡排序和选择排序&#…

MySql的数据类型和隐式转换

文章目录 一、数据类型1、数值类型1.1、整数类型1.2、浮点1.3、定点DECIMAL 2、时间类型2.1、日期和时间类型占用的存储空间2.2、日期和时间类型表示的范围2.3、日期和时间类型的零值表示 3、文本类型 二、隐式转换参考文章 一、数据类型 1、数值类型 1.1、整数类型 整数名称…

让SOLIDWORKS Composer动画在PPT中随意转换

SOLIDWORKS Composer作为一款易学易用的技术图解软件&#xff0c;非常适合用来给客户展示自己的产品。这里我们教大家如何将Composer文件插入大PPT中&#xff0c;并任意切换文件&#xff0c;用以给客户展示不用的方案和产品。 1.首先大家要安装SOLIDWORKS Composer Player 这个…

怎样通过代理ip提高上网速度

在当今互联网高度发达的时代&#xff0c;我们经常需要使用代理IP来隐藏自己的真实IP地址或提高网络连接速度。然而&#xff0c;有些用户可能会遇到代理IP无法提高网络速度的情况。那么&#xff0c;如何通过代理IP提高上网速度呢&#xff1f;以下是几个技巧&#xff1a; 1.选择…

【C语言】深入解开指针(四)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 ✏️真正相信奇迹的家伙&#xff0c;本身和奇迹一样了不起啊&#xff01; 欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;>希望看完我的文章对你有小小的帮助&am…

程序员最奔溃的瞬间

身为程序员哪一个瞬间让你最奔溃&#xff1f; *程序员最奔溃的瞬间&#xff0c; 勇士&#xff1f; or 无知&#xff1f;