小波入门(一)

东西太多,学不过来啊。信号处理这边学到一半,因为项目需要开始接触一些小波。用的是《小波与傅立叶分析(第二版)》,做个简单笔记吧。这次我主要以 Haar 小波为例说明小波的基础知识。

Haar 尺度函数

有两个函数在小波分析中有很重要的作用,即尺度函数 \(\phi\) 和小波函数 \(\psi\)。这两个函数产生一组用于分解和重构信号的函数族。\(\phi\) 称为父小波,\(\psi\) 称为母小波。Haar 尺度函数定义为

\[\phi(x)=\begin{cases} 1, & \text{if $0 \leq x < 1$} \\ 0, & \text{otherwise} \end{cases}\]

\(V_0\) 是所有形如\(\sum_{k \in Z}a_k \phi(x-k),a_k \in R\)的函数组成的空间,\(k\) 可在任一有限整数范围内取值。也就是说 \(V_0\) 是所有不连续点仅在整数集中的分段常量函数组成的空间。

\(V_0\) 推广到一般情况,设 \(j\) 是一个非负整数,\(j\) 级阶梯函数空间表示为 \(V_j\),它是由函数集

\[\{...,\phi(2^jx+1),\phi(2^jx),\phi(2^jx-1),...\}\]

在实数域上张成。则 \(V_j\) 是分段常量函数空间,其间断点在

\[\{...,-1/2^j,0,1/2^j,...\}\]

注意到我们有一个严格包含关系

\[V_0 \subset V_1 \subset ... V_j \subset V_{j+1}...\]

\(V_j\) 包含所有在分辨率为 \(2^{-j}\) 下的相关信息,随着 \(j\) 的增加,分辨率变得更为精细。\(V_j \subset V_{j+1}\) 意味着随着分辨率的提高,不会损失任何信息,这就是为什么使用 \(\phi(2^jx)\) 而不是 \(\phi(ax)\)

略过证明,我们直接给出定理:函数集 \(\{ 2^{j/2}\phi(2^jx-k);k \in Z\}\)\(V_j\) 的一个标准正交基。

Haar 小波函数

假设我们的信号内含有尖峰噪声(形状为突然向下的冲激信号再跟上一个突然向上的冲激信号)。有了 \(V_j\) 的正交基后只完成了一半的工作,为了解决噪声滤除问题,需要一个孤立属于 \(V_j\) 但不属于 \(V_{j-1}\) 的尖峰的方法,于是就有了小波函数 \(\psi\)。将 \(V_j\) 分解成 \(V_{j-1}\) 及其正交补。我们以 \(V_1\) 为例,构造 \(\psi\) 的两个关键点

  • \(\psi\)\(V_1\) 的成员,所以可表示为 \(\phi(x)=\sum_la_l\phi(2x-1),a_l \in R\) (仅有有限个 \(a_l\) 非零)
  • \(\psi\)\(V_0\) 正交,即 \(\int \phi(x) \psi(x-k)dx=0\) 对所有的整数 \(k\) 成立

符合以上两点的最简单函数为 \(\psi(x)=\phi(2x)-\phi(2x-1)\)。可以证明,任一函数

\[f_1=\sum_ka_k\phi(2x-k) \in V_1\]

当且仅当 \(a_1=-a_0,a_3=-a_2,...\) 时,与 \(V_0\) 正交,即与每个 \(\phi(x-l),l \in Z\) 正交。此时

\[f_1=\sum_{k \in Z}a_{2k}(\phi(2x-2k)-\phi(2x-2k-1))=\sum_{k \in Z}a_{2k}\psi(x-k)\]

也就是说,当且仅当 \(V_1\) 中某一函数具有 \(\sum_ka_k\psi(x-k)\) 形式时(将 \(a_{2k}\) 重新标记为 \(a_k\)),该函数与 \(V_0\) 正交。

推广到一般情况,设 \(W_j\) 是由形如

\[\sum_{k \in Z}a_k \psi(2^jx-k),a_k \in R\]

的函数构成的空间,设仅有有限个 \(a_k\) 非零。则 \(W_j\)\(V_{j+1}\)\(V_j\) 的正交补,即 \(V_{j+1}=V_j \oplus W_j\)

推广一下即有 \(V_j=W_{j-1} \oplus W_{j-2} \oplus ... \oplus W_0 \oplus V_0\)。所以 \(V_j\) 中的任一 \(f\) 可以唯一地分解为以下和式

\[f=w_{j-1}+w_{j-2}+...+w_0+f_0\]

