计算机视觉
图像处理

小波变换的图像压缩技术

小波分析 (wavelet Analysis) 是 20 世纪 80 年代中期发展起来的一门数学理论和方法,由法国科学家 Grossman 和 Morlet 在进行地震信号分析时提出的,随后迅速发展。 1985 年 Meyer 在一维情形下证明了小波函数的存在性 , 并在理论上作了深入研究。 Mallat 基于多分辨分析思想,提出了对小波应用起重要作用的Mallat算法,它在小波分析中的地位相当于FFT 在经典Fourier变换中的地位。小波分析理论的重要性及应用的广泛性引起了科技界的高度重视。小波分析的出现被认为是傅立叶分析的突破性进展,在逼近 论、微分方程、模识识别、计算机视觉、图像处理、非线性科学等方面使用小波分析取得于许多突破性进展。小波变换的基本思想类似于Fourier变换,就是 用信号在一簇基函数形成空间上的投影表征该信号。经典的Fourier 变换把信号按三角正、余弦基展开,将任意函数表示为具有不同频率的谐波函数的线性迭加,能较好地描述信号的频率特性,但它在空域(时域)上无任何分辨,不 能作局部分析。这在理论和应用上都带来了许多不足。为了克服这一缺陷,提出了加窗Fourier变换。 通过引入一个时间局部化“窗函数”改进了Fourier变换的不足,但其窗口大小和形状都是固定的,没有从根本上弥补Fourier变换的缺陷。而小波变 换在时域和频域同时具有良好的局部化性能,有一个灵活可变的时间-频率窗,它与Fourier变换、加窗Fourier变换相比,能更有效的从信号中提取 信息,通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析(Multiscale Analysis),解决了Fourier变换不能解决的许多困难问题,从而小波变化被誉为“数学显微镜”,它是调和分析发展史上里程碑式的进展。
小 波分析的应用是与小波分析的理论研究紧密地结合在一起的。现在,它已经在科技信息产业领域取得了令人瞩目的成就。 电子信息技术是六大高新技术中重要的一个领域,它的重要方面是图象和信号处理。现今,信号处理已经成为当代科学技术工作的重要部分,信号处理的目的就是: 准确的分析、诊断、编码压缩和量化、快速传递或存储、精确地重构(或恢复)。从数学地角度来看,信号与图象处理可以统一看作是信号处理(图象可以看作是二 维信号),在小波分析地许多分析的许多应用中,都可以归结为信号处理问题。现在,对于其性质随实践是稳定不变的信号,处理的理想工具仍然是傅立叶分析。但 是在实际应用中的绝大多数信号是非稳定的,而特别适用于非稳定信号的工具就是小波分析。
事实上小波分析的应用领域十分广泛,它包括:数学领域的许 多学科;信号分析、图象处理;量子力学、理论物理;军事电子对抗与武器的智能化;计算机分类与识别;音乐与语言的人工合成;医学成像与诊断;地震勘探数据 处理;大型机械的故障诊断等方面;例如,在数学方面,它已用于数值分析、构造快速数值方法、曲线曲面构造、微分方程求解、控制论等。在信号分析方面的滤 波、去噪声、压缩、传递等。在图象处理方面的图象压缩、分类、识别与诊断,去污等。在医学成像方面的减少B超、CT、核磁共振成像的时间,提高分辨率等。
(1) 小波分析用于信号与图象压缩是小波分析应用的一个重要方面。它的特点是压缩比高,压缩速度快,压缩后能保持信号与图象的特征不变,且在传递中可以抗干扰。 基于小波分析的压缩方法很多,比较成功的有小波包最好基方法,小波域纹理模型方法,小波变换零树压缩,小波变换向量压缩等。
(2)小波在信号分析中的应用也十分广泛。它可以用于边界的处理与滤波、时频分析、信噪分离与提取弱信号、求分形指数、信号的识别与诊断以及多尺度边缘检测等。
(3)在工程技术等方面的应用。包括计算机视觉、计算机图形学、曲线设计、湍流、远程宇宙的研究与生物医学方面。

 

 

 

通过自学了小波的信号分解与重构算法、图像分解、降噪与重构算法以及基于小 波的图像融合算法的基本原理,通过阅读李建平译等的《小波十讲》、《科学技术中的小波分析》、孙延奎著的《小波分析及其应用》等书籍,浏览研学论坛的相关 专业版块,我获益良多,并激发了深入学习小波理论、掌握小波应用技术的兴趣,正在往小波分析与神经网络、模式识别结合的方向进行学习研究。

下面,结合相关的专业书籍和网络文献资料,谈谈我对小波的理解:

