离散傅里叶变换手工实现

news/2024/5/2 9:58:13/文章来源:https://www.cnblogs.com/ryuta/p/16724611.html

离散傅里叶变换手工实现

import numpy as np
import matplotlib.pyplot as plt
import cv2
f = [[4,6],[2,9]]
F = np.complex64(f)
def dft(img,N):W = np.zeros((N,N),dtype=np.complex64)for x in range(N):for y in range(N):W[x][y] = ((np.cos(2*np.pi/N))-(np.sin(2*np.pi/N)*1j))**(x*y) #计算excp(-2πjxy/N) = (cos(2π/N)-jsin(2π/N))^(xy)return W@img@WF = dft(F,2)
i = F.imag
r = F.real
print(F)
F = np.abs(F) #求模即频谱
plt.subplot(121)
plt.title("spatial")
plt.imshow(f,"gray")
plt.subplot(122)
plt.title("frequency")
plt.imshow(F,cmap="gray")
plt.show()
[[21.+0.0000000e+00j -9.-1.8369703e-15j][-1.-1.3471115e-15j  5.+1.2246468e-15j]]

与opencv中的dft对比

在上一文中使用dft后并未进行取模操作,所以最终结果并不是频域,仅仅是取了结果的实部,现已纠正

f = [[4,6],[2,9]]
f = np.float64(f)
F =  cv2.dft(f,flags=cv2.DFT_COMPLEX_OUTPUT)
fr = np.zeros((2,2),np.complex64)
for i in range(2):for k in range(2):for l in range(2):fr[i][k] = F[i][k][0] + F[i][k][1]*1j
fr = np.abs(fr)
plt.subplot(121)
plt.title("spatial")
plt.imshow(f,"gray")
plt.subplot(122)
plt.title("frequency")
plt.imshow(fr,cmap="gray")
plt.show()

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

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

相关文章

Gorm笔记

package mainimport ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" )// UserInfo 用户信息 type UserInfo struct {ID uintName stringGender stringHobby string }func main() {db, err : gorm.Open("mysql&q…