这里可以注意到,我们需要滤除的噪声信号和 \(\psi\) 形状十分相似。这也就是小波处理的一个特性:选用和待处理信号相似的小波能获得更好的效果。

Haar 小波分解

理论

\(f\) 可由一阶梯函数 \(f_j \in V_j\) (\(j\) 足够大)近似,然后把 \(f_j\) 分解如下

\[f_j=f_0+w_1+w_2+...+w_{j-1},w_l \in W_l\]

其中 \(w_l\) 表示为宽为 \(1/2^{l+1}\) 的尖峰。例如,脉宽小于 0.01 的尖峰表示噪声,因为 \(2^{-6} > 0.01 > 2^{-7}\),那么任何 \(w_j, j \ge 6\) 均表示噪声。将这些项设定为 0,和式的其他部分表示了同原始信号十分相似但没有噪声的信号。为了进行小波分解,我们首先用如下式子近似原信号 \(f\)

\[f_j(x)=\sum_{l \in Z}a_l \phi(2^jx-l)\]

即是信号在 \(x=...,-1/2^j,0,1/2^j,...\) 处的采样。有 \(a_l=f(l/2^j),l \in Z\)。注意 \(l\) 的定义域和原信号定义域直接相关。接下来要把 \(\phi(2^jx-l)\) 分解为各个 \(W_l(l<j)\) 的分量。注意\(\phi\) 父小波,\(\psi\) 母小波之间的关系为

\[\begin{split} \phi(2x)=(\psi(x)+\phi(x))/2 \\ \phi(2x-1)=(\phi(x)-\psi(x))/2 \end{split}\]

给出分解的推导。首先是把和式 \(f_j(x)=\sum_ka_k\phi(2^jx-k)\) 分解为偶部和奇部

\[f_j(x)=\sum_{k \in Z}a_{2k}\phi(2^jx-2k)+\sum_{k \in Z}a_{2k+1}\phi(2^jx-2k-1)\]

根据\(\phi\) 父小波,\(\psi\) 母小波之间的关系有

\[\begin{split} \phi(2^jx-2k)=(\psi(2^{j-1}x-k)+\phi(2^{j-1}x-k))/2 \\ \phi(2^jx-2k-1)=(\phi(2^{j-1}x-k)-\psi(2^{j-1}x-k))/2 \end{split}\]

将式子联合起来

\[\begin{split}f_j(x)=&\sum_{k \in Z}a_{2k}(\psi(2^{j-1}x-k)+\phi(2^{j-1}x-k))/2+ \\ &\sum_{k \in Z}a_{2k+1}(\phi(2^{j-1}x-k)-\psi(2^{j-1}x-k))/2 \\ =&\sum_{k \in Z} \left( \frac{a_{2k}-a_{2k+1}}2 \right)\psi(2^{j-1}x-k) + \left( \frac{a_{2k} + a_{2k+1}}2 \right)\phi(2^{j-1}x-k) \\ =&w_{j-1} + f_{j-1} \end{split} \]

这样我们就得到了小波分解的递推公式,根据以上式子,我们就可以将 \(f_j\) 分解为

\[f_j=w_{j-1}+w_{j-2}+...+w_0+f_0\]

总结一下

\[\begin{split} f_j=&w_{j-1}+f_{j-1} \\ w_{j-1}=&\sum_{k \in Z}b_k^{j-1} \psi(2^{j-1}x-k) \in W_{j-1} \\ f_{j-1}=&\sum_{k \in Z}a_k^{j-1} \psi(2^{j-1}x-k) \in V_{j-1} \end{split}\]

其中

\[\begin{split} b_k^{j-1}=\frac{a_{2k}^j-a_{2k+1}^j}2 \\ a_k^{j-1}=\frac{a_{2k}^j + a_{2k+1}^j}2\end{split}\]

例子

还是看个例子吧,以书上为例

\[f(x)=2 \phi(4x) + 2 \phi(4x-1) + \phi(4x-2)-\phi(4x-3)\]

此时 \(j=2,a_0=2,a_1=2,a_2=1,a_3=-1\)

\[\begin{split} f_2(x)=&\left( \frac{a_0-a_1}2 \right)\psi(2^1x)+ \left( \frac{a_2-a_3}2 \right)\psi(2^1 x-1) + \\ &\left( \frac{a_0+a_1}2 \right)\phi(2^1x) + \left( \frac{a_2+a_3}2 \right)\phi(2^1 x-1) \\ =& \psi(2x-1)+2\phi(2x) \\ =& \psi(2x-1)+ \psi(x) + \phi(x) \end{split}\]

Haar 小波重构

