小波变化库——Pywalvets学习笔记

时间:2022-06-12 15:50:02

笔记

术语(中英对照):

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

小波变换的基本知识:

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

基本的小波变换函数

Pywalvets API 说明

1.查看小波族:pywt.families

2.查看每个小波族中提供的系数:pywt.wavelist

pywt.wavelist(family = None, kind = 'all')

family:小波族的名称

kind:可以查看小波族下全部、离散、连续的小波

3.二维小波变换(一维和n维类似):

单层变换 pywt.dwt2

pywt.dwt2(data, wavelet, mode='symmetric', axes=(-2, -1))

data:输入的数据

wavelet:小波基

mode:默认是对称的

return:(cA, (cH, cV, cD))要注意返回的值,分别为低频分量,水平高频,垂直高频,对角线高频。高频的值包含在一个tuple中。

单层逆变换 pywt.idwt2

pywt.idwt2(coeffs, wavelet, mode, axes)

coeffs:经小波变换后得到的各层的系数(coeffs 多项式系数)

wavelet:小波基

多尺度变换 wavedec2

pywt.wavedec2(data, wavelet, mode='symmetric', level=None, axes=(-2, -1))

data:输入的数据

wavelet:小波基

level:尺度(要变换多少层)

return:返回的值要注意,每一层的高频都包含在一个tuple中,例如3层的话返回为[cA3, (cH3, cV3, cD3), (cH2, cV2, cD2), (cH1, cV1, cD1)]

阈值函数 pywt.threshold

pywt.threshold(data, value, mode=, substitute=)        # threshold 临界值,极限

data:输入的数据

value:阈值

mode:阈值函数的类型,API提供四种类型(soft hard greater less)

substitute:要替换的值(经阈值函数处理后的值)   # substitute 替换

利用小波变换对图像进行处理时注意的问题

1.小波基的选择问题

API给出了很多小波族,每个小波族又有很多系数可供选择,在处理图片时怎么选择并没有标准答案,在实验过程中主要用到最后的结果——“相同类的统计特征相近,不同类的统计特征相差很大”来挑选小波基函数。

2.多尺度(多次)小波变化中层数的选择

多尺度小波变换一般是3~4层,但注意是,图片太小,或纹理不丰富,用单层的小波变换就足够了。如果用多层的小波变换,Pywalvets仍会返回一层变换的结果,因为信息量过小导致不能采样来进一步进行变换。