OpenCV实现图像傅里叶变换

news2024/11/17 14:18:49

傅里叶变换

dft=cv.dft(img_float32,flags=cv.DFT_COMPLEX_OUTPUT):

flags:标志位,指定变换类型,cv.DFT_COMPLEX_OUTPUT会返回复数结果。

傅立叶变换,将输入的图像从空间域转换到频率域。

返回结果: 此函数返回一个复杂数值数组,即傅立叶变换的结果。

对于每个像素位置,结果数组中包含两个值:一个实部和一个虚部,这两个值共同构成了一个复数。如果输入的图像是灰度图像,那么结果就是一个二维复数数组。如果输入的是彩色图像,那么结果就是三个二维复数数组(对应于RGB三个通道)。

dft_shift=np.fft.fftshift(dft):

傅立叶变换的结果进行中心移位。在傅立叶变换中,频率是按照从低到高的顺序排列的而在图像中,我们通常更关注中心部分的频率,因此需要将零频率分量(直流分量)移动到频谱的中央。此外,这个函数也用于将频率域的坐标移动到以中心为原点的参考点。

magnitude_spectrum=20*np.log(cv.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))

dft_shift[:,:,0] 和 dft_shift[:,:,1],这是两个来自前面傅立叶变换步骤的结果,分别代表了傅立叶变换后的实部和虚部计算傅立叶变换结果的幅度谱。20*np.log() 对这个幅度进行对数转换并乘以20,得到的结果就是振幅谱。

import numpy as np
import cv2 as cv
import matplotlib.pyplot  as plt
img =cv.imread("../Lena.png",0)
img_float32=np.float32(img)
dft=cv.dft(img_float32,flags=cv.DFT_COMPLEX_OUTPUT)
dft_shift=np.fft.fftshift(dft)


magnitude_spectrum=20*np.log(cv.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))

plt.subplot(121) 
plt.imshow(img,cmap="gray")
plt.title("Input Image")
plt.xticks([]),plt.yticks([])
plt.subplot(122)
plt.imshow(magnitude_spectrum,cmap="gray")
plt.title("Magnitude Spectrum")
plt.xticks([]),plt.yticks([])
plt.show()

低通滤波和高斯滤波

滤波:

低通滤波器:保留低频,使图片模糊

高通滤波器:保留高频,是图片细节增强

低通滤波:

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img=cv.imread("../Lena.png",0)
img_float=np.float32(img)

dft=cv.dft(img_float,flags=cv.DFT_COMPLEX_OUTPUT)
dft_shift=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

#IDFT
fshift=dft_shift*mask
f_ishift=np.fft.ifftshift(fshift)
img_back=cv.idft(f_ishift)
img_back=cv.magnitude(img_back[:,:,0],img_back[:,:,1])


plt.subplot(121) 
plt.imshow(img,cmap="gray")
plt.title("Input Image")
plt.xticks([]),plt.yticks([])
plt.subplot(122)
plt.imshow(img_back,cmap="gray")
plt.title("Result")
plt.xticks([]),plt.yticks([])
plt.show()

 

高通滤波

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img=cv.imread("../Lena.png",0)
img_float=np.float32(img)

dft=cv.dft(img_float,flags=cv.DFT_COMPLEX_OUTPUT)
dft_shift=np.fft.fftshift(dft)


rows,cols=img.shape
crow,ccol=int(rows/2),int(cols/2)  #中心位置

#高通滤波
mask=np.ones((rows,cols,2),np.uint8)
mask[crow-30:crow+30,ccol-30:ccol+30]=0


#IDFT
fshift=dft_shift*mask
f_ishift=np.fft.ifftshift(fshift)
img_back=cv.idft(f_ishift)
img_back=cv.magnitude(img_back[:,:,0],img_back[:,:,1])


plt.subplot(121) 
plt.imshow(img,cmap="gray")
plt.title("Input Image")
plt.xticks([]),plt.yticks([])
plt.subplot(122)
plt.imshow(img_back,cmap="gray")
plt.title("Result")
plt.xticks([]),plt.yticks([])
plt.show()

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多尺度retinex图像去雾算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(pwd)); rng(default)img_in im2doub…

Android 10.0 framework层实现app默认全屏显示

1.前言 在10.0的系统开发中,在对于第三方app全屏显示的功能需求开发中,需要默认app全屏显示,针对这一个要求,就需要在系统启动app 的过程中,在绘制app阶段就设置全屏属性,接下来就实现这个功能 效果图如下: 2.framework层实现app默认全屏显示的核心类 frameworks\base\…

Webapck 解决:[webpack-cli] Error: Cannot find module ‘vue-loader/lib/plugin‘ 的问题

1、问题描述: 其一、报错为: [webpack-cli] Error: Cannot find module vue-loader/lib/plugin 中文为: [webpack-cli] 错误:找不到模块“vue-loader/lib/plugin” 其二、问题描述为: 在项目打包的时候 npm run …

gitbook使用

文章目录 前言一、安裝Node.js:二、安裝GitBook:編輯和創建內容:安装typora 前言 ubuntu20.04系统 一、安裝Node.js: 打開終端機(Terminal)。 使用以下命令來安裝Node.js和npm(Node.js的包管…

大数据笔记-大数据处理流程

大家对大数据处理流程大体上认识差不多,具体做起来可能细节各不相同,一幅简单的大数据处理流程图如下: 1)数据采集:数据采集是大数据处理的第一步。 数据采集面对的数据来源是多种多样的,包括各种传感器、社…

