数字水印 | 小波变换的原理入门



🤖 原视频: 小波变换:离散小波变换 DWT

🤖 写在前面: 本文主要基于原视频内容,同时又融合了多篇博客的内容。



前言

虽然网络上已经存在了许多介绍小波变换的博客,但是要么讲的太深,偏向于数学和物理,要么讲的太浅,一两段介绍完后就开始了代码实操部分。为了能够在周五的组会上侃侃而谈 (应付组会),同时又不想在公式的苦海中挣扎,因此我试图通过一些浅显易懂的介绍来入门小波变换。



1 小波变换

小波变换是指,输入信号通过和小波函数做卷积,被分解为一系列的信号,对应着不同的时域信息和频域信息。因此,小波变换可以实现时频分析。

以上的表述可能不够专业,但确实很简明易懂😇

小波变换 ( w a v e l e t   t r a n s f o r m ) \mathsf{(wavelet\ transform)} (wavelet transform) 分为:

  • 连续小波变换 ( c o n t i n u o u s   w a v e l e t   t r a n s f o r m ,   C W T ) \mathsf{(continuous\ wavelet\ transform,\ CWT)} (continuous wavelet transform, CWT)
  • 离散小波变换 ( d i s c r e t e   w a v e l e t   t r a n s f o r m ,   D W T ) \mathsf{(discrete\ wavelet\ transform,\ DWT)} (discrete wavelet transform, DWT)

在默认的情况下,不加前缀词的 “小波变换” 指的是连续小波变换。



2 连续小波变换(CWT)

CWT 是通过一系列的小波函数来实现的。

小波函数写作 ϕ a , b ( t ) \phi_{a,b}(t) ϕa,b(t),由母函数 ϕ ( t ) \phi(t) ϕ(t) 构建而来。具体来说,通过控制参数 a a a b b b 对母函数进行平移和伸缩,从而得到小波函数。再让输入信号和小波函数做卷积,将输入信号分解为一系列的信号。

在这里插入图片描述

素材源自:https://blog.csdn.net/l494926429/article/details/51818012

最靠前的黑色线可以理解为一个输入信号,它后面的彩色线可以理解为一系列的信号。黑色线可以由这些彩色线叠加而成,即输入信号可以由一系列的信号叠加而成。小波变换要做的,就是将输入信号重新分解为一系列的信号。



2.1 小波函数

小波函数和母函数的关系如下:

ϕ a , b ( t ) = 1 a ϕ ( t − b a ) \phi_{a,b}(t)=\frac{1}{\sqrt{a}}\phi(\frac{t-b}{a}) ϕa,b(t)=a 1ϕ(atb)

其中, 1 a \frac{1}{\sqrt{a}} a 1 是归一化系数, a a a 是影响频域的伸缩参数, b b b 是影响时域的平移参数。母函数 ϕ ( t ) \phi(t) ϕ(t) 有常见的几十种函数形式可供选择。

母函数的选取也是实际应用中需要考虑的问题。

母函数的基本形状如下:

在这里插入图片描述
是一个振幅以 0 0 0 开始,又以 0 0 0 为止的短促的波。

参数 a a a b b b 含义如下:

  • 伸缩参数 a   ( s c a l e   p a r a m e t e r ) a\ \mathsf{(scale\ parameter)} a (scale parameter) a a a 越大,周期越大,频率越小。 a a a 用于压缩或拉伸小波函数,从而可以检测信号中的不同频率成分。较小的尺度对应于压缩的小波,用于分析信号的高频部分;较大的尺度对应于拉伸的小波,用于分析信号的低频部分。
  • 平移参数 b   ( t r a n s l a t i o n   p a r a m e t e r ) b\ \mathsf{(translation\ parameter)} b (translation parameter) b b b 增大,函数图像左移; b b b 减小,函数图像右移。 b b b 用于在时间轴上移动小波函数,从而可以分析信号在不同时间点的行为。

由此可见,小波变换可以同时联系频域和时域。

