Wavelet Transform & Image Compression

                                         /***********************Wavelet  Transform出现背景***********************/
html

       图像编码在保证必定重构质量的前提下,经过取出图像中的各类冗余,以尽可能少的比特数来表示图像。
算法

       图像编码长期以来主要利用离散余弦变换(DCT)做为变换编码的主要技术,然而存在以下一些问题:(1)利用DCT变换存在明显的方块效应,(2)不适用于对非平稳信号,(3)要进一步提升压缩性能很困难。
api

       小波变换是在短时傅里叶变换的基础上发展起来的一种新型变换方法,他是一种时—频分析法,具备多分辨率分析 (MultiresolutionAnalysis)的特色,并且在时、频域都具备表征信号局部特征的能力,是一种窗口大小不变、形状可变、时间窗和频率 窗均可以改变的时频局部化分析方法。小波变换因为具备很好的时—频特性并且能够匹配人类视觉系统的特性,于是获得图像压缩编码领域的极大关注。网络

       

       首先咱们简单了解一下二维小波变换的塔式结构。咱们知道,一维小波变换实际上是将一维原始信号分别通过低通滤波和高通滤波以及二元下抽样获得信号的低频部分 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的三级塔式结构中,子图像HL二、 LH二、HH2的频率要比子图像HL一、LH一、HH1的频率低,相应地分辨率也较低。根据不一样分辨率下小波变换系数的这种层次模型,咱们能够获得如下三 种简单的图像压缩方案。
     
       方案一:舍高频,取低频
        一幅图像最主要的表现部分是低频部分,所以咱们能够在小波重构时,只保留小波分解获得的低频部分,而高频部分系数做置0处理。这种方法获得的图像能量损失大,图像模糊,不多采用。
另外,也能够对高频部分的局部区域系数置0,这样重构的图像就会有局部模糊、其他清晰的效果。
       方案二:阈值法
       对图像进行多级小波分解后,保留低频系数不变,而后选取一个全局阈值来处理各级高频系数;或者不一样级别的高频系数用不一样的阈值处理。绝对值低于阈值的高频 系数置0,不然保留。用保留的非零小波系数进行重构。Matlab中用函数ddencmp()可获取压缩过程当中的默认阈值,用函数wdencmp()能对 一维、二维信号进行小波压缩。
        方案三:截取法
        将小波分解获得的所有系数按照绝对值大小排序,只保留最大的x %的系数,剩余的系数置0。不过这种方法的压缩比并不必定高。由于对于保留的系数,其位置信息也要和系数值一块儿保存下来,才能重构图像。而且,和原图像的 像素值相比,小波系数的变化范围更大,于是也须要更多的空间来保存。

       小波分析在图像领域的应用应归功于Mallat。1987年,Mallat巧妙地将计算机视觉领域内的多尺度分析思想引入到小波分析中小波函数的构造,从 而统一了在此以前的各类小波的构造方法。Mallat研究了小波变换的离散形式,并将相应的算法应用于图像的分解与重建,为随后的小波图像压缩奠基了基 础。进入90年代,利用小波进行图像压缩的研究获得了空前的关注。这一时期正是互联网蓬勃兴起的时候,所以如何适应网络的特色进行图像编码获得了重视。 1993年,Shapiro首先将零树的概念引入到小波图像压缩中,这种称为EZW的方法能够对图像进行渐进性编码,具备很高的压缩性能,很是适合于网络 图像的传输与浏览。对于图像来讲,若是须要进行快速或实时传输以及大量存储,就须要对图像数据进行压缩。在一样的通讯容量下,若是图像数据压缩后再传输, 就能够传输更多的图像信息。例如,用普通的电话线传输图像信息。图像压缩研究的就是寻找高压缩比的方法且压缩后的图像要有合适的信噪比,在压缩传输后还要 恢复原信号,而且在压缩、传输、恢复的过程当中,还要求图像的失真度小,这就是图像压缩的研究问题。图像数据每每存在各类信息的冗余、如空间冗余、信息熵冗 余、视觉冗余和结构冗余等等。所谓压缩就是去掉各类冗余,保留对咱们有用的信息。图像压缩的过程常称为编码。相对的,图像的恢复就是解码。图像压缩的方法 一般可分为有失真编码和无失真编码两大类:无失真编码方法如改进的霍夫曼编码。有失真编码方法的还原图像较之原始图像存在着一些偏差,但视觉效果是能够接 受的。常见的方法有预测编码、变换编码、量化编码、信息熵编码、分频带编码和结构编码等。在小波分析中也有两个重要的数学实体:"积分小波变换"和"小波 级数"。积分小波变换是基小波的某个函数的反射膨胀卷积,而小波级数是称为小波基的一个函数,用两种很简单的运算"二进制膨胀"与"整数平移"表示。经过 这种膨胀和平移运算能够对信号进行多尺度的细致表示。经过这种膨胀和平移运算能够对信号进行多尺度的细致的动态分析,从而可以解决Fourier变换不能 解决的许多困难问题。利用小波变换能够一次变换整幅图像,不只能够达到很高的压缩比,并且会出现JPEG重建图像中的"方块"效应,但编码器复杂,有潜像 问题。app

       因为小波及小波包技术能够将信号或图像分层次按小波基展开,因此能够根据图像信号的性质以及事先给定的图像处理要求肯定到底要展开到哪一级为止,从而不只 能有效地控制计算量,知足实时处理的须要,并且能够方便地实现一般由子频带、层次编码技术实现的累进传输编码(即采起逐步浮现的方式传送多媒体图像)。这 样一种工做方式在多媒体数据浏览、医学图片远程诊断时是很是必要的。另外,利用小波变换具备放大、缩小和平移的数学显微镜的功能,能够方便地产生各类分辨 率的图像,从而适应于不一样分辨率的图像I/O设备和不一样传输速率的通讯系统。相比之下,利用KL变换进行压缩编码,只能对整幅图像进行;而利用小波变换则 可以比较精确地进行图像拼接,所以对较大的图像能够进行分块处理,而后再进行拼接。显然,这种处理方式为图像的并行处理提供了理论依据。
  
