绪论
在开始写这篇文章之前,笔者就在思考一个问题,就是如何写一篇类似于这样的科普类文章,到底要如何写,才算得上一篇好文章,在多年前笔者还在文学社的时候,热衷于写各类小说,大多的时候都在琢磨着如何塑造一个跌宕起伏且富有娱乐性及戏剧性的情节,因为这样的文章,更能够吸引到更多读者的眼球,但遗憾的是,小波分析法不论再如何的娱乐及简化.对于写小说而言,这仍然是一个非常硬核的话题,毕竟写小说你可以不用太在意剧情的发展是否真能够符合现实情理,更多时候你只要保证内容足够的有趣就行了,但在一些数学分析工具的介绍推理文中,文字就不能够写的太过的随意,很多细节的地方,甚至可能差之毫厘谬以千里,因此,写这类文章时往往得尽可能的小心,如果文中出现纰漏,不仅会让之后的内容滚雪球效应般的一错再错,也容易带给读者困惑。
然而残酷的是,当堆上一堆的数学公式及推导内容的时候,这一篇文章也开始变得索然无味,在这一个流量为王的时代,编一个并不真实的浪漫故事,要比写一篇这样的"毫无浪漫的理工死宅文"更加吸引人的多,因此,写这类文章其实是一件很吃亏的事情————首先,作者需要花费大量的时间去弄懂其背后到底是怎么一回事,其次作者更要花心思在文字中,思考如何更容易让更多的读者明白自己到底是想要表达什么意思,再次是需要做好点费时费力写出来还没什么人看的打算(不管如何,这确实很打击人),鉴于在这种情况之下,对于这类文章的创作确实并不是一个友好的环境,因此,当我们在互联网上查找相关的资料时,你会发现一个奇怪的现象,即使使用搜索引擎搜索出来的结果很多,但大多都是你抄我我抄你,麻烦的是抄着抄着一些关键的知识点反而被莫名其妙的漏掉了,因此,阅读大多数的文章属于那种"看了但没完全看","懂了但没完全懂"的状态,陷入一种"懂了的没必要看,不懂的看不懂"这一个奇妙的悖论中。
介于以上这几点,笔者尝试做出一些折中,并使用一些更加通俗且老少咸宜的比喻让读者更加容易明白文中想要表达的意思,与其说是严谨的证明,倒不如说其更像偏向趣味性的科普,因此,笔者将文章的标题取作《小波导论》而非《详解小波变换》,一则是笔者对小波分析的详细数学推导及证明自己也是个半桶水,实在没办法在大佬面前班门弄斧,二则是文章将更多偏向于“科普”而不是“科学”,文章将更多的引导读者对于小波分析的“知道为什么要用”,“明白应该怎么用”,“尝试自己实现一个小波分析”三个方面来完成整体的文章架构。当然,如果你想深入了解小波变换的原理,那么我慎重向你推荐《小波十讲》和《数字图像处理》,前者的作者是就是db小波系的发明者,可谓经典中的经典,而后者尽管只有一章节讲小波变换,但内容循序渐进,读起来通俗易懂,本文中部分范例,也是引用这本书上的内容。
当然,在你看到这篇文章的时候,笔者已经使用C语言实现了DWT(离散小波变换)并且将它集成在了PainterEngine Core中,其中包含实现了haar,db2-8小波系及sym2-8小波系,你可以在PainterEngine/Core/PX_Wavelet.c中找到完整的源代码。
PainterEngine 离散小波变换
速览傅里叶变换
和所有有关于小波变换的教程和文章一样,在开始离散小波变换的教程之前,本文应该先讲述傅里叶变换,毕竟小波变换的一大要点就是为了解决傅里叶变换的缺陷,但笔者仍然希望将重点放在小波变换中,有关傅里叶变换的知识应该交给专门讲解傅里叶变换的文章中来,因此本文并不会花太多的篇幅来讲述傅里叶变换,笔者假设读者已经熟悉了傅里叶变换的相关基础知识,如果你并不熟悉傅里叶变换的相关基础,那么,你可以在下面的链接中找到相关的教程。
傅里叶变换、拉普拉斯变换、Z 变换的联系是什么?为什么要进行这些变换
傅里叶变换推导详解
离散傅里叶变换DFT详解及应用
快速傅里叶变换推导
傅里叶变换基于一个直接且粗暴的理论
“任何”周期信号都可以用一系列成谐波关系的正弦曲线来表示。
这意味着各式各样的信号,都可以按照下图的方式进行正弦分解:
<center>
</center>
得益于三角函数的正交性,这意味着,如果你如果你想要知道一段信号中有没有包含某一频率的正弦波,你只需要用该频率的正弦波去乘原信号,然后对其进行周期内积分就可以了(就是相乘然后加起来)。看如下例子,在图2.2中,我们假设:
$f(x)=sin(t)+sin(2t)+sin(3t)$
$g(x)=sin(3t)$
那么有:
$\int_{}^{T}f(x)g(x)\ne 0$
<center>
</center>
但如果我们设:
$f(x)=sin(t)+sin(2t)+sin(6t)$
$g(x)=sin(3t)$
那么有(图2.3):
$\int_{}^{T}f(x)g(x)= 0$
<center>
</center>
如果我们要进一步推导,那么根据三角函数的和差化积或积化和差公式,有:
$\int{- \infty}^{\infty}{cos(mx)cos(nx)}dx=\frac{1}{2}\int{- \infty}^{\infty}{{cos(m-n)x+cos(m+n)x}dx}=\frac{1}{2}\int{- \infty}^{\infty}{cos(m-n)xdx}+\frac{1}{2}\int{-\infty}^{\infty}{cos(m+n)xdx}=0(当m\ne n)$
$\int{- \infty}^{\infty}{\sin( \text{mx} )\sin( \text{nx} )}dx = \frac{1}{2}\int{- \infty}^{\infty}{{ \cos\lbrack ( m - n )x \rbrack - \cos\lbrack ( m + n )x \rbrack }\text{dx}}=\frac{1}{2}\int{- \infty}^{\infty}{\cos\lbrack ( m - n )x \rbrack\text{dx}} - \frac{1}{2}\int{- \infty}^{\infty}{\cos\lbrack ( m + n )x \rbrack\text{dx}} = 0(当m\ne n)$
$\int{- \infty}^{\infty}{\sin( \text{mx} )\cos( \text{nx} )}dx = \frac{1}{2}\int{- \infty}^{\infty}{{ \sin\lbrack ( m - n )x \rbrack + \sin\lbrack ( m + n )x \rbrack }\text{dx}} = \frac{1}{2}\int{- \infty}^{\infty}{\sin\lbrack ( m - n )x \rbrack\text{dx}} + \frac{1}{2}\int{- \infty}^{\infty}{\sin\lbrack ( m + n )x \rbrack\text{dx}} =0(当m\ne n)$
因此,可以打一个类似的比方,锁只有相应的钥匙可以开,如果我们把原信号当做一个上了很多锁的箱子,那么傅里叶变换就是找了无数多的钥匙一把一把去试(用无数多不同频率的正弦波去乘原信号并积分),这样,就能够找出原信号中到底包含着哪些频率的信号。
傅里叶变换是如此的常用,以至于在今天,大部分对于振动及电磁载波信号,仍然在大量使用傅里叶变换,傅里叶变换仍然是当今最重要且使用的最多的信号时频分析方法。然而,傅里叶变换存在一些缺陷:
1.傅里叶变换假设分析的信号是平稳的,也是说,分析的信号在时间范围内的频率改变不能,例如下图的正弦信号,频率由高到低(32HZ-0HZ),那么,傅里叶变换将无法表达出其变化的过程(图2.4,上图表示一个频率线性变化的正弦波,下图是其傅里叶变换的结果):
<center>
</center>
2.傅里叶变换以三角函数作为基底,这意味着其无法准确表达非平滑过渡的信号频率信息,例如使用傅里叶变换去拟合方波信号会出现吉布斯现象(图2.5上图表示一个方波,下图是其傅里叶变换的结果)
<center>
</center>
3.傅里叶变换反应的是一个整体的频率信息,因此如果信号仅仅存在某一帧内,傅里叶变换将表达这个结果的时间信息(图2.6上图表示前半段是一个50HZ正弦波,后半段为0,下图是其傅里叶变换的结果)
<center>
</center>
从短时傅里叶变换到小波变换
现在,如果让我们尝试解决上述问题:
1.上述问题的第一点和第三点,本质上可以说是我们的分析帧拉的太大,如果我们截取原信号中的一小段进行分析,那么在这一小段的距离,就可以近似当做是平稳不变的信号,例如下图中 $f(x)$ 为原信号,我们截取一帧(用黄色框线表示),并构造一个用于检波的正弦信号 $g(x)$ ,然后将 $f(x)$ 与 $g(x)$ 相乘后加在一起得到一个值,从左到右滑动这个黄色框线,那么这一过程可以视作 $g(x)$ 对 $f(x)$ 做卷积操作,下图(图3.1)
<center>
</center>
如果我们将这个卷积的结果输出在图3.2中,你会发现当黄色框线移动到和它最相似的位置时,卷积结果将达到一个最大值,见图3.2中最底部的紫色线条,在0.8处左右,达到绝对最大值,这表示在原始信号的这个位置,存在和检波信号 $g(x)$ 最相似的频率信号。
<center>
</center>
这构成了短时傅里叶变换的核心思想,既然整体分析不能体现时间细节,那么我们就将原信号拆开,然后一段一段进行分析
对于第二个傅里叶变换以三角函数作为基底,意味着其无法准确表达非平滑过渡的信号频率信息,那就更简单粗暴了,既然正弦波不方便拟合方波信号,那么我们用更小的方波信号(暂不讨论正交等性质)来对信号进行检波不就行了,如图3.3。
<center>
</center>
现在,你应该已经开始意识到小波是什么了,没错,傅里叶变换中的正弦波,时间是从负无穷到正无穷,延绵不绝的周期信号,而小波变换中的小波,在时间上仅存在于某一个范围当中,通过对小波的平移及缩放,最终来分析出原型中的频率成分。
小波与检波
在开始正式进入小波分析的细节问题之前,让我们先来思考一个问题,让我们看图4.1,我们假设 $f(x)$ 是一个$1HZ$的方波信号,但这个信号只存在2秒,之后这个方波信号就消失了,那么我们应该如何去分析这个信号呢,显然的,按照我们之前提供的思路,我们可以使用一个方波信号来对这个信号进行检波,比如图4.1中,我们同样构造一个$1HZ$方波的一个周期,那么,我们的分析信号就能完美和原信号契合。只要将$f(x)$和$g(x)$相乘,然后对其进行积分,因为其结果不是0,那么就表明在这段检波信号中,原信号中包含$1HZ$的方波信号。
<center>
</center>
<center>
</center>
下一步,我们将分析的小波平移一个小波周期,让后再进行积分,仍然不为0,那么,表示在该处也存在 $1HZ$方波信号(如图4.2)。
<center>
</center>
如果再平移一步,那么,再积分就为0了,表示这里不存在$1HZ$方波信号(如图4.3)
<center>
</center>
只要这样一步一步的对分析信号进行平移,那么我们就能够知道,在原信号中的哪些时刻存在和分析信号相同频率的信号成分,但这样还不够,观察图4.4,$f(x)$是一个$1HZ,2HZ$的混合信号,如果我们仍然使用1HZ的信号进行检波,只能够检出$1HZ$信号无法检出$2HZ$频率的信号。
<center>
</center>
因此,在使用1HZ的信号检波后,我们将检波信号缩短一倍(相对于频率增加1倍),然后继续重复上述的过程对$2HZ$信号进行检波(如图4.5)。
<center>
</center>
小波分析入门
现在,我们可以正式步入小波分析的殿堂了,不论"小波分析"这个名词听起来多么的高端大气上档次,但实际上如果读者看完了"小波与检波"这一个章节,小波分析额基础原理基本上已经讲完大半了。
通过上一章节的内容,我们明白,如果我们需要对一段信号进行小波分析,那么就要明确2个问题:
1.用于检波的小波长什么样?
2.小波应该如何进行缩放(以检测更高的频率信号)?
因此,基于上面两点,我们就需要明确2个函数,它们分别叫:
小波函数---->顾名思义,用于描述小波长什么样,同时它有时也叫母小波函数。
尺度函数---->顾名思义,用于描述小波应该如何进行缩放,当然有母就有父,它也叫父尺度函数。
其中,尺度函数被定义为:
<center>
$\varphi_{j,k}(x)=2^{j/2}\varphi(2^{j}x-k)$
</center>
其中,j,k都是整数,其中这个j,表示这个尺度函数宽度,j越大,尺度函数越窄,对应的小波频率越高,k可以视作尺度函数平移的位置,越大表示移动的越到后面,为了更直观的说明,笔者使用了Haar尺度函数生成以下几张图:
我们先来看看$\varphi_{0,0}(x)$,它长这样
<center>
</center>
我们再来看看$\varphi{0,1}(x)$,可以看到,k变成了1,因此它是$\varphi{0,0}(x)$平移后的结果,长这样:
<center>
</center>
接下来就是$\varphi{1,0}$根据公式,他应该是:
$\varphi{1,0}(x)=2^{1/2}\varphi(2^{1}x-0)$ 也就是$\varphi_{1,0}(x)=\sqrt{2}\varphi(2x)$
<center>
</center>
而$\varphi{1,1}$是$\varphi{1,0}$平移后的结果,因此是这样:
<center>
</center>
当然还有$\varphi{1,2},\varphi{1,3},\varphi_{1,4}....$依次类推,你可能已经注意到了,低级的尺度函数可以是高级尺度函数的组合,例如:
<center>
$\varphi{0,0}(x)=\frac{1}{\sqrt{2}}\varphi{1,0}(x)+\frac{1}{\sqrt{2}}\varphi_{1,1}(x)$
</center>
如果我们用一个递归的思想来表示这个尺度函数,那么,函数可以写成:
<center>
$\varphi(x)=\sum{k\in Z}{}h{\varphi}(k)\sqrt{2}\varphi(2x-k)$
</center>
就是尺度函数可以表示为高一级尺度的线性组合,其中,这个$h_{\varphi}(k)$又称作展开系数。
尺度函数应该满足以下条件:
1.尺度函数对于其整数平移是正交的。(说人话:就是小波就那么一小段,分析时一段一段平移,相乘积分后是0)。
2.尺度函数以低尺度张成的函数控件嵌套在以高尺度张成的函数空间中,即
<center>
$V{-\infin}\subset...V{-1}\subset V{0}\subset V{1}\subset ... V_{\infin}$
</center>
说人话就是看下图,$f(x)$ 函数比 $g(x)$ 函数要更宽(刚好一倍),我们可以说 $g(x)$ 可以用来组合表示 $f(x)$ 也就是说,$g(x)$的尺度空间比f(x)的空间更高,也就是说高尺度空间可以用来表示低尺度空间,在几何中就是这样一个包含关系。
<center>
</center>
3.在每个尺度上唯一可表示的函数是$f(x)=0$
4.所有可度量的,平方可积的函数都可以表示为尺度函数在$j->\infin$时的线性组合,即
<center>
$V_{\infin}=L^{2}(R)$
</center>
(说人话:还记得傅里叶变换么,用无穷多不同频率去叠加拟合原信号,把正弦波换成小波,不还是一个意思,就像你用一个积木去组个拼接一个形状,大的轮廓用大积木,小的细节用小积木,如果拼不出细节,只是你的积木不够小)
以上几个条件又被成为MRA需求,
小波函数
当我们确定了尺度函数以后,我们就可以开始构造小波函数了,小波函数和尺度函数同样类似,它的定义如下:
<center>
$\psi_{j,k}=2^{j/2}\psi(2^{j}x-k)$
</center>
*若令$W{j{0}}$表示小波函数{$\psi{j,k}|k\in Z$}张成的函数空间,$V{j{0}}$表示小波函数{$\varphi{j,k}|k\in Z$}张成的函数空间,则
<center>
$V{j0+1}=V{j0}\oplus W_{j0}$
</center>
说人话啥意思呢,你可以想啊,现在我们用尺度的去拟合原信号时,因为原信号中包含了当前尺度函数无法组成的成分,比如那些当前尺度空间更高阶的细节成分,因此,细节的信息没了,这个时候怎么办呢,当然是要把它找回来啊,那么在哪找呢,诶,小波函数的张成函数空间,就是用来干这个的,可以这么说,尺度函数和小波函数各为互补,尺度函数用来表示原信号的大致轮廓(低频信息),而小波函数则用来表示原信号的细节信息(高频信息),当它们组合在一起后,就是当前尺度空间的样子了。
好的,回到正题,因为上面的这层关系,小波函数可以写作高一级尺度函数的加权和:
<center>
$\psi(x)=\sum{k\in Z}^{}h{\psi}(k)\sqrt{2}\varphi(2x-k)$
</center>
其中$h_{\psi}(k)$又称为小波函数系数,它与尺度函数系数有如下关系:
<center>
$h{\psi}(k)=(-1)^{k}h{\varphi}(1-k)$
</center>
最后,根据上述推论,我们可以将函数$f(x)\in L^{2}(R)$写作其小波级数展开形式:
<center>
$f(x)=\sum{k}{}c{j0}(k)\varphi{j0,k}(x)+\sum{j=j{0}}^{\infin}\sum{k}^{}d{j}(k)\psi{j,k}(x)$
</center>
其中$c{j0}$与$d{j}$称为近似系数和细节系数(就像傅里叶级数展开式中的系数一样,是我们重点要求的系数)
其定义有:
<center>
$c{j{0}}=<f(x),\varphi{j{0},k(x)}>$
$d{j}=<f(x),\psi{j_{0},k(x)}>$
</center>
haar小波
作为小波分析中最简单的小波,尽管haar小波在大多数的震荡信号中并不常用,但haar小波毫无疑问是作为小波理论最经典,最亲民,最适合作为教程来进行讲解的小波。
实际上,在上文中开始讲解小波变换的范例中,已经大量引用了haar小波的内容,现在我们着重讨论haar小波,并用haar小波作为例子,计算
<center>
$y=x^{2}(0 \le x \le 1)$
</center>
的变换结果,首先和所有的小波分析一样,我们首先有搞懂haar小波的尺度函数及小波函数,haar小波的尺度函数定义如下:
<center>
$\varphi(x)=1(当0 \le x \le 1)$
$\varphi(x)=0(其它)$
</center>
其图像如下图
<center>
</center>
haar小波的小波函数定义如下:
<center>
</center>
现在,我们对其进行haar小波级数展开,也就是求$c{j0}$与$d{j}$,我们设初始尺度$j_{0}=0$,依据上一章给出的展开式系数,我们求以下系数(计算过程略,如果不清楚可以自己画图看看就明白了):
<center>
$c{0}(0)=\int{0}^{1}x
^{2}\varphi_{0,0}(x)dx=\frac{1}{3}$
$d{0}(0)=\int{0}^{1}x
^{2}\psi_{0,0}(x)dx=-\frac{1}{4}$
$d{1}(0)=\int{0}^{1}x
^{2}\psi_{1,0}(x)dx=-\frac{\sqrt{2}}{32}$
$d{1}(0)=\int{0}^{1}x
^{2}\psi_{1,1}(x)dx=-\frac{3\sqrt{2}}{32}$
</center>
然后将它代入展开式中
<center>
</center>
这章的内容如果你仍然有疑惑,你可以翻阅《数字图像处理》375:376
一维离散小波变换
参照连续小波变换的公式,笔者直接给出一维离散小波变换的公式:
<center>
$f(x)=\frac{1}{\sqrt{N}}[T{\varphi}(0,0)]\varphi(x)+\sum{j=0}^{J-1}\varphi(x)+\sum{k=0}^{2^{j}-1}T{\psi}(j,k)\psi_{j,k}(x)$
$T{\varphi}(0,0)=<f(x),\varphi{0,0}(x)>=\frac{1}{\sqrt{N}}\sum_{x=0}^{N-1}f(x)\varphi^{*}(x)$
$T{\psi}(j,k)=<f(x),\psi{j,k}(x)>=\frac{1}{\sqrt{N}}\sum{x=0}^{N-1}f(x)\psi{j,k}^{*}(x)$
</center>
其中,N表示原信号的长度,它是一个基2数,意味着它的长度必须是2的整数次方倍,你可能注意到了,尺度和小波在式中是一个共轭函数,但大多时候,它们是实值,因此,大多时候你可以忽略它们的虚部共轭。
现在,让我们举个例子,我们假设一个序列:
<center>
${1,2,3,4}$
</center>
然后对其进行一维haar变换.
1.首先第一步,我们将这个序列乘以尺度函数$\varphi{0,0}$,如下图所示上图为原函数,下图为$\varphi{0,0}$:
<center>
</center>
根据公式:$T{\varphi}(0,0)=\frac{1}{\sqrt{N}}\sum{x=0}^{N-1}f(x)\varphi^{}(x)$ 可得,其中信号长度为4,因此$N=4$,因为尺度函数是一个实值函数,因此$\varphi^{}(x)=\varphi(x)$,其在区间[0,1]上等于1
因此,
$T{\varphi}(0,0)=\frac{1}{\sqrt{N}}\sum{x=0}^{N-1}f(x)\varphi^{}(x)=T{\varphi}(0,0)=\frac{1}{\sqrt{4}}\sum{x=0}^{4-1}f(x)\varphi(x)=\frac{1}{2}(11+21+31+4*1)=5$
尺度函数算完了(轮廓信息),接下来当然是算小波函数了(细节信息),同样的,观察下图,上图为原函数,下图为$\psi_{0,0}$
<center>
</center>
那么根据$T{\psi}(0,0)=\frac{1}{\sqrt{N}}\sum{x=0}^{N-1}f(x)\psi^{}(x)=T{\psi}(0,0)=\frac{1}{\sqrt{4}}\sum{x=0}^{4-1}f(x)\psi(x)=\frac{1}{2}(11+21-31-4*1)=-2$求的其系数为-2。
下一步,根据:
<center>
$\psi_{j,k}=2^{j/2}\psi(2^{j}x-k)$
</center>
可以得出
<center>
$\psi_{1,0}=\sqrt{2}\psi(2x)$
</center>
<center>
</center>
因此,我们可以这样计算:$T_{\psi}(1,0)=1\sqrt{2}+-2\sqrt{2}=-\sqrt{2}$
下一步:$T_{\psi}(1,1)=3\sqrt{2}+-4\sqrt{2}=-\sqrt{2}$
<center>
</center>
最终,我们取得haar变换的系数:
<center>
${5,-2,-\sqrt{2},-\sqrt{2}}$
</center>
快速离散小波变换
通过观察上述的Haar小波案例可以知道:
尺度函数对原信号做卷积操作,可以视作将原信号通过一个低通滤波器,然后进行一次下采样。
而小波函数对原信号做卷积操作,可以视作将原信号通过一个高通滤波器,然后进行一次下采样。
相当于将原信号分成了高频与低频两部分,在做完一次高低通的滤波操作之后,再对低频进行一次分割,直到分解到我们需要到的细度时,如果一直分解到和滤波器系数长度,可以称作是信号的小波完全分解。这么做的好处是我分解后信号长度变为原来长度的一半,下次小波分解操作时需要处理的数据也缩短了一半,提高了计算的效率。
快速小波变换的流程如下:
1.取得该小波的重建滤波器的低通滤波器参数$g{0}(n)$(其它也可以,只要知道一个其它都可以算出来),一般这个参数我们可以通过matlab或其它参考资料直接获得。
2.通过$g{0}{n}$计算$g_{1}(n)$,计算公式如下:
<center>
$g{1}(n)=(-1)^{n}g{0}(N-n-1)$
</center>
N是滤波器系数长度,n是当前索引,简单来说,就是翻转$g_{0}(n)$,然后奇数索引的符号取反。
3.求h{0}(n)和h{1}(n),它们分别是分解滤波器的低通和高通滤波器系数,公式如下:
<center>
$h{1}(n)=g{1}(N-n-1)$
$h{0}(n)=g{0}(N-n-1)$
</center>
简单来说,就是$g{1}(n),g{0}(n)$的翻转.
4.将原信号分别对$h{0}(n)$,$h{1}(n)$进行卷积操作,分别代表低通和高通的结果。
5.如果信号长度为N,滤波器长度为L,那么卷积后的长度应该是$(N+L-1)$,我们从$(L-1)$个系数开始(设最开头的那个是第0个系数),每隔一个系数采样一次,那么就能得到一个$\frac{N}{2}$长度的序列(也就是2倍下采样)。最终我们得到了一个高通$\frac{N}{2}$长度的序列,和低通$\frac{N}{2}$长度的序列。
6.对低通序列重复第5步,直到分解到我们需要分解到的程度。
我们仍然对上面的信号举例子,设有离散信号序列:
<center>
${1,2,3,4}$
</center>
通过查询我们得知,haar小波的滤波器参数$g_{0}(n)$为:
<center>
${\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}}$
</center>
那么通过上式计算:
<center>
$h{1}(n)={\frac{1}{-\sqrt{2}},\frac{1}{\sqrt{2}}}$
$h{0}(n)={\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}}$
</center>
我们先将原信号对$h_{1}(n)$做卷积操作,得到序列
<center>
${-\frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}},\frac{4}{\sqrt{2}}}$
</center>
通过下采样,从第1个系数(也就是从左往右数第二个),每隔一个取一个系数,得到序列
<center>
${-\frac{1}{\sqrt{2}},-\frac{1}{\sqrt{2}}}$
</center>
我们再将原信号对$h_{0}(n)$做卷积操作,得到序列
<center>
${\frac{1}{\sqrt{2}},\frac{3}{\sqrt{2}},\frac{5}{\sqrt{2}},\frac{7}{\sqrt{2}},\frac{4}{\sqrt{2}}}$
</center>
通过下采样,从第1个系数(也就是从左往右数第二个),每隔一个取一个系数,得到序列
<center>
${\frac{3}{\sqrt{2}},\frac{7}{\sqrt{2}}}$
</center>
然后重复这个步骤,对上面的序列再做一次和$h{1}(n),h{0}(n)$做卷积,分别得到
<center>
${-\frac{3}{2},-2,\frac{7}{2}}$
${\frac{3}{2},5,\frac{7}{2}}$
</center>
再做一次下采样,得到序列${2}$和${5}$,之后只需要把序列拼接起来,就得到了:
<center>
${5,-2,-\sqrt{2},-\sqrt{2}}$
</center>
流程图如下:
<center>
</center>
结语
那么到这里,有关于小波变换的介绍也就告一段落了,当然本人并非全才也并非天才,文中很多的比喻与说明,为了更容易令人理解,可能描述并不十分准队,而对于一些过于偏题和错误疏漏,还望大佬不吝斧正。
最后写文章不易,转载请注明出处,谢绝CSDN转载,你可以在PainterEngine.com中,下载到本文的md原始文件,如果你喜欢PainterEngine这个项目,别忘了在Github上点一个star