opencv图像分析与处理(6)- 二维取样定理与二维傅里叶变换
本节为opencv数字图像处理(6):频率域滤波的第三小节,二维取样定理与二维傅里叶变换,主要包括:二维连续/离散傅立叶变换、二维取样及二维取样定理与二维离散傅立叶变换的性质。
1. 二维连续傅里叶变换对
令f(t,z)f(t,z)f(t,z)是两个连续变量ttt和zzz的连续函数,则其二维连续傅里叶变换对由如下表达式给出:
F(μ,v)=∫−∞∞∫−∞∞f(t,z)e−j2π(μt+vz)dtdzF(\mu,v)=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}f(t,z)e^{-j2\pi (\mu t+vz)}dtdz F(μ,v)=∫−∞∞∫−∞∞f(t,z)e−j2π(μt+vz)dtdz
f(t,z)=∫−∞∞∫−∞∞F(μ,v)ej2π(μt+vz)dμdvf(t,z)=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}F(\mu,v)e^{j2\pi(\mu t +vz)}d\mu dv f(t,z)=∫−∞∞∫−∞∞F(μ,v)ej2π(μt+vz)dμdv
其中,μ\muμ和vvv是频率变量,它们的域定义了连续频率域;当涉及图像时,ttt和zzz解释为连续空间变量。
如上图所示的二维函数,对应的傅立叶变换为:
其幅度由下式给出:
如下图所示,在幅度中零的位置与TTT和ZZZ的值成反比,二者越大,则幅度变得更加“收缩”。
2. 二维取样和二维取样定理
与上一节提到的一位情况类似,二维取样可用取样函数(二维冲激串建模),如下:
其中ΔT\Delta TΔT和ΔZ\Delta ZΔZ是连续函数f(t,z)f(t,z)f(t,z)沿ttt轴和zzz轴的样本间间隔,上式描述了沿着两个轴无限扩展的周期冲激的集合,如下图所示。我们可以用上式所示的取样函数乘以f(t,z)f(t,z)f(t,z)得到取样后的函数,如果由区间[−μmax,μmax][-\mu_{max},\mu_{max}][−μmax,μmax]和区间[−vmax,vmax][-v_{max},v_{max}][−vmax,vmax]建立的矩形之外的傅里叶变换是零,则函数f(t,z)f(t,z)f(t,z)称为带限函数,即:
F(μ,v)=0,∣μ∣≥μmax且∣v∣≥vmaxF(\mu,v)=0,|\mu|\geq\mu_{max}且|v|\geq v_{max} F(μ,v)=0,∣μ∣≥μmax且∣v∣≥vmax
二维取样定理表明,如果取样间隔满足:
ΔT<12μmax且ΔZ<12μmax\Delta T <\frac{1}{2\mu_{max}}且\Delta Z<\frac1{2\mu_{max}} ΔT<2μmax1且ΔZ<2μmax1
或写为关于取样率的表达即:
1ΔT>2μmax且1ΔZ>2vmax\frac1{\Delta T}>2\mu_{max}且\frac1{\Delta Z}>2v_{max} ΔT1>2μmax且ΔZ1>2vmax
则连续带限函数f(t,z)f(t,z)f(t,z)可以由其一组样本无误地恢复,也即:如果一个二维带限函数在μ\muμ和vvv两个方向上由大于该函数最高频率两倍的取样率取样获得的样本表示,则没有信息丢失。
3. 二维离散傅立叶变换及其反变换
二维离散傅里叶变换DFT可由下式说明:
F(μ,v)=Σx=0M−1Σy=0N−1f(x,y)e−j2π(μx/M+vy/N)F(\mu,v)=\Sigma_{x=0}^{M-1}\Sigma_{y=0}^{N-1}f(x,y)e^{-j2\pi(\mu x/M+vy/N)} F(μ,v)=Σx=0M−1Σy=0N−1f(x,y)e−j2π(μx/M+vy/N)
其中,f(x,y)f(x,y)f(x,y)是大小为M×NM\times NM×N的数字图像。同时,给出变换F(μ,v)F(\mu,v)F(μ,v),利用傅里叶反变换IDFT可以得到f(x,y)f(x,y)f(x,y):
f(x,y)=1MNΣx=0M−1Σy=0N−1F(μ,v)ej2π(μx/M+vy/N)f(x,y)=\frac1{MN}\Sigma_{x=0}^{M-1}\Sigma_{y=0}^{N-1}F(\mu,v)e^{j2\pi(\mu x/M+vy/N)} f(x,y)=MN1Σx=0M−1Σy=0N−1F(μ,v)ej2π(μx/M+vy/N)
4. 二维离散傅里叶变换的性质
4.1 空间和频率间隔的关系
假设对连续函数f(t,z)f(t,z)f(t,z)取样生成了一幅数字图像f(x,y)f(x,y)f(x,y),分别由在ttt和zzz方向所取的M×NM\times NM×N个样点组成,令ΔT\Delta TΔT和ΔZ\Delta ZΔZ表示样本间的间隔,则相应离散频率域变量间的间隔分别由:
Δμ=1MΔT和Δv=1NΔz\Delta \mu=\frac1{M\Delta T}和\Delta v=\frac1{N\Delta z} Δμ=MΔT1和Δv=NΔz1
给出,频率域样本间的间隔和空间样本间的间距和样本数成反比。
4.2 平移和旋转
傅立叶变换变换对满足下列平移特性:
f(x,y)ej2π(μx/M+vy/N)⇔F(μ−μ0,v−v0)f(x,y)e^{j2\pi(\mu x/M+vy/N)}\Leftrightarrow F(\mu-\mu_0,v-v_0) f(x,y)ej2π(μx/M+vy/N)⇔F(μ−μ0,v−v0)
f(x−x0,y−y0)⇔F(μ,v)e−j2π(μx/M+vy/N)f(x-x_0,y-y_0)\Leftrightarrow F(\mu,v)e^{-j2\pi(\mu x/M+vy/N)} f(x−x0,y−y0)⇔F(μ,v)e−j2π(μx/M+vy/N)
即指数项乘以f(x,y)f(x,y)f(x,y)将使DTY的原点移到点(μ0,v0)(\mu_0,v_0)(μ0,v0),反之,用负指数乘以F(μ,v)F(\mu,v)F(μ,v)将使f(x,y)f(x,y)f(x,y)移到点(x0,y0)(x_0,y_0)(x0,y0)。
使用极坐标
x=rcosθ,y=rsinθx=r\cos\theta,y=r\sin\theta x=rcosθ,y=rsinθ
μ=ωcosφ,v=ωsinφ\mu=\omega\cos\varphi,v=\omega\sin\varphi μ=ωcosφ,v=ωsinφ
可得到下列变换对:
f(r,θ+θ0)⇔F(ω,φ+φ0)f(r,\theta+\theta_0)\Leftrightarrow F(\omega,\varphi+\varphi_0) f(r,θ+θ0)⇔F(ω,φ+φ0)
也就是说,若f(x,y)f(x,y)f(x,y)旋转θ0\theta_0θ0角度,则F(μ,v)F(\mu,v)F(μ,v)也旋转相同的角度,反之亦然。
4.3 周期性
二维傅立叶变换及其反变换在μ\muμ和vvv方向上是无限周期的,即:
4.4 共轭对称性与共轭反对称
也称为哈密特对称和反哈密特对称。当f(x,y)f(x,y)f(x,y)是实函数,则其傅立叶变换是共轭对称即F∗(μ,v)=F(−μ,−v)F^*(\mu,v)=F(-\mu,-v)F∗(μ,v)=F(−μ,−v);当f(x,y)f(x,y)f(x,y)是虚函数,则其傅里叶变换是共轭反对称的即KaTeX parse error: Can't use function '\v' in math mode at position 10: F^*(-\mu,\̲v̲)=-F(\mu,v)。
4.5 傅里叶谱和相角
通常二维DFT是付函数,因此可用极坐标形式来表示:
其中幅度,也就是傅里叶谱(频谱):
相角:
功率谱:
因为实函数的傅立叶变换是共轭对称的,这表明谱是关于原点偶对称的,即:
而相角关于原点奇对称:
4.6 二维卷积定理
二维循环卷积的表达式:
二维卷积定理由下式给出:
4.7 二维连傅立叶变换性质总结
下表涉及主要的DFT中的定义:
下表给出了DFT对的一些定义和性质:
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]
opencv图像分析与处理(6)- 二维取样定理与二维傅里叶变换相关推荐
- Opencv的使用小教程3——利用轮廓检测实现二维码定位
Opencv的使用小教程3--利用轮廓检测实现二维码定位 二维码具有什么特征 实现效果 识别二维码的流程 1.预处理图像 2.寻找轮廓 3.通过寻找到的轮廓确定"回"的位置 4.创 ...
- 使用 OpenCV + 微信二维码引擎实现二维码识别
Part1背景 今年自疫情以来,我都没有写过文章.一方面是疫情导致居家办公比较烦躁,另一方面最近有点懒了.但是工作还是要继续,趁这几天优化了一下最近的项目,我整理了一下如何使用 OpenCV 和微信二 ...
- NanoPi M4开发opencv图像识别aruco码全过程(超详细)(二:测试补充)
一.ArUco项目源码简析 声明:以下内容均是在虚拟机Ubuntu系统下进行操作,用开发板Nano Pi的同学亦可同样实现,但这里为了方便截图以及界面复制. 1.首先来看一下ArUco项目的源码结构 ...
- 生成二维码,读取二维码,这很Python(23)
小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生. 欢迎和猫妹一起,趣味学Python. 今日主题 如何用Python生成二维码. 如何用Python读取二维码. 什么是二维码 二 ...
- python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...
python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...
- python生成二维码、动态二维码 和 而二维码解析
python生成二维码.动态二维码 和 而二维码解析(8-20190129) 文章目录: 一.二维码介绍 二. 就是为了好玩所以想搞一下二维码,"好玩",少年醒醒,不要骗自己啦,起 ...
- 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...
- 用STM32实现:摄像头扫到二维码后提取二维码中的信息分别放到数组中
摄像头扫到二维码后提取二维码中的信息分别放到数组中 把想要的信息编辑好放到二维码中(网上有好多在线生成二维码的工具) /** *作者:魏波 *时间:2017.6.6 * **/char name[6] ...
- Android之ZXing扫描二维码以及生成二维码
Android之ZXing扫描二维码以及生成二维码 ZXIng项目地址:ZXing地址 项目结构 扫描二维码:使用 CaptureActivity类 项目代码: import android.cont ...
- python生成二维码_python生成二维码的实例详解
python生成二维码的实例详解 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:Sublime Text 3 依赖库 Python生成二维码需要的依赖库 ...
最新文章
- window 获取进程运行长
- Superset配置impala数据源
- java 追加写入hdfs_java操作之HDFS-创建-删除目录-读写文件-追加写文件
- Swift - 17 - 数组的初始化
- Linux系统用户环境变量大全,linux系统和用户环境变量的配置文件
- Java可扩展实体_java – 是否可以通过扩展一个POJO来构建一个JPA实体?
- 为什么c语言要定义变量,C语言为什么要规定对所用到的变量要“先定义,后使用”...
- 使用Chrome开发者工具调试Android端内网页(微信,QQ,UC,App内嵌页等)
- linux的驱动开发——内核模块的编译
- 电子计算机哪几部分组成的,电子计算机由哪几部分构成?
- asp.net获取当前页面的url地址
- 下载所有需要的rpm文件路径
- 在JavaScript中复制数组的最快方法-切片与“ for”循环
- matlab读取excel里的数据并用imagesc画图
- 17秋 SDN课程 第一次作业
- I210网卡LINUX的mac,intel(R)I211网卡刷I210简易教程
- 超级简单的html转换为pdf格式方法
- OA企业管理系统源码
- Acwing:星空之夜(图的哈希 Python)
- 基于Python爬虫的网易云音乐
热门文章
- 如何让你产品的用户拥有一流的上传体验
- 开发、运维过程中解决问题的通用步骤
- PHP 将二维数组转成一维数组
- fiddler抓包工具1
- java.lang.IllegalStateException: No output folder
- jquery手机模拟器
- 小技巧,把execl.exe转换成dll
- POJ 2142 The Balance ★ (不定方程 ax+by=c 的|x|+|y|最小解)
- 控制台或者dll中CreateWindow 出错
- [导入]一个好网站的策划设计