傅里叶变换的性质之二维DFT的平移性和旋转性——冈萨雷斯数字图像处理

平移性原理

基本概念:

平移性指的是函数在空间域内平移时,其频率域表示也相应改变的性质。
在二维DFT中,当一个图像在空间域内平移时,其频率域表示(即DFT)的振幅不会改变,但相位会改变。
数学表达
在这里插入图片描述
直观理解:

平移一个图像不会改变其频率内容,只会改变每个频率成分的相位。

旋转性原理*

基本概念:
旋转性指的是当一个图像在空间域内旋转时,其频率域表示也相应地旋转同样的角度。这意味着频率域的结构在旋转操作下保持不变。

数学表达:
在这里插入图片描述
直观理解:
在频率域内,旋转图像等同于以原点为中心旋转其频谱。

*要求:

实现图像的平移和旋转;计算图像的傅里叶频谱图。

在这里插入图片描述

python代码实现

import cv2
import matplotlib.pyplot as plt
import numpy as npimg=cv2.imread("Fig0424.tif",0)
rows, cols = img.shape[0:2]M = np.float32([[1, 0, 100], [0, 1, 50]])
dst = cv2.warpAffine(img, M, (cols, rows))#平移M1=cv2.getRotationMatrix2D((cols/2,rows/2),135,1)
dst1=cv2.warpAffine(img,M1,(cols,rows)) #旋转dft = np.abs(np.fft.fft2(img))
log_dft = np.log(1+dft)
center_dft = np.fft.fftshift(log_dft)dft1 = np.abs(np.fft.fft2(dst))
log_dft1 = np.log(1+dft1)
center_dft1 = np.fft.fftshift(log_dft1)
dft2 = np.abs(np.fft.fft2(dst1))
log_dft2 = np.log(1+dft2)
center_dft2 = np.fft.fftshift(log_dft2)plt.subplot(321),plt.imshow(img,"gray"),plt.title("orginal")
plt.subplot(322),plt.imshow(center_dft,"gray"),plt.title("DFT")
plt.subplot(323),plt.imshow(dst,"gray"),plt.title("translated")
plt.subplot(324),plt.imshow(center_dft1,"gray"),plt.title("translated DFT")
plt.subplot(325),plt.imshow(dst1,"gray"),plt.title("rotated")
plt.subplot(326),plt.imshow(center_dft2,"gray"),plt.title("rotated DFT")plt.show()

结果展示

在这里插入图片描述

结论

首先Numpy 进行傅里叶变换。Numpy 中的 FFT 包可以帮助我们实现快速傅里叶变换。函数 np.fft.fft2() 可以对信号进行频率转换,输出结果是一个复杂的数组。本函数的第一个参数是输入图像,要求是灰度格式。第二个参数是可选的, 决定输出数组的大小。输出数组的大小和输入图像大小一样。如果输出结果比输入图像大,输入图像就需要在进行 FFT 前补0。如果输出结果比输入图像小的话,输入图像就会被切割。
图像的平移并不会影响图像的频谱,同时,图像的相位会随着图像的旋转而旋转,而且这个实验表明矩形的平移并不会对频谱有丝毫的影响,而频谱随着矩形的旋转而旋转相同的角度。

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

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

相关文章

深度学习框架Keras与Pytorch对比

对于许多科学家、工程师和开发人员来说,TensorFlow是他们的第一个深度学习框架。TensorFlow 1.0于2017年2月发布,可以说,它对用户不太友好。 在过去的几年里,两个主要的深度学习库Keras和Pytorch获得了大量关注,主要是…

Pytorch简介

1.1 Pytorch的历史 PyTorch是一个由Facebook的人工智能研究团队开发的开源深度学习框架。在2016年发布后,PyTorch很快就因其易用性、灵活性和强大的功能而在科研社区中广受欢迎。下面我们将详细介绍PyTorch的发展历程。 在2016年,Facebook的AI研究团队…

广州找工作哪个网站好

吉鹿力招聘网是一个很好的广州找工作网站,它提供了多种类型的招聘信息,包括技工招聘。总之,吉鹿力招聘网是一个有效的招聘网站,可以帮助广州的人们找到合适的工作。 广州找工作上 吉鹿力招聘网 打开 吉鹿力招聘网 “注册账号”&…

服务器运行状况监控工具

服务器运行状况监视提供了每个服务器状态和性能的广泛概述,通过监控服务器指标,如 CPU 使用率、内存消耗、I/O、磁盘使用率、进程等,服务器运行状况监控可以避免服务器停机。 服务器性能监控指标 服务器是网络中最重要的组件之一&#xff0…

基于Spring Cloud + Spring Boot的企业电子招标采购系统源码

随着企业的快速发展,招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求,建立一个公平、公开、公正的采购环境至关重要。在这个背景下,我们开发了一款电子招标采购软件,以最大限度地控制采购成本&#…

【2023年终总结】纵是一路仆仆风尘,也莫忘了仰头

文章目录 1. 写在前面2. 关于生活3. 关于工作4. 关于以后 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋…

nginx设置跨域访问

目录 一&#xff1a;前端请求 二&#xff1a;后端设置 网站架构前端使用jquery请求&#xff0c;后端使用nginxphp-fpm 一&#xff1a;前端请求 <script> $.getJSON(http://nngzh.youjoy.com/cc.php, { openid: sd, }, function(res) { alert(res); if(res.code 0) …

【windows】在host中设置禁止访问某个网站

1.找到&#xff1a;C:\Windows\System32\drivers\etc目录下的hosts文件。 2.把这个文件复制到桌面上&#xff08;提供更高权限&#xff09; 3.用记事本打开&#xff0c;在末尾添加上127.0.0.1 www.bilibili.com 4.保存后复制回原来的文件夹&#xff0c;替换掉原来的文件 5.…

Postgresql源码(119)PL/pgSQL中ExprContext的生命周期

前言 在PL/pgSQL语言中&#xff0c;执行任何SQL都需要通过SPI调用SQL层解析执行&#xff0c;例如在SQL层执行表达式的入口&#xff1a; static bool exec_eval_simple_expr(PLpgSQL_execstate *estate,PLpgSQL_expr *expr,Datum *result,bool *isNull,Oid *rettype,int32 *re…

独立站如何优化网页加载速度

对于跨境电商独立站而言&#xff0c;流量是跨境电商业务的重中之重&#xff0c;由于独立站并不自带流量&#xff0c;非常依赖于谷歌搜索引擎自然流量&#xff0c;以及付费广告流量。 但随着付费流量价格日益水涨船高&#xff0c;为了摆脱对付费流量的依赖&#xff0c;相信广大…

VSCode远程开发配置

目录 概要远程开发插件安装开始连接SSH无密码登录开发环境配置 概要 现在很多公司都是直接远程到服务器上写代码&#xff0c;使用远程开发&#xff0c;可以在与生产环境相同的环境中开发、测试和部署代码&#xff0c;减少因环境不同而导致的问题。当下VSCode远程开发是支持的比…

Android笔记(二十二):Paging3分页加载库结合Compose的实现网络单一数据源访问

Paging3 组件是谷歌公司推出的分页加载库。个人认为Paging3库是非常强大&#xff0c;但是学习难点比较大的一个库。Paging3组件可用于加载和显示来自本地存储或网络中更大的数据集中的数据页面。此方法可让移动应用更高效地利用网络带宽和系统资源。在具体实现上&#xff0c;Pa…