回顾:周期 T = 2 π w = 2 π a T=\frac{2\pi}{w}=2\pi a T=w2π=2πa,频率 f = 1 T = 1 2 π a f=\frac{1}{T}=\frac{1}{2\pi a} f=T1=2πa1。原视频好像把 a a a 和周期 T T T 的关系说反了。

参数 a a a 可以对小波函数进行拉伸和压缩:

在这里插入图片描述
如上图左侧所示,拉伸后的小波可以量化信号中的缓变信息,对应信号中低频成分;如上图右侧所示,压缩后的小波可以量化信号中的突变信息,对应信号中高频成分。



2.2 小波变换的实现

对于一个给定的原始信号 f ( t ) f(t) f(t),其小波变换的结果为:

C W T ( a , b ) = ∫ − ∞ + ∞ f ( t ) ϕ a , b ( t ) d t CWT(a, b)=\int_{-\infty}^{+\infty}f(t)\phi_{a,b}(t)dt CWT(a,b)=+f(t)ϕa,b(t)dt

我们通常称小波变换的结果为小波系数,将它写作 C W T ( a , b ) CWT(a, b) CWT(a,b),意味着它是关于参数 a a a b b b 的函数。在代码中,一般定义名为 c o e f f i c i e n t s \mathsf{coefficients} coefficients(即参数)的变量来存放小波系数。

连续信号 f ( t ) f(t) f(t) 是求积分,离散信号 f ( k ) f(k) f(k) 是求累加和。

小波变换通过小波平移来提取信号中的时间信息,静态图如下图所示:

在这里插入图片描述

素材源自:https://blog.csdn.net/qq_18554229/article/details/134778494

  1. 如图 (a) 所示,将小波函数 ϕ a , b ( t ) \phi_{a,b}(t) ϕa,b(t) 放到原始信号 f ( t ) f(t) f(t) 的开头处进行比较,计算小波系数 C C C C C C 越大,说明小波函数与原始信号这一部分的相似度越高;
  2. 如图 (b) 所示,将小波函数向右平移 b b b,小波函数变为 ϕ a , b ( t − b ) \phi_{a,b}(t-b) ϕa,b(tb)。重复前述步骤,直到小波函数位移完整个原始信号 f ( t ) f(t) f(t)
  3. 如图 (c) 所示,伸缩小波的尺度,比如:放大一倍后小波函数变为 ϕ a , b ( 2 t ) \phi_{a,b}(2t) ϕa,b(2t),然后重复步骤 1~2 的操作;
  4. 重复步骤 1~3 直到小波已经伸缩到规定的最大尺度。

在这里插入图片描述




动态图如下图所示:

在这里插入图片描述
素材源自:https://www.jishulink.com/post/433270

该动图只演示了步骤 1~2 的操作。

小波变换的具体步骤如下:

  • 让不同伸缩量和平移量的小波函数与原始信号进行卷积,以确定原始信号是否具有相似的频率成分。
  • 每个小波具有特定的 “频率”,卷积结果将确定各个平移量(时间)处的原始信号是否也包含相同的频率。

即通过小波变换可以确定原始信号在什么时间存在什么频率成分。

简而言之,就是把原始信号和一个选定的小波函数做卷积。这个小波函数由参数 a a a b b b 来控制,其中参数 a a a 可以控制小波的胖和瘦,即对应于低频和高频。如果小波正好和原始信号对得上,那么卷积值就大;如果对不上,那么卷积值就小。通过这样的方式可以知道,时域信号的频域情况。

从而可以绘制出时频图:

在这里插入图片描述

其中,左图是一个三维图,正面是时域图,侧面是频域图。右图是一个二维图,描述的是从上往下观察左图的情况,是一个时频图。

补充:傅里叶变换只能得到频域图。



3 离散小波变换(DWT)

理论上参数 a a a b b b 可以是整数,也可以是小数。但在 DWT 中, a a a b b b 必须是某一个整数的倍数。常见的整数是 2,如下所示:

  • a = 2 j   ( j = 1 , 2 , . . . ) a=2^j\ (j=1,2,...) a=2j (j=1,2,...)
  • b = k a = k ⋅ 2 j   ( j = 1 , 2 , . . . ) b=ka=k\cdot 2^j\ (j=1,2,...) b=ka=k2j (j=1,2,...)

