小波变换(一)

article/2025/4/21 18:15:44

小波变换(一)

由于项目可能会用到的原因,学一下,感觉已有的通俗易懂教程不够相应的学术性.

教程:《数字信号处理》陈后金著
视频教程:中国大学mooc-数字信号处理

文章目录

  • 小波变换(一)
    • 傅里叶变换的局限性
    • 短时傅里叶变换(STFT)
      • 时间分辨率
      • 频谱分辨率
      • 我们到底想要什么东西
    • 信号的正交表示
    • 小波展开与小波变换
      • 小波函数
      • 尺度函数
      • 离散小波变换 (DWT)
    • 结语
    • 参考资料

傅里叶变换的局限性

在正式进入小波变换之前,我们不妨来讨论一下傅里叶变换的局限性和为什么我们需要引入小波变换。
回想傅里叶变换的公式
F ( ω ) = ∫ − ∞ ∞ f ( t ) e x p ( − j ω t ) d t F(\omega) = \int^{\infty}_{-\infty}f(t)exp(-j\omega t)dt F(ω)=f(t)exp(jωt)dt

  • 从积分的算式我们可以轻松知道,在积分式一结束的同时,
    另外一个谱的信息就会完全消失,就是说,傅里叶变换的频域上不含有时间信息

  • 同时从积分的上下限我们也可以看到,当信号发生一些不平稳的变化的时候,傅里叶变换并不能很好的察觉到他的幅度和位置,因为从表达式可以看到,傅里叶变化对每一个时刻的值都是平等对待的,而且所有的突变值也会被积分区间所平分.所以我们可以看到傅里叶变换对窄带信号检测不敏感,不能处理非平稳信号

  • 从滤波的角度看,回想一下,当信号频谱和噪声频谱是相互分离的时候,我们总可以分离信号和噪声,通过一些加窗滤波的方法就可以了.但是如果信号和噪声的频谱是混在一起的,那么,这个时候傅里叶变换就无能为力了,也就是说,滤波靠的是信号域和噪声域在频谱上的分离

短时傅里叶变换(STFT)

怎么来解决以上的问题呢?有人提出了短时傅里叶变换来加以改善,我们先来看看短时傅里叶变换的表达式:
F ( ω , t ) = ∫ − ∞ ∞ f ( τ ) w ( τ − t ) e x p ( − j ω τ ) d τ F(\omega,t) = \int^{\infty}_{-\infty}f(\tau)w(\tau -t)exp(-j\omega \tau)d\tau F(ω,t)=f(τ)w(τt)exp(jωτ)dτ
F [ m , k ] = ∑ n x [ n ] w [ n − k ] e x p ( − j 2 π N m n ) m = 0 , 1 , ⋯ , N − 1 F[m,k] = \sum_nx[n]w[n-k]exp(-j\frac{2\pi}Nmn)\quad m=0,1,\cdots,N-1 F[m,k]=nx[n]w[nk]exp(jN2πmn)m=0,1,,N1
通过加入一个滑动的窗函数 w ( ω , t ) w(\omega,t) w(ω,t)(长度为N),来弥补傅里叶变换的频谱上没有时间信息这个弊端

其实原理很简单,就是原来一段的傅里叶变换,现在固定分成几段来分别进行傅里叶变换,那么分成的这几段,可以在时间上独立开来,就变成了具有时间信息的傅里叶变换

但当然,这个加窗对整个变换也是有影响的,这里不妨先介绍两个术语:

时间分辨率

时间分辨率由时窗宽度 T p T_p Tp决定,
T p = N T = N f s a m p l e T_p =NT=\frac N{f_{sample}} Tp=NT=fsampleN
T p T_p Tp,时间分辨率越高.

频谱分辨率

频谱分辨率是指分辩信号中相邻谱峰的能力
△ f c = 1 T p \triangle f_c = \frac1{T_p} fc=Tp1
$\triangle f_c $越,频谱分辨率越高。

在对信号的时频分析中,我们希望时间分辨率和频谱分辨率都可以比较高,但是从定义式里面我们就知道,时间分辨率和频谱分辨率是相互制约的,同时也说明,我们没办法同时获得较高的时间分辨率和频谱分辨率.

从这里我们可以再一步印证出,傅里叶变换(连续)具有无穷的频谱分辨率,而无时间分辨率.

现在我们回来讨论短时傅里叶变换的窗函数 w [ n − k ] w[n-k] w[nk]的长度N,显然N如果变大,频谱分辨率肯定是越来越好的,时间分辨率确实便来越差的.同时N如果变小,频谱分辨率肯定是越来越差的,时间分辨率便是越来越差的.

我们到底想要什么东西

既然上面说了时间分辨率和频谱分辨率已经是不可兼得的了,那么现在问题来了,我们到底想得到什么东西?
回想一下:
傅里叶变换的缺点在他不能有效地处理非平稳信号,短时傅里叶变换的N是固定的,往两边变化都会有制约.