实 际上,因为小波变换分析具备以上许多优势,因此在最近颁布的运动图像压缩标准MPEG4中的视觉纹理模式就支持视觉纹理和静态图像编码。这种模式基于零高 度树小波算法,在很是宽的比特率范围内具备很高的编码效率。除了具备很高的压缩效率以外,它还提供了空间和质量的可缩放性,以及对任意形状目标的编码。其 空间可缩放性高达11级,质量的可缩放性具备连续性。小波公式以累进传输和时间上扩充静态图像分辨率金字塔的形式提供比特率可缩放的编码。编码的位流也可 以用于图像分辨率层次抽样。这种技术提供了分辨率的可缩放性,以便处理在交互应用场合普遍的观察条件,以及把2D图像映射到3D虚拟空间。函数

       小波变换以小波函数做为函数展开的基底,在时域和频域同时具备良好的局部特性,能够在多尺度上对信号进行多分辨率的分析。在过去的不少年里,小波变换在一 般的信号处理和图像压缩研究中被普遍地接受。在许多应用中,基于小波的方法(也叫子频带编码)要赛过其余编码方法(好比基于DCT的)。由于不必对图像 分块而且基函数可变长度,小波编码方法在高压缩率时没有方块效应。基于小波的编码对传输和解码错误更具备鲁棒性,有利图像的逐步传输 (prograssivetransmission)。此外,它们更符合HVS的特色。由于它们自己固有的多尺度性质,小波编码方法很适合那些重视可伸缩 性(scalability)和可容忍退化(tolerabledegradation)的应用。基于小波变换的图像压缩有着很是优越的特色。即压缩比 高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传递过程当中能够抗干扰等等。基于小波变换的图像压缩是在二维离散小波变换的基础上发展起来的 一种塔式快速算法。他的分解以及合成过程都是迭代运算,基本原理以下:对原始图像在水平方向和垂直方向与2个滤波器(低通、高通)相卷积,能够获得4块面 积为原图像1/4的子图,分别为水平方向低频和垂直方向低频(HH)、水平方向低频和垂直方向高频(HG)、水平方向高频和垂直方向低频(GH)、水平方 向高频和垂直方向高频(GG)。HG,GH,GG称为细节子图,HH称为原图像的低分辨率子图,以上只是图像的一级小波分解,对HH再作一样的运算就能够 获得图像的二级小波分解,以此类推,还能够获得三级小波分解,四级小波分解……以WOMAN图像为例,对其进行小波分解,过程如图1所示。合成的过程与上 述分解过程相反下面咱们举个例子来深刻的认识一下这种优越的压缩算法。性能