1、小波与傅立叶变换

任何学科都是由一门基本学科积累发展起来的,要做到学好用好,就得把基本学科的概念、原理理解透、掌握好。小波变换是由傅立叶变换的基础上发展起来的,其前身是短时傅立叶变换。所以,如果傅立叶变换没有学好(深入理解概念),是难以学好小波的。同样地,如果第一代小波变换没学好,也学不好第二代小波变换。不过若注重于编程应用,对基础原理的掌握要求就没那么高了。没学好傅立叶变换,能否操作(编程)小波变换,或是没学好第一代小波,能否操作二代小波变换,这个答案是肯定的。编程应用,只要能理解透算法,就可以相对容易的利用熟悉的程序语言编写实现。所以,要学好用好小波,还是得踏踏实实从最基本的傅立叶变换学起。

2、基的概念

学 习小波,我们首先要明确的是基的概念。基相当于人体的骨骼,支撑其整个函数(信号)空间,信号可以分成无穷多个基的和(叠加)。而展开系数就是基与信号之 间的内积,更通俗的说是投影。展开系数大的,说明信号和基是足够相似的。这也就是相似性检测的思想。但我们必须明确的是,傅立叶变换的基对应于定义在0-2pi区间上的标准正交基,而小波变换是负无穷到正无穷之间的基。因此,小波在实轴上是紧支撑的。而傅立叶的基(正弦或余弦),与此相反。而小波函数能不能成为Reisz基,或标准稳定的正交基,还有其它的限制条件。此外,两者相似的还有就是PARSEVAL定理,即时频能量守恒定理。

3、离散化的处理

傅立叶变换,是一种数学的精妙描述,简洁易懂。但计算机实现,却需要进行离散化处理,一步步把时域和频域离散化开来。第一步,时域离散化,我们得到离散时间傅立叶变换(DTFT),频谱被周期化;第二步,再将频域离散化,我们得到离散周期傅立叶级数(DFS),时域进一步被周期化。第三步,考虑到周期离散化的时域和频域,我们只取一个周期研究,也就是众所周知的离散傅立叶变换(DFT)。需注意的是,DFT是没有物理意义的,它只是我们研究的需要。借此,计算机的处理才成为可能。

至 于小波,所有满足容许性条件(从负无穷到正无穷积分为零)的函数,都可以成为小波。小波作为尺度膨胀和空间移位的一组函数也就诞生了。但连续取值的尺度因 子和平移因子,对于时域计算量和频域的混叠来说,都是极为不便的。用更为专业的俗语,叫再生核。也就是,对于任何一个尺度因子a和平移因子b的小波,与原信号内积,所得到的小波系数,都可以表示成,在ab附近生成的小波,投影后小波系数的线性组合。这就叫冗余性。这时的连续小波是与正交基毫无关系的东西,它顶多也只能作为一种积分变换或基。但它的显微镜特点和相似性检测能力,已经显现出来了。为了进一步更好的将连续小波变换离散化,以下步骤是一种有效方法。第一步,尺度离散化。一般只将a二进离散化,此时b是任意的。这样小波被称为二进小波。第二步,平移量离散化,即离散b。怎么离散化呢?b取多少才合适呢?于是,就有了小波采样定理。也就是小波平移的最小距离(采样间隔),应该大于二倍小波基的最高频率。所以b取尺度的整数倍就行了。也就是越胖的小波,对应频谱越窄,平移量应该越大,采样间隔越大。当然,第一二两步的频域离散,在满足频域窗口中心是频域窗口半径3倍的前提下,频域就在统计上是完美二分的。(但很多小波满足不了这个条件,而且频域窗口能量不集中,所以只是近似二分的)。这时的小波变换,称为离散二进小波变换。第三步,引入稳定性条件。也就是经过变换后信号能量和原信号能量有什么不等式关系。满足稳定性条件后,也就是一个小波框架产生成了可能。他是数值稳定性的保证。

4、快速算法