软件工程毕设选题 SSM电影院在线售票系统(含源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 开发环境3.3 系统流程3.3.1 系统开发流程3.3.2 用户登录流程3.3.3 系统操作流程3.4 系统结构设计4 项目获取1 项目简介 Hi,各位同学好呀,这里是M学姐! 今天向大家分享一个今…

VSCode远程开发LiveShare等

资料 https://blog.csdn.net/yh0503/article/details/89851899 VScode Remote 远程开发与调试 在 Visual Studio Code 中安装并登录到 Live Share Disconnected from host when reload a page on a shared server #497 coder/code-server 推荐 10 个你可能没见过的 VsCode 的高…

迭代法求解线性方程组(优于高斯消元法)

在学习了直接法求解线性方程组之后,我们会发现,直接法利用高斯消元法求解,计算量较大(O(n3时间复杂度))(因为高斯消元法需要将每个元素都要考虑进去)其次.无法利用矩阵的稀疏性(0元素…

Windows公网SSH远程公司内网linux

SSH(Secure Shell)是用于登录远程系统的协议,也是目前最流行的远程连接Linux服务器的协议,默认SSH在端口22上运行。 而linux服务器下一般都会安装ssh服务,可以建立安全的远程连接。当我们在外而临时有事需要远程公司内…

[数据结构]-玩转八大排序(二)冒泡排序快速排序

前言 作者:小蜗牛向前冲 名言:我可以接收失败,但我不能接收放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一 冒泡排…

无刷电机驱动板开发,加速无刷时代前进步伐

无刷电机是由电机主体和电机驱动板组成的一种没有电刷和换向器的机电一体化产品。随着控制板的应用场景逐渐丰富,控制板开发技术日益增强,目前无刷电机的发展方向,首先就是对无刷电机驱动板的开发。 无刷电机的优点非常的多,其中最…

Nginx系列之请求处理的11个阶段(下)

上篇博客介绍了PostRead阶段涉及的模块的作用,此篇博客将介绍剩余阶段所涉及的模块作用 Preaccess阶段的limit_conn和limit_req模块 限速(rate limiting)是NGINX中一个非常有用的特性,可以用它来限制在一段时间内的HTTP请求数量…

慢查询 MySQL 定位优化技巧,从10s优化到300ms

1.如何定位并优化慢查询SQL? 一般有3个思考方向 1.根据慢日志定位慢查询sql 2.使用explain等工具分析sql执行计划 3.修改sql或者尽量让sql走索引 2.如何使用慢查询日志? 先给出步骤,后面说明 有3个步骤 1.开启慢查询日志 首先开启慢查询…

office project【图文详解】

Office Project是一款全面实用的项目管理软件。 Office Project2021正式版来自推出的项目管理软件。最新版本的Microsoft Office Project2021软件拥有最简单的项目管理方法,用户可以根据每个人的工作情况轻松分配工作量和项目执行时间。Project 安装包各个版本 htt…

(附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740

摘 要 本文介绍了使用PHPMySQL数据库和微信应用为儿童艺术学校实现教育应用的过程。本文介绍的教育应用是为儿童艺术学校设计的,这意味着该系统可用于教授儿童艺术和艺术视频。该系统的主要功能是可以将儿童艺术教育的线下方式转变为线上,从教育机构的角…

微信小程序组件介绍

组件view 普通视图区域 类似于html中的div是一个块级元素 .wxml代码 <view class"container1" ><view>温度</view><view>湿度</view> <view>光照强度</view> </view> .wxss代码—— .container1 view{width: 100…

linux 内存管理

用户空间与内核空间 人间还是仙界&#xff1f;聊一聊linux系统的用户空间和内核空间 以32 位Linux系统为例&#xff0c;虚拟地址的大小是4GB (0x0000_0000 ~ 0xffff_ffff)。 Linux 用户空间和 内核空间的大小可以通过设置宏 PAGE_OFFSET 来配置&#xff0c;默认PAGE_OFFSET 0…

Oracle数据库中的包(七)

目录 1.Oracle中包 2.包的创建 &#xff08;1&#xff09;可视化方式创建包 &#xff08;2&#xff09;以命令方式创建包 ①创建包头 ②创建包体 ③删除包 3.包的初始化 4.重载 ①相关概念和注意事项 ②系统内置的包 Oracle学习的相关知识点&#xff08;汇总&#x…

UGeek大咖说 | 直播预告:顺丰高难度可观测性压测实践与应用

本月「UGeek大咖说-大厂可观测」又双叒……来和大家见面了&#xff01;本期大咖说特邀到顺丰科技应用架构高级工程师——李卓做客直播间&#xff0c;用实际案例带我们一起剖析大型复杂系统下可观测性在全链路压测中的落地实践。 往期大咖说我们对可观测性做了很多诠释和分享&a…

2022安徽省赛赛题——B-2任务二:流量分析

有题有环境有解析,要的私我,勿喷! B-2任务二:流量分析 *任务说明:仅能获取Server2的IP地址 1.使用Wireshark查看并分析Server2桌面下的capture.pcapng数据包文件,找出黑客获取到的可成功登录目标服务器Telnet服务的账号密码,并将黑客获取到的账号密码作为Flag值(用户…

开创性的区块链操作系统项目——去中心化簿订单交易所

关于区块链操作系统上的 Web2 和 Web3 先驱系列今天向大家介绍来自Dakai的 Peter、Laszlo 和 Mark 。Web3 开发人员通过他们的去中心化簿订单交易所推进了区块链技术的发展。他们正在使用 Python 和 SQLite 作为数据库引擎来进行开发&#xff0c;他们发现他们可以在区块链操作系…

js与jquery实例-拖动改变列宽和行高

如何通过javascript或者jquery实现改变表格宽度或者行高的功能?今天就把这个功能代码分享给大家,绝对原创哦,代码少而且易懂。先看效果图:html结构:html结构:<!DOCTYPE HTML> <html> <head><meta charset="utf-8"><title>table&…

最适合从事游戏建模这类高薪职业的是这些人,快来看看有你吗?

随着游戏行业的发展&#xff0c;游戏建模受到越来越多的人的关注&#xff0c;那游戏建模的学习适用于什么样的人群呢&#xff1f;今天就来介绍一下吧 01 大学毕业&#xff0c;就业方向不明确 大学期间&#xff0c;本专业知识没有深度掌握&#xff0c;无法从事本专业相关的工作…

Vue3 i18国际化

本文参考了两片文章如下&#xff0c;博文原创&#xff0c;转载附上本博文链接即可 1、基于Vue3.0和ElementPlus开发后台框架(loginbacki18n)_zzzzzzzzzz的博客-CSDN博客_vue3后台框架 &#xff08;这个有点没看懂&#xff09; 2、https://www.jianshu.com/p/fa85595642cd&am…