那我们能不能在分析的过程中让这个N变起来?让他在信号变化快的时候窗变小一点,获得较高的时间分辨率,较低的频谱分辨率.在信号变化慢的时候窗变大一点,获得较低的时间分辨率,较高的频谱分辨率.

这个时候就应该给大家引入小波变换了.大家可以先无道理地认为小波变换就是一个窗长度会变的傅里叶变换(虽然我一直不喜欢这个通俗的比喻…)

信号的正交表示

在正式讲小波变换前,需要先补充一些知识.

在信号分析中,我们常将信号展开成一组信号的线性组合,即有
x ( t ) = ∑ n a n ⋅ ϕ n ( t ) x(t) = \sum_n a_n \cdot \phi_n(t) x(t)=nanϕn(t)

其中,{ a n ; n ∈ Z a_n;n\in Z an;nZ}为展开系数,{ ϕ n ( t ) ; n ∈ Z \phi_n(t);n\in Z ϕn(t);nZ}为展开函数
若展开式具有唯一性,即不同的信号对应不同的展开系数 a n a_n an ,则该展开函数 ϕ n ( t ) \phi_n(t) ϕn(t)称为基(basis)。

对基函数来说,若其内积满足:
< ϕ l ( t ) , ϕ k ( t ) > = ∫ ϕ l ( t ) ⋅ ϕ k ( t ) d t = δ [ k − l ] <\phi_l(t),\phi_k(t)> = \int\phi_l(t)\cdot\phi_k(t)dt = \delta[k-l] <ϕl(t),ϕk(t)>=ϕl(t)ϕk(t)dt=δ[kl]
称此基函数为**正交规范(orthonormal)**基函数.正交在于其他内积等于0,规范在于系数是1

在此基础上我们可以知道,由于每个基函数之间都是互相正交的,所以我们可以将x(t)和基函数 ϕ n ( t ) \phi_n(t) ϕn(t)进行内积计算,便可以得到相应的展开系数 a n a_n an,也就是:

a n = < x ( t ) , ϕ n ( t ) > = ∫ x ( t ) ⋅ ϕ n ( t ) d t a_n = <x(t),\phi_n(t)> = \int x(t)\cdot\phi_n(t)dt an=<x(t),ϕn(t)>=x(t)ϕn(t)dt

稍微有点泛函常识的我们可以知道,这就是将信号往给定基函数元素所张成的内积空间里面投射

比较出名的就是傅里叶级数,将信号往以 e j ω t e^{j\omega t} ejωt为基函数的内积空间(无穷维空间)内投射,得到的相应正交基函数的特征值(也就是展开系数 a n a_n an)这里的 a n a_n an就是傅里叶级数里面的 C n C_n Cn.大家大可看看表达式,都是一模一样的.

当然这个是反着来用的,根据每个维度的特征值来合成回x(t),也就是逆变换

这里要注意的还有一点是,所谓的基函数,其实不仅仅是一个函数,而是一些有相同特征且相互正交的函数族.

小波展开与小波变换

小波函数

小波(wavelet)信号是一类衰减较快的波动信号,其能量有限,且相对集中在局部区域.
先来看看常用的小波函数:
在这里插入图片描述

小波函数 ψ ( t ) \psi(t) ψ(t)(也称为母小波)的基本特性:
∫ − ∞ ∞ ψ ( t ) d t = 0 \int^\infty_{-\infty}\psi(t)dt = 0 ψ(t)dt=0
小波函数 ψ ( t ) \psi(t) ψ(t)通过展缩和平移得到小波函数族** ψ j , k ( t ) \psi_{j,k}(t) ψj,k(t)**
https://i.loli.net/2018/10/15/5bc43f2337b63.png
这里小波函数由于相对集中在局部区域,所以比傅里叶变换的基函数多了平移这一步.
小波函数族 ψ j , k ( t ) \psi_{j,k}(t) ψj,k(t)定义为:
ψ j , k ( t ) = 2 j / 2 ψ ( 2 j t − k ) ; j , k ∈ Z \psi_{j,k}(t) = 2^{j/2}\psi(2^jt-k);\quad j,k\in Z ψj,k(t)=2j/2ψ(2jtk);j,kZ

尺度函数

和小波变换相关的还有尺度函数(父小波)(Scaling Function)
在这里插入图片描述

由尺度函数 φ ( t ) \varphi(t) φ(t)通过展缩和平移得到尺度函数族 φ j , k ( t ) \varphi_{j,k}(t) φj,k(t)