如果说现代数字信号处理革命的算法,甚至是很多快速算法的始祖,或者是满矩阵向量乘法一个几乎不可抗拒的最小计算量NlogN,那就是令人不得不佩服的快速傅立叶变换(FFT)。这里主要说的就是FFT的 时频对应关系,也就是算法的来源。根据时域卷积定理,时域的卷积对应频域的相乘,因此我们为了实现卷积,可以先做傅立叶变换,接着在频域相乘,最后再做反 傅立叶变换。这里,可以看出,圆周卷积和离散傅立叶变换,可以说是一家子的。快速傅立叶是离散傅立叶的快速算法。因此,我们实现离散线性卷积,先要补零。 然后使得它和圆周卷积相等。然后就是快速傅立叶变换,频域相乘,最后反快速傅立叶变换。当然,如果我们需要的就是圆周卷积,那我们也就不用多此一举的补 零。这里,我们可以把圆周卷积,写成矩阵形式。这点很重要。Y=AX,这里的A是循环矩阵。但不幸的是A仍然是满阵。另外提一下,MATLAB自带的FFT函数是用机器语言编写的,其计算速度是其他程序语言难以望及的,因此,如果要用MATLAB语言或者C语言实现FFT,就要忍受一下其相对较慢的运算速度了。

小波的快速算法,MALLAT算法,是一个令人振奋的东西。它很好地描述了多分辨率分析(多尺度分析)的本质,并且由此使多分辨率分析推广开来。很形象地说,算法是这样一个过程,在一个较高的尺度(细节)上作离散小波变换, 得到了一个小波系数序列(矩阵),如果想得到比它尺度低的小波系数(概貌),就不用再计算内积,只是把较高尺度的小波系数与低通或高通滤波器卷积再抽取即 可。但是,算法的推导过程是在整个实轴上进行的,即把信号看成无限长的,这个假设比较强,经常需要对信号进行延拓。还有,我们还必须在较高尺度上作一次内 积,才可以使用此算法。因此,我们开始简化,并扩展此理论:

第一,我们把信号的采样,作为一个较高层的小波系数近似初始值。(这是可以的,因为小波很瘦时,和取样函数无异);

第二,我们把原来的卷积,换为圆周卷积。这和DSP何尝不一样呢?他的物理意义,就是把信号作周期延拓(边界处理的一种),使之在整个实轴上扩展。

这种算法一个迷人的优点是,它是完全正交的,也就是说是正交变换。正变换Y=AX;反变换X=A’Y;一般对于标准正交基,A’A的共轭转置,对于双正交A’A的对偶矩阵。但不管如何,我们可以大胆的写,AA’=A’A=I。这里I是单位矩阵。

那怎样操作才是最快的呢?我们来分析矩阵A的特点,首先A是正交阵,其次A是有循环矩阵特点,但此时A上半部分是由低通滤波器构成的循环子矩阵,下半部分是由高通滤波器构成的子矩阵,但却是以因子2为循环的。为什么,因为你做了2抽取。所以我们可以,实现小波变换用快速傅立叶变换。这时如果A是满阵的,则复杂度由O(N.^2)下降到(NlogN)。但还有一点,我们忘了A是稀疏的,因为信号是很长的,而滤波器确实很短的,也就是这个矩阵是个近似对角阵。所以,快速傅立叶是不快的。因此,小波变换O(N)复杂度的。这是它的优势。但要实现,却不是那么容易,第一个方法,稀疏矩阵存储和稀疏矩阵乘法。第二个方法,因子化。因子化,是一个杰出的贡献。它在原有的O(N)的复杂度基础上,对于长滤波器,又把复杂度降低一半。但量级仍然是O(N)

上述的这个快速算法是研学论坛上一位网友提出的,我还没很好的理解,还有待进一步钻研并努力编写程序实现它。

5、时频分析

对 于平稳信号,傅立叶再好不过了。它反映的是信号总体的整个时间段的特点。在频率上,是点频的,即信号频率是离散的。而对于非平稳信号,它就无能为力了。而 小波恰好对此派上用场。小波能够反映信号在某个时间段的特点。在频域上,能表征某个频率段的特点。也就是小波能够满足时频分析的需要。但小波,作为频谱分 析确实存在很多问题。但我们确实可以做出很多的小波满足这个特点。冉启文著的《小波变换与分数傅立叶变换》一书有详细的介绍。

6、压缩、消噪、特征提取

傅立叶变换的压缩,已经广泛应用了。它的简化版本就是离散余弦变换(DCT)。而小波包的提出,也就使DCT有些相形见绌。首先,它提出代价函数,一般就是熵准则。其次,一个自适应树分解。再次,基于矩阵范数或较少位编码的稀疏化策略。这些使小波包的压缩近乎完美。小波包是从频域上实现的。从时域上,我们也可采用类似的分裂和合并算法,来实现信号的最优表达,这种可变窗小波成为MALVAR小波。要记住的是,压缩是小波最大的优势。

消噪,一般的傅立叶算法,一般可以是IIR滤波和FIR滤波。两者各有优缺点。而小波的消噪,一般也是由多层分解和阈值策略组成。我们需要的是信号的特点,噪声的特点,然后确定用不用小波,或用什么小波。这点上,小波的优势并不是很明显。