UGUI交互组件Slider

一.Slider对象的结构 对象介绍Slider附加Slider组件Background背景Fill Area填充范围Fill填充对象Handle Slider Area滑块移动范围Handle滑块 二.Slider组件属性 属性说明Fill Rect关联填充对象Handle Rect关联滑块对象Direction设置方向Min Value最大取值Max Value最小取值Wh…

Python高效实现网站数据挖掘

在当今互联网时代,SEO对于网站的成功至关重要。而Python爬虫作为一种强大的工具,为网站SEO带来了革命性的改变。通过利用Python爬虫,我们可以高效地实现网站数据挖掘和关键词分析,从而优化网站的SEO策略。本文将为您详细介绍如何利…

用例图 UML从入门到放弃系列之三

1.说明 关于用例图,这篇文章我将直接照搬罗伯特.C.马丁老爷子在《敏捷开发》一书种的第17章,并配上自己的理解,因为这一章写的实在是太精彩了,希望能够分享给大家,共勉。以下是老爷子的原文中文翻译以及豆芽的个人解读…

迁移学习--预训练微调

目录 1、迁移学习作用 2、迁移学习的途径 3、相关的领域 4、在计算机视觉中的应用 5、迁移学习的办法 预训练模型 微调 6、总结 1、迁移学习作用 定义:能在一个任务学习一个模型,然后用来解决相关的别的任务,这样我们在一个地方花…

鸿运主动安全云平台任意文件下载漏洞

一、漏洞描述 深圳市强鸿电子有限公司鸿运主动安全云平台存在任意文件下载漏洞,攻击者可通过此漏洞下载敏感文件信息,获取数据库账号密码,从而为下一步攻击做准备。 二、网络空间搜索引擎查询 fofa查询 body"./open/webApi.html"…

排序算法-插入排序法(InsertSort)

排序算法-插入排序法(InsertSort) 1、说明 插入排序法是将数组中的元素逐一与已排序好的数据进行比较,先将前两个元素排序好,再将第三个元素插入适当的位置,也就是说这三个元素仍然是已排序好的,接着将第…

bootz启动 Linux内核过程总结

一. bootz启动Linux uboot 启动 Linux内核使用bootz命令。当然还有其它的启动命令,例如,bootm命令等等。 前面几篇文章分析 bootz命令启动 Linux内核的过程中涉及的几个重要函数。 bootz启动 Linux内核过程中涉及的全局变量images_凌肖战的博客-CSDN博…

3d tiles规范boundingVolume属性学习

3d tiles的瓦片(Tiles)包含一些属性,其中第一项是boundingVolume;下面学习boundingVolume; boundingVolume,这个翻译为边界范围框,如果直译为边界体积可能有问题,其实就是包围盒的意…

Matlab提取colormap

文章目录 简介Matlab代码 简介 使用Maltab依据截取的图片信息,提取colormap,供保存使用 Matlab代码 提取函数 function colormap_outExtract_Colormap(inputfig, colormapsize)% Creat a colormap array from the input figure. % The figure is a c…

虹科科技 | 探索CAN通信世界:PCAN-Explorer 6软件的功能与应用

CAN(Controller Area Network)总线是一种广泛应用于汽车和工业领域的通信协议,用于实时数据传输和设备之间的通信。而虹科的PCAN-Explorer 6软件是一款功能强大的CAN总线分析工具,为开发人员提供了丰富的功能和灵活性。本文将重点…

刷题用到的非常有用的函数c++(持续更新)

阅读导航 字符串处理类一、stoi()(将字符串转换为整数类型)二、to_string()(将整数类型转换为字符串类型)三、stringstream函数(将一个字符串按照指定的分隔符进行分词) 字符串处理类 一、stoi()&#xff…

ChatGPT AIGC 高效办公自动化案例

根据业务员姓名查找对应月份的科目成绩。 我们让ChatGPT AIGC来完成Excel公式。 Prompt:有一个表格A列为姓名,B列为语文,C列为数学,请根据J2单元格的姓名 ,查找出对应的数学成绩,请写出函数来完成 将生成的vlookup函数公式=VLOOKUP(J2, A:C, 3, FALSE)复制到表格中进行验…

[开源]基于流程编排的自动化测试工具,插件驱动,测试无限可能

一、开源项目简介 流程编排,插件驱动,测试无限可能 一款基于流程编排的自动化测试工具 二、开源协议 使用Apache-2.0开源协议 三、界面展示 四、功能概述 在软件开发旅程中,测试流程的管理和执行常常是复杂且耗时的挑战。传统测试工具主…

c++ 类的特殊成员函数:移动构造函数(五)

1. 简介 移动构造函数是C11中的新特性,它允许对象通过移动而不是复制来传递和初始化。移动构造函数通常用于提高性能,因为它避免了不必要的复制操作,特别是当处理大型对象或使用动态内存分配时。 2. 来源 当拷贝构造函数出现函数返回值 &a…

kafka广播消费组停机后未删除优化

背景 kafka广播消息的时候为了保证groupId不重复,再创建的时间采用前缀时间戳的形式,这样可以保证每次启动的时候是创建的新的,但是 会出现一个问题:就是每次停机或者重启都会新建一个应用实例,关闭应用后并不会删除…