尺度函数族 φ j , k ( t ) \varphi_{j,k}(t) φj,k(t)定义为:
φ j , k ( t ) = 2 j / 2 φ ( 2 j t − k ) ; j , k ∈ Z \varphi_{j,k}(t) = 2^{j/2}\varphi(2^jt-k);\quad j,k\in Z φj,k(t)=2j/2φ(2jtk);j,kZ

小波函数族和尺度函数族前面的系数 2 j 2^j 2j是为了保持基函数的能量始终为1

对于这两个后面会有更理性的认识,这里我们先直接介绍DWT和IDWT

离散小波变换 (DWT)

有了小波函数和尺度函数,就相当于明确了我们的小波的基函数.
我们可以利用小波函数族 ψ j , k ( t ) \psi_{j,k}(t) ψj,k(t),尺度函数族 φ j , k ( t ) \varphi_{j,k}(t) φj,k(t),来将信号进行小波展开:
x ( t ) = ∑ n c 0 [ k ] φ 0 , k ( t ) + ∑ n d 0 [ k ] ψ 0 , k ( t ) + ∑ n d 1 [ k ] ψ 1 , k ( t ) + ⋯ x(t) = \sum_nc_0[k]\varphi_{0,k}(t) + \sum_nd_0[k]\psi_{0,k}(t) + \sum_nd_1[k]\psi_{1,k}(t) +\cdots x(t)=nc0[k]φ0,k(t)+nd0[k]ψ0,k(t)+nd1[k]ψ1,k(t)+
同时,上式也被称为离散小波逆变换 (IDWT)

相反地,由信号x(t)求解展开系数{ c 0 [ k ] , d 1 [ k ] , d 2 [ k ] c_0[k],d_1[k],d_2[k] c0[k],d1[k],d2[k]}称为离散小波变换(Discrete Wavelet Transform, DWT)

我们常用 c 0 c_0 c0来表示信号的粗糙成分, d j , k d_{j,k} dj,k来表示信号的精细部分.详细内容会在下一篇博客继续阐述.

结语

之前总有一段时间不想学小波,感觉这个名词有点高大上什么的,然后因为最近要涉及到相关的信息,所以不得不学一下.学完个基础之后不得不感叹的是,小波变换我觉得比傅里叶变换还要来得简单直接,演示的效果有时还蛮惊艳的.

如果你想请我出个南五的话

参考资料