特征提取。这是小波的显微镜特点很好地运用。利用模极大值和LIPSCHITZ指数,我们可以对信号的突变点做分析。但这里面的问题也是很多。首先,在不同尺度上,噪声和信号的模极大值变化不同。再次,一般我们用求内积方法,求模极大值,而不用MALLAT算法,或者改用叫多孔算法的东西来做。

 

总的来说,学习小波,我们应该明确的几点是:

1、要对小波概念有着明确的理解。对诸如多分辨率分析,时频窗口与分析,框架,消失矩,模极大值,LIPSCHITZ指数等有着清醒的认识。

2、必须考虑小波在应用问题上的可行性,这点尤为重要,小波不是万能的。

3、必须考虑什么样的小波是合适的。

4、必须给出一个评价的标准。(熵准则,模极小值等)

5、必须确定一种算法,是用小波还是小波包或是类小波。(MALLAT,直接求内积,多孔,模极大值重构)。

6、要把自己做的效果和其他人的作比较,看看有没有优势。

7、自己编写几乎所有程序,不依靠TOOLBOX里任何的函数。(一些常用的除外)。这样会使自己获益不少。

 

 

 

我们知道,图像压缩就是要寻找高压缩比、并使压缩后的图像有合适的信噪比的方法,对压缩后的图像还要能实现低失真度地恢复图像。压缩性能的评价标准之一是图像能量损失和零系数成分值。能量损失越小,零系数成分值越大,图像压缩的性能就越高。
 
小波图像压缩的特点是压缩比高,压缩速度快,能量损失低,能保持图像的基本特征,且信号传递过程抗干扰性强,可实现累进传输。
 
首先我们简单了解一下二维小波变换的塔式结构。我们知道,一维小波变换其实是将一维原始信号分别经过低通滤波和 高通滤波以及二元下抽样得到信号的低频部分L和高频部分H。而根据Mallat算法,二维小波变换可以用一系列的一维小波变换得到。对一幅m行n列的图 像,二维小波变换的过程是先对图像的每一行做一维小波变换,得到L和H两个对半部分;然后对得到的LH图像(仍是m行n列)的每一列做一维小波变换。这样 经过一级小波变换后的图像就可以分为LL,HL,LH,HH四个部分,如下图所示,就是一级二维小波变换的塔式结构:
LL
HL
LH
HH
图1
而二级、三级以至更高级的二维小波变换则是对上一级小波变换后图像的左上角部分(LL部分)再进行一级二维小波变换,是一个递归过程。下图是三级二维小波变换的塔式结构图:
LL3
HL3
HL2
HL1
LH3
HH3
LH2
HH2
LH1
HH1
图2
一个图像经过小波分解后,可以得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率也不同。高分辨率 (即高频)子图像上大部分点的数值都接近于0,分辨率越高,这种现象越明显。要注意的是,在N级二维小波分解中,分解级别越高的子图像,频率越低。例如图 2的三级塔式结构中,子图像HL2、LH2、HH2的频率要比子图像HL1、LH1、HH1的频率低,相应地分辨率也较低。根据不同分辨率下小波变换系数 的这种层次模型,我们可以得到以下三种简单的图像压缩方案。
 
方案一:舍高频,取低频
一幅图像最主要的表现部分是低频部分,因此我们可以在小波重构时,只保留小波分解得到的低频部分,而高频部分系数作置0处理。这种方法得到的图像能量损失大,图像模糊,很少采用。
另外,也可以对高频部分的局部区域系数置0,这样重构的图像就会有局部模糊、其余清晰的效果。
方案二:阈值法
对图像进行多级小波分解后,保留低频系数不变,然后选取一个全局阈值来处理各级高频系数;或者不同级别的高频系 数用不同的阈值处理。绝对值低于阈值的高频系数置0,否则保留。用保留的非零小波系数进行重构。Matlab中用函数ddencmp()可获取压缩过程中 的默认阈值,用函数wdencmp()能对一维、二维信号进行小波压缩。
方案三:截取法
将小波分解得到的全部系数按照绝对值大小排序,只保留最大的x %的系数,剩余的系数置0。不过这种方法的压缩比并不一定高。因为对于保留的系数,其位置信息也要和系数值一起保存下来,才能重构图像。并且,和原图像的 像素值相比,小波系数的变化范围更大,因而也需要更多的空间来保存。

转载注明来源:CV视觉网 » 小波变换的图像压缩技术

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

2不错 0超赞 1无聊 0扯淡 0不解 0路过

评论 4

评论前必须登录!