Python 离散小波变换(DWT) pywt库

文章目录

*

+ 一、小波变换
+
* 离散小波变换函数
+ 二、Haar 变换
+
* 2.1 一维Haar变换
* 2.2 二维离散小波变换
* 2.3 pywt 小波以及详情
+ 三、代码演示
+
* haar 演示
* Daubechies (db2)演示
* Biorthogonal (bior)演示

简便安装: pip install PyWavelets

或者 conda install PyWavelets

源码安装:
下载源码

tar zxvf PyWavelets-1.1.1.tar.gz PyWavelets-1.1.1
cd PyWavelets-1.1.1
sudo python3 setup.py build
sudo python3 setup.py install

使用文档:https://pywavelets.readthedocs.io/en/latest/ref/index.html

一、小波变换

尺度函数 : scaling function (又称为父函数 father wavelet )
小波函数 : wavelet function(又称为母函数 mother wavelet)
连续的小波变换 :CWT
离散的小波变换 :DWT

小波变换的基本知识:
不同的小波基函数,是由同一个基本小波函数经缩放和平移生成的。
小波变换是将原始图像与小波基函数以及尺度函数进行内积运算, 所以一个尺度函数和一个小波基函数就可以确定一个小波变换。

离散小波变换函数

下面先列举3条关键理解:

  • 小波分解,分解到的” 不是频率域“!可以抽象理解为” 小波域“,但其实没有实际内涵!傅里叶变换到频率域是有实际内涵的;
  • 小波分解得到的” 小波系数“是” 没有量纲“的!它其实是” 没有实际意义的数“,需要做系数重构才能从” 小波域“再转回到” 时域“;
  • 系数重构“与” 重构信号“不是一个东西!系数重构就是把无量纲的小波分解系数变回到有意义的” 时域“;”重构信号”就是把分解的完整恢复回去。

离散小波变换函数:不同的 适用处搭配函数.

  • 分解与重构/恢复信号:
  • 1级分解重构原始信号函数为: dwtdwt2idwtidwt2
  • 多级(包括1级)分解重构原始信号函数为: wavedecwavedec2waverecwaverec2;所以 wavedec可涵盖 dwt
  • 系数重构:
  • 1级分解的 系数重构用函数的是: upcoefupcoef2
  • 多级分解的 系数重构用函数的是: wrcoefwrcoef2
  • (多级)系数提取:
  • 多级分解 低频近似系数提取: appcoefappcoef2
  • 多解分解 高频细节系数提取: detcoefdetcoef2

说明: “系数提取”只有”多级分解”才会用的到! 1级分解是不需要”系数提取”的!因为就分成了低频和高频2个部分,直接用1维或2维分解函数的返回结果就行了!所以:多级分解的系数提取,就相当于1级分解后的返回结果的直接画图。

二、Haar 变换

2.1 一维Haar变换

设原始一维数据 a = [ a 1 , a 2 , a 3 , a 4 ] a = [a_1,a_2,a_3,a_4]a =[a 1 ​,a 2 ​,a 3 ​,a 4 ​] , Haar低通滤波 [ 1 , 1 ] [1, 1][1 ,1 ] , Haar高通滤波 [ − 1 , 1 ] [-1, 1][−1 ,1 ],

则Haar小波变换为:b = [ a 1 + a 2 2 , a 3 + a 4 2 , a 1 − a 2 2 , a 3 − a 4 2 ] b = [\frac{a_1+a_2}{2},\frac{a_3+a_4}{2},\frac{a_1-a_2}{2},\frac{a_3-a_4}{2}]b =[2 a 1 ​+a 2 ​​,2 a 3 ​+a 4 ​​,2 a 1 ​−a 2 ​​,2 a 3 ​−a 4 ​​], 当需要进行下2采样时计算其均值(也有保留偶数序列),直接取[ b 1 , b 2 ] [b_1,b_2][b 1 ​,b 2 ​]

再次进行小波变换:c = [ b 1 + b 2 2 , b 1 − b 2 2 ] c = [\frac{b_1+b_2}{2},\frac{b_1-b_2}{2}]c =[2 b 1 ​+b 2 ​​,2 b 1 ​−b 2 ​​], 下2采样为 c1 。将 [ b 3 , b 4 ] [b_3,b_4][b 3 ​,b 4 ​]称为细节系数。

因此通过Haar 变换,一幅分辨率为4的数据就可以由:分辨率为1,以及3个细节系数表示。同样由降采样的数据和细节系数可以恢复出原始数据。从上面计算过程可以看出:矢量a 与低通滤波器卷积得到近似,与高通滤波器卷积得到细节。

小波变换计算详情:请查看

2.2 二维离散小波变换