理论

至此,我们已经将 \(f\) 分解为 \(V_0\)\(W_{j'}(0 \le j' < j)\) 下的各个分量。如果需要滤除之前提到的噪声,则可以舍弃噪声分量 \(W_{j'}\)。如果需要数据压缩,幅值较小的分量 \(W_{j'}\) 可以丢弃而对原信号没有太大的影响。

根据需要,我们会把某一层的 \(b_k^j\) 修改为 \(b_k^{j'}\)。接下来就需要一个重构算法,使得信号能由 \(V_j\) 中基元素构建,有

\[f(x)=\sum_{l \in Z} a_l^j \phi(2^jx-l)\]

根据前述,我们的小波分解为

\[\begin{split} f(x)=f_0(x)+w_0(x)+...+w_{j-1}(x), w_l \in W_l \\ f_0(x)=\sum_{k \in Z}a_k^0 \phi(x-k) \in V_0, w_l= \sum_kb_k^l \psi(2^lx-k) \in W_l\end{split}\]

注意我们有

\[\begin{split} \phi(x)=\phi(2x)+\phi(2x-1) \\ \psi(x)=\phi(2x)-\phi(2x-1)\end{split}\]

所以

\[f_0(x)=\sum_{k \in Z}a_k^0\phi(2x-2k)+a_k^0\phi(2x-2k-1)=\sum_{k \in Z}\hat{a}_l^1\phi(2x-l)\]

\[\hat{a}_l^1=\begin{cases} a_k^0, & \text{if $l=2k$ is even} \\ a_k^0, & \text{if $l=2k+1$ is odd} \end{cases}\]

同样地有

\[w_0(x)=\sum_{l \in Z}\hat{b}_l^1\phi(2x-1)\]

\[\hat{b}_l^1=\begin{cases} b_k^0, & \text{if $l=2k$ is even} \\ -b_k^0, & \text{if $l=2k+1$ is odd} \end{cases}\]

将上式相加

\[f_0(x)+w_0(x)=\sum_{l \in Z}a_l^1 \phi(2x-l)\]

\[a_l^1=\hat{a}_l^1+\hat{b}_l^1 = \begin{cases} a_k^0+b_k^0, & \text{if $l=2k$ is even} \\ a_k^0-b_k^0, & \text{if $l=2k+1$ is odd} \end{cases}\]

以此类推,我们可以得到一般性的结论。设

\[f=f_0+w_0+w_1+...+w_j-1\]

\[f_0(x)=\sum_{k \in Z}a_k^0\phi(x-k) \in V_0, w_{j'}(x)=\sum_{k \in Z}b_k^{j'} \psi(2^{j'}x-k) \in W_{j'}\]

其中 \(0 \le j' < j\),那么

\[f(x)=\sum_{l \in Z}a_l^j\phi(2^jx-l) \in V_j\]

\(a_l^{j'}\) 根据如下算法,由 \(j'=1,j'=2,...,j'=j\) 确定

\[a_l^{j'}=\begin{cases} a_k^{j'-1}+b_k^{j'-1}, & \text{if $l=2k$ is even} \\ a_k^{j'-1}-b_k^{j'-1}, & \text{if $l=2k+1$ is odd} \end{cases}\]

例子

以之前为例子,原函数为

\[f(x)=2 \phi(4x) + 2 \phi(4x-1) + \phi(4x-2)-\phi(4x-3)\]

分解后得到

\[f_2(x)= \psi(2x-1)+ \psi(x) + \phi(x)\]

现在要按照原样重构,\(l=0,1,2,3,j'=1,2\)

\[\begin{split} a_0^1&=a_0^0 + b_0^0=1+1=2 \\ a_1^1&=a_0^0 - b_0^0 = 1-1=0 \\ a_2^1&=a_1^0 + b_1^0 = 0+0=0\\ a_3^1&=a_1^0 - b_1^0 = 0-0=0\\ a_0^2&=a_0^1 + b_0^1 = 2+0=2 \\ a_1^2&=a_0^1 - b_0^1 = 2-0=2 \\ a_2^2&=a_1^1 + b_1^1 = 0+1=1 \\ a_3^2&=a_1^1 - b_1^1 = 0-1=-1 \end{split}\]

所以有

\[\begin{split} f(x)&=a_0^2 \phi(4x) + a_1^2 \phi(4x-1)+ a_2^2 \phi(4x-2)+ a_3^2 \phi(4x-3) \\ &=2 \phi(4x) + 2 \phi(4x-1) + \phi(4x-2)-\phi(4x-3) \end{split}\]