形象易懂讲解算法I——小波变换
小波变换完美通俗讲解系列之 (一)
小波变换完美通俗讲解系列之 (二
Wavelet transform - Wikipedia
A Tutorial of the Wavelet Transform

崔锦泰 《小波分析导论》

Ruch, David K. And Van Fleet, Patrick J.《Wavelet Theory:An elementary Approach With Applications》

Wavelets in Engineering Applications 罗高涌 (这可是我们学院罗教授出的书喔)
购买链接如下:
Wavelets in Engineering Applications


http://chatgpt.dhexx.cn/article/6x4af77n.shtml

相关文章

360视频:旋转球面投影RSP

旋转球面投影&#xff08;Rotated sphere projection&#xff0c;RSP&#xff09;将球体分为两个相同的部分&#xff0c;然后投影到平面上&#xff0c;宽高比3&#xff1a;2。 图1 RSP投影 球面上两部分的分割线类似于图2中网球上的分割线。 图2 网球分割示意图 Frame Packin…

视频防抖技术的实现

1. 介绍 视频防抖是指用于减少摄像机运动对最终视频的影响的一系列方法。摄像机的运动可以是平移&#xff08;比如沿着x、y、z方向上的运动&#xff09;或旋转&#xff08;偏航、俯仰、翻滚&#xff09;。 对视频防抖的需求在许多领域都有。 这在消费者和专业摄像中是极其重…

音视频基础:视频的编码

本文主要参考《图像通信技术与应用》作者陈柘 陈川 记录了数字图像的模型、图像变换的数学原理、图像编码的基本思想、H.26x等视频标准、以及视频的传输模型等概念&#xff0c;只介绍思想&#xff0c;无数学推导&#xff0c;无代码实践&#xff0c;属于音视频入门知识 视频的编…

视频压缩基本概念

视频压缩基本概念 为什么需要压缩视频 首先回答why这个问题。 假设一个2小时未压缩的高清视频&#xff0c;19201080p的电影&#xff0c;我们来计算一下他的存储容量。先介绍一下帧率(frame rate或者是 FPS)概念&#xff0c;也就是每秒传输图片的帧数&#xff0c;也可以理解为…

视频压缩基本介绍与标准

视频压缩基本介绍与标准 视频压缩又称视频编码&#xff0c;所谓视频编码方式就是指通过特定的压缩技术&#xff0c;将某个视频格式的文件转换成另一种视频格式文件的方式。 一般的通用数据压缩方案如下图&#xff1a; 压缩就是一个传播的过程&#xff0c;所以在压缩与解压缩…

vr视频六面体变换

本文会对facebook的开源filter&#xff1a;vf_transform.c 做代码级分析&#xff0c;解释vr视频是如何做六面体转换的。 转换的关键其实就是输入vr视频到六面体的映射&#xff08;也就是下图中蓝色图像映射到红色图像&#xff09;&#xff1a; 假设每个正方形的像素是512x512个…

学生角度看傅里叶变换,拉普拉斯变换,z变换(一)

学生角度看傅里叶变换&#xff0c;拉普拉斯变换&#xff0c;z变换&#xff08;一&#xff09; 学生角度看傅里叶变换&#xff0c;拉普拉斯变换&#xff0c;z变换&#xff08;一&#xff09; 离散和连续信号的表示 信号的脉冲表示响应与卷积 傅里叶变换 为什么需要傅里叶变换ejw…

树莓派GPIO引脚介绍

在已经安装好GPIO库的情况下&#xff0c;命令行输出gpio readall即可列出IO引脚的定义和编号&#xff0c;显示如下&#xff08;替换为图&#xff09; 编号规则可参考树莓派GPIO控制 Python配置GPIO安装参考&#xff1a; sudo apt-get install python-dev sudo apt-get insta…

树莓派GPIO引脚控制红绿灯与轰鸣器

参考&#xff1a; https://blog.csdn.net/weixin_44415639/article/details/114600919 https://blog.csdn.net/chenbo163/article/details/78716269 https://blog.51cto.com/u_11643026/4291142 这里文章用的编程引脚是物理引擎代号BOARD 1、GPIO控制包安装 参考&#xff1…

树莓派教程 : 树莓派各版本引脚定义

树莓派Zero W/WH(Raspberry Pi Zero W/WH) GPIO针脚定义

树莓派各版本引脚及参数

一、树莓派引脚 图片来源 注&#xff1a;本表格适用于各版本&#xff0c;并且兼容26Pin的树莓派B&#xff0c;树莓派B为26Pin&#xff0c;其引脚对应于上表的前26Pin。 二、树莓派参数 1.树莓派各版本比较&#xff1a; 2.树莓派3B参数 表格来源 名称参数备注SOC博通 BCM28…

树莓派4b 引脚图

树莓派 4B 详细资料

树莓派引脚远程控制

最近和树莓派群里朋友合作想做个开源RPILINK系统满足群里一些朋友的需求,虽然不少地方还不完善至少开了个头,先记录下来功能,以后有空会陆续会完善技术方面记录。 Rpilink系统是一个将树莓派设备连接到一起的数据平台,树莓派之间可以通过用户的配置进行数据交换和命令的执行…

树莓派4B的引脚控制简单demo

淘宝上的店家提供了很多示例程序&#xff0c;这里只拿一种来演示下&#xff0c;借此熟悉下如何用c或者python环境去操作树莓派。前提配置见我的之前的系列博客 树莓派4B基础软硬件环境搭建_jiugeshao的专栏-CSDN博客 树莓派4B上多版本python切换&#xff08;一&#xff09;_j…

树莓派的GPIO端口详解

首先上一张端口图 GPIO&#xff08;GeneralPurposeI/OPorts&#xff09;意思为通用输入/输出端口&#xff0c;通俗地说&#xff0c;就是一些引脚&#xff0c;可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。GPIO是个比较重要的概念&#xff0c;用户可…

树莓派管脚编码c语言,树莓派IO引脚定义 | 北岛夜话

我们使用树莓派的很重要一个原因是想通过它来进行一些智能控制,比如控制舵机、LED灯、继电器或者用来进行串口、SPI通信等,这些都需要通过控制树莓派的输入输出引脚(IO引脚)来实现的。前面的文章我们说过树莓派的输入输出引脚有26针和40针的区别,今天这篇文章我们具体看看它…

树莓派GPIO引脚详解

树莓派的GPIO引脚还是小有点复杂&#xff0c;有些是共用的。需要在启动时切换不同的设备树文件来设置不同的模式。详情参考&#xff1a; UART at Raspberry Pi GPIO PinoutRaspberry Pi UART pinshttps://pinout.xyz/pinout/uart

树莓派引脚编号说明

目前&#xff0c;树莓派引脚编号方式有三种&#xff1a; 1&#xff0c;基于引脚的物理位置进行编号&#xff1b; 2&#xff0c;C语言GPIO库wiringPi约定的编号方式&#xff1b; 3&#xff0c;Python语言GPIO库RPi.GPIO约定的编号方式。 如果我们要基于wiringPi库用C语言对树…

树莓派4b引脚图

感觉树莓派4B的引脚分布排序和树莓派3B的引脚排序差不太多&#xff0c;或者我需要的电源和串口应该是一样的。 转载自&#xff1a;树莓派4b引脚图_0欣欣0的博客-CSDN博客_树莓派4b引脚图