有些背景噪声, 在一维信号中体现的是随机性,但有可能在二维信号中就显示出很强的区域性或具有较明显的特征性,二维信号的直观反映就是图像! 其本质为一个二维矩阵;在往本质上说它和一维离散数据信号其实内涵都是相同的。总之:二维离散小波变换处理的是二维数值离散矩阵。

二维图像Haar变换
从水平和竖直两个方向进行低通和高通滤波(水平和竖直先后不影响),用图像表述如下图所示:

Python 离散小波变换(DWT) pywt库

其中:

  • b: 原图信息
  • h1 :水平方向的细节(高频信息),
  • v1 表示竖直方向的细节(高频信息),
  • c1表示对角线方向的细节(高频信息)

A是低频信息,H是水平高频信息,V是垂直高频信息、D是对角高频信息。

Python 离散小波变换(DWT) pywt库
假设一张图片只有4个像素(a,b,c,d),其经过2-D DWT之后得到4张子图,每个子图的详细计算过程如下:
Python 离散小波变换(DWT) pywt库

; 2.3 pywt 小波以及详情

import pywt
for family in pywt.families():
     print("%s family: " % family + ', '.join(pywt.wavelist(family)))
========================
haar family: haar
db   family: db1, db2, db3, db4, db5, ... , db35, db36, db37, db38
sym  family: sym2, sym3, sym4, sym5, ... , sym15, sym16, sym17, sym18, sym19, sym20
coif family: coif1, coif2, coif3, coif4, coif5, ..., coif13, coif14, coif15, coif16, coif17
bior family: bior1.1, bior1.3, bior1.5, bior2.2, bior2.4, bior2.6, bior2.8, bior3.1, bior3.3, bior3.5, bior3.7, bior3.9, bior4.4, bior5.5, bior6.8
rbio family: rbio1.1, rbio1.3, rbio1.5, rbio2.2, rbio2.4, rbio2.6, rbio2.8, rbio3.1, rbio3.3, rbio3.5, rbio3.7, rbio3.9, rbio4.4, rbio5.5, rbio6.8
dmey family: dmey
gaus family: gaus1, gaus2, gaus3, gaus4, gaus5, gaus6, gaus7, gaus8
mexh family: mexh
morl family: morl
cgau family: cgau1, cgau2, cgau3, cgau4, cgau5, cgau6, cgau7, cgau8
shan family: shan
fbsp family: fbsp
cmor family: cmor

小波函数
H a a r ( h a a r ) \mathbf{Haar(haar)}H a a r (h a a r )

Daubechies (db)Biorthogonal (bior)Coiflets (coif)Symlets (sym)Morlet (morl)Mexican Hat (mexh)
表示形式

haar
d b N \mathrm{db} N d b N b i o r N r . N d \mathrm{bior}Nr.Nd b i o r N r .N d c o i f N \mathrm{coif}N c o i f N s y m N \mathrm{sym} N s y m N

morlmexh
正交性

有有无有有无无
双正交性

有有有有有无无
紧支撑性

有有有有有无无
连续小波变换

可以可以可以可以可以可以可以
离散小波变换

可以可以可以可以可以不可以不可以
支撑长度

12N-1重构:
2Nr+1 \textit{2Nr+1}2Nr+1

分解:
2Nd+1 \textit{2Nd+1}2Nd+1

6N-12N-1有限长度有限长度
滤波器长度

22N
M a x ( 2 N r , 2 N d ) + 2 \mathrm{Max}(2Nr,2Nd)+2 M a x (2 N r ,2 N d )+2

6N2N[-4, 4][-5, 5]
对称性

对称近似对称不对称近似对称近似对称对称对称
小波函数消失矩阶数

1NNr-12NN–
尺度函数消失矩阶数

–2N-1— 小波函数Gaus (gaus)Dmeyer (dmey)ReverseBior (rbioNr.Nd)Cgau (cgau)Cmor (cmor)Fbsp (fbsp)Shan (shan)
表示形式g a u s N \mathrm{gaus} N g a u s N

dmey
r b i o N r . N d \mathrm{rbio}Nr.Nd r b i o N r .N d c g a u N \mathrm{cgau} N c g a u N

cmorfbspshan
紧支撑正交性

无无无无无无无紧支撑双正交性无无有无无无无
连续小波变换

可以不可以可以不可以不可以不可以不可以
离散小波变换

不可以可以可以不可以不可以不可以不可以
对称性

对称对称对称对称对称对称对称
小波函数消失矩阶数

Original: https://blog.csdn.net/wsp_1138886114/article/details/116780542
Author: SongpingWang
Title: Python 离散小波变换(DWT) pywt库

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/673851/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球