其中, j j j 是离散分解水平, j j j 取不同的值,将设置信号被分解为 j j j 层。比如, j = 1 j=1 j=1 时分解两层, j = 2 j=2 j=2 时分解四层。 k ∈ Z k\in Z kZ 是参数,且是一个整数。

小波函数进一步被表示为 ϕ j , k ( n ) \phi_{j,k}(n) ϕj,k(n),表示受参数 j j j k k k 的控制。

DWT 的结果分为两部分:

  • 近似参数 ( a p p r o x i m a t i o n   c o e f f i c i e n t s ,   C A ) \mathsf{(approximation\ coefficients,\ CA)} (approximation coefficients, CA):高尺度 ( h i g h   s c a l e ) \mathsf{(high\ scale)} (high scale),低频率 ( l o w   f r e q u e n c y ) \mathsf{(low\ frequency)} (low frequency)
  • 细节参数 ( d e t a i l   c o e f f i c i e n t s ,   C D ) \mathsf{(detail\ coefficients,\ CD)} (detail coefficients, CD):低尺度 ( l o w   s c a l e ) \mathsf{(low\ scale)} (low scale),高频率 ( h i g h   f r e q u e n c y ) \mathsf{(high\ frequency)} (high frequency)

前者提取的是低频分量,后者提取的是高频分量。

当离散分解水平取值为 j j j 时,离散信号 f ( k ) f(k) f(k) 的小波系数为:

  • CA: A j = ∑ n = 0 ∞ f ( n ) ϕ j , k ( n ) = ∑ n = 0 ∞ f ( n ) 1 2 j ϕ ( n − k ⋅ 2 j 2 j ) A_j=\sum_{n=0}^{\infty}f(n)\phi_{j,k}(n)=\sum_{n=0}^{\infty}f(n)\frac{1}{\sqrt{2^j}}\phi(\frac{n-k\cdot2^j}{2^j}) Aj=n=0f(n)ϕj,k(n)=n=0f(n)2j 1ϕ(2jnk2j)
  • CD: D j = ∑ n = 0 ∞ f ( n ) ϕ j , k ( n ) = ∑ n = 0 ∞ f ( n ) 1 2 j ϕ ( n − k ⋅ 2 j 2 j ) D_j=\sum_{n=0}^{\infty}f(n)\phi_{j,k}(n)=\sum_{n=0}^{\infty}f(n)\frac{1}{\sqrt{2^j}}\phi(\frac{n-k\cdot2^j}{2^j}) Dj=n=0f(n)ϕj,k(n)=n=0f(n)2j 1ϕ(2jnk2j)

即每一个时间点都要和小波函数进行运算。

plq:虽然上面两个公式长得一样,但实际上高频和低频所使用的母函数 ϕ ( t ) \phi(t) ϕ(t) 是不一样的,分别被称为高通滤波器和低通滤波器。



4 应用:降噪

我们通常认为信号中的高频分量是噪声,因此我们需要将高频分量给去除掉:

在这里插入图片描述

首先,对原始信号 f ( k ) f(k) f(k) 做小波变换,得到低频分量 C A 1 CA_1 CA1 和高频分量 C D 1 CD_1 CD1。由于 C A 1 CA_1 CA1 中可能仍然留存了一些高频分量,因此我们对 C A 1 CA_1 CA1 再做一次小波变换,得到低频分量 C A 2 CA_2 CA2 和高频分量 C D 2 CD_2 CD2

此时,我们认为高频分量已经去除的差不多了,因此开始做逆小波变换。我们直接将 C D 2 CD_2 CD2 0 0 0,并和 C A 2 CA_2 CA2 一起还原得到 C A 1 ′ CA'_1 CA1。同理,将 C D 1 CD_1 CD1 0 0 0,并和 C A 1 ′ CA'_1 CA1 一起还原得到 f ( k ) ′ f(k)' f(k),即为降噪后的信号。

说明:图中的下标都表示的是 j j j 层数。



  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值