1. 小波发展


自从近两百年前Joseph Fourier在研究热力学问题提出Fourier分析以后,长期以来许多数学家一直在寻找更广泛函数空间的性能更好的基底函数族,工程技术领域也一直在寻找更好的时频分析方法,但收获甚微。 

1984年法国的年轻的地球物理学家Jean Morlet在进行石油勘探的地震数据处理分析时与法国理论物理学家A.Grossman一起提出了

小波变换(wavelet transform, WT)的概念并定义了小波函数的伸缩平移系:





dwt离散小波变换分解python_图像




但并没有受到学术界的重视。直到1986年法国大数学家Yves Meyer构造出平方可积空间L2的规范正交基——二进制伸缩平移系:



dwt离散小波变换分解python_jpeg2000_02



1987年正在读硕士的Stephane Mallat将自己熟悉的图像处理的塔式算法引入小波分析,提出多分辨分析的概念和构造正交小波的快速算法——Mallat算法。

1988年法国女科学家Inrid Daubechies构造出具有紧支集的正交小波基——Daubechies小波。

1990年美籍华裔数学家崔锦泰和武汉大学的数学教授王建忠又构造出基于样条函数的单正交小波函数——样条小波。1992年Daubechies在美国费城举行的CBMS-NFN应用数学大会上作了著名的《小波十讲Ten Lectures on Wavelets》报告,掀起了学习与应用小波的高潮。

1994年Wim Swelden提出了一种不依赖于Fourier变换的新的小波构造方法—— 提升模式(lifting scheme),也叫第二代小波或整数小波变换。


连续小波变换

连续小波变换(CWT = Continuous wavelet transform)的定义为:

dwt离散小波变换分解python_小波变换_03

离散小波变换

将连续小波变换的缩放因子a离散化,得到二进小波变换;再将其平移因子b也离散化,就得到离散小波变换。

2. 小波变换

在JPEG 2000的核心编码系统中,对有损压缩采用的是基于Daubechies 9/7 滤波器之提升实现的不可逆DWT,对无损压缩采用的则是基于Le Gall 5/3滤波器之提升实现的可逆DWT。

滤波器通过提升实现。提升的方法:


dwt离散小波变换分解python_jpeg2000_04




dwt离散小波变换分解python_图像_05



(5,3)滤波器,低通滤波器包含 五个系数,高通滤波冲激响应包含 三个非零系数。 滤波器系数表



dwt离散小波变换分解python_图像_06




3 第二代小波变换(整数小波变换)


由于一般的小波滤波器的输出结果是浮点数,因而在对变换后的数据进行压缩时,要先进行量化,以得到相应的整数,这必然会引入误差,不适合于图像的无损压缩。 

1994年Wim Swelden提出了一种新的小波构造方法——提升方案(lifting scheme),也叫第二代小波变换(second generation wavelet transform, SGWT)或[整数到]整数小波变换([integer-to-]integer wavelet transform, [IT]IWT)。

第二代小波变换构造方法的特点是: 

  • 继承了第一代小波的多分辨率的特性; 
  • 不依赖傅立叶变换, 直接在时域完成小波变换; 
  • 小波变换后的系数可以是整数; 
  • 图象的恢复质量与变换时边界采用何种延拓方式无关。 

第二代小波变换是由第一代小波变换的提升实现的。与第一代小波相比,第二代小波还具有以下优点:

  •   算法简单、速度快、适合并行处理; 
  •   对内存的需求量小,便于DSP芯片实现;
  •   可用本位操作进行运算,能实现任意图像尺寸的小波变换。 

由于第二代小波能实现图象的整数到整数的变换,因此给图象的无损压缩提供了理论基础,是JPEG2000标准的一个组成部分。

提升原理

1)  步骤

提升方案把第一代小波变换过程分为以下三个阶段:分解(split),预测(predict)和更新(update)。


dwt离散小波变换分解python_jpeg2000_07




dwt离散小波变换分解python_压缩_08




dwt离散小波变换分解python_图像_09




dwt离散小波变换分解python_小波变换_10



第二代小波变换实现方式相对于第一代小波变换具有如下优势:在进行提升计算时,可以采用替代的方法,因此能节省大量空间;通过子表达式的重复使用,需要计算轮廓和细节部分的浮点操作数目大大减少,因此能提高效率。

可以用提升方法来构造具紧支集的双正交小波,那么就可以通过对每一次滤波后的数据进行取整(用[·]表示)来实现整数小波变换,而且这种变换是完全可逆的,也就是完全重构数据。 

Sweldens已经证明在提升的基础上可以进行整数集到整数集的小波变换,也就是说,一个整数集合通过小波变换得到的仍然是整数集合。这就给数字图象的压缩编码带来了好处,由于不需要对变换后的系数进行量化,因此提供了实现无损压缩的可能。



dwt离散小波变换分解python_图像_11




dwt离散小波变换分解python_小波变换_12




dwt离散小波变换分解python_图像_13




dwt离散小波变换分解python_jpeg2000_14




dwt离散小波变换分解python_dwt离散小波变换分解python_15



4 二维小波变换



dwt离散小波变换分解python_压缩_16




dwt离散小波变换分解python_dwt离散小波变换分解python_17




dwt离散小波变换分解python_jpeg2000_18




dwt离散小波变换分解python_dwt离散小波变换分解python_19




dwt离散小波变换分解python_压缩_20




dwt离散小波变换分解python_小波变换_21



5 图像小波系数特点


图像小波变换系数具有下面几个统计特性:空频局部化,能量压缩特性,子带内小波系数的聚类特性,子带间小波系数的相似性小波系数幅度从低频子带到高频子带的衰减特性

1.      能量集中在低频子带,高频子带部分会出现大量的0或者接近0的系数。

下图所示为3级小波变换系数的分布结构,可以看出,经过小波变换后,大部分图像能量集中在少数变换系数中,大多数变换系数存在于最低频率子带LL3中,而最高频率子带HH1的小波系数绝大多数都接近于零。


dwt离散小波变换分解python_压缩_22


2.      同方向多级子带具有相似性。

即如果小波树的父节点系数值小于某个阈值,则在更高频率子带的相同空间位置和相同方向的子节点系数往往也小于该阈值。


6 二维哈尔小波变换举例



dwt离散小波变换分解python_图像_23



一个图像块是一个二维的数据阵列,可以先对阵列的每一行进行一维小波变换,然后对再行变换之后的阵列的每一列进行一维小波变换,最后对经过变换之后的图像数据阵列进行编码。

经过哈尔小波变换后的矩阵如下:



dwt离散小波变换分解python_dwt离散小波变换分解python_24



左上角的元素表示整个图像块的像素值的平均值,其余是该图像块的细节系数。

如果从矩阵中去掉表示图像的某些细节系数,事实证明重构的图像质量仍然可以接受。具体做法是设置一个阈值,例如的细节系数δ≤5就把它当作“0”看待,这样经过变换之后的上面的矩阵就变成

dwt离散小波变换分解python_压缩_25