function wt()

a=imread('C:\MATLAB7\work\2.jpg');

A=rgb2gray(a);

%显示图像

subplot(2,4,1);

imshow(uint8(A));

title('原始图像');

axis square

disp('压缩前图像X的大小');

whos('A')

%对图像用小波进行层小波分解

[c,s]=wavedec2(A,2,'bior3.7');

%提取小波分解结构中的一层的低频系数和高频系数

cal=appcoef2(c,s,'bior3.7',1);

%水平方向

ch1=detcoef2('h',c,s,1);

%垂直方向

cv1=detcoef2('v',c,s,1);

%斜线方向

cd1=detcoef2('d',c,s,1);

%各频率成份重构

a1=wrcoef2('a',c,s,'bior1.3',1);

h1=wrcoef2('h',c,s,'bior1.3',1);

v1=wrcoef2('v',c,s,'bior1.3',1);

d1=wrcoef2('d',c,s,'bior1.3',1);

c1=[a1,h1;v1,d1];

%显示分频信息

subplot(2,4,2);

imshow(uint8(c1));

axis square;

title ('分解后低频和高频信息');

%进行图像压缩

%保留小波分解第一层低频信息

%首先对第一层信息进行量化编码

ca1=appcoef2(c,s,'bior3.7',1);

ca1=wcodemat(ca1,460,'mat',1);

%改变图像高度并显示

ca1=0.5*ca1;

subplot(2,4,3);

imshow(uint8(ca1));

axis square;

title('第一次压缩图像');

disp('第一次压缩图像的大小为:');

whos('ca1')

%保留小波分解第二层低频信息进行压缩

ca2=appcoef2(c,s,'bior3.7',2);

%首先对第二层信息进行量化编码

ca2=wcodemat(ca2,440,'mat',2);

%改变图像高度并显示

ca2=0.25*ca2;

subplot(2,4,4);

imshow(uint8(ca2));

axis square;

itle('第二次压缩图像');

disp('第二次压缩图像的大小为:');

whos('ca2')

压缩前图像X的大小优化

 Name     Size                   Bytes  Classui

     512x512              3145728  uint8 array编码

第一次压缩图像的大小为:

 Name     Size                   Bytes  Class

 ca1    263x263              6392200  double array

第二次压缩图像的大小为:

 Name     Size                   Bytes  Class

 ca2    139x139                1652680 double array

       由上述程序运行结果能够发现小波变换在图像压缩领域的应用是颇有优点的。并且在当今图像压缩纷繁复杂的算法当中基于小波变换的图像压缩算法还有待于更好的优化。可以调试一个更优化的图像压缩算法对于图像传输和图像优化等方面是十分有价值的。

      因为小波变换继承了Fourier(余弦变换和正弦变换均可以视为Fourier变换的特例)分析的优势,同时又克服它的许多缺点因此它在静态和动态图像 压缩领域获得普遍的应用,而且已经成为某些图像压缩国际标准(如MPEG-4)的重要环节。固然,像其余变换编码同样,在压缩比特别高的时候,小波变换压 缩量化后的重建图像也会产生几何畸变。但伴随着人们对小波基和小波分析的认识的日益成熟相信对于小波变换在图像压缩方面的应用将会更加普遍。

相关文章
相关标签/搜索