基于小波变换实现图像压缩编码Word文档下载推荐.docx
《基于小波变换实现图像压缩编码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于小波变换实现图像压缩编码Word文档下载推荐.docx(27页珍藏版)》请在冰点文库上搜索。
WaveletTransform;
ImageCompression;
第一章前言
1.1图像压缩的必要性
图像数字化后,其数据量非常庞大,例如,对于640*480像素的彩色图像,如果每个像素的位深度为24,即24bit/像素,按照30帧/s的速度进行播放,则一张650M的光盘只能存储大约24s左右的播放画面。
当前随着多媒体通信和计算机通信网的快速发展,图像传输已成为重要的通信内容,无论是图像数据的传输还是存储,都要求对图像数据进行压缩,以减少图像通信的数据量和图像存储的空间。
根据目前网络多媒体通信技术的现状和发展趋势,在将来相当长的一段时间内,数字化的媒体数据以压缩形式存储和传输将势在必行。
在多媒体计算机系统,电子出版,视频会议,数字图书馆等众多领域数字图像都有着广泛的应用。
然而,大数据量的图像,使存储成本变高,而现在的网络环境不能满足多媒体通信的需求。
在此背景下,图像编码理论迅速发展了起来,并且越来越受到广泛的关注。
1.2图像压缩原理
对于给定的任何图像,图像都能分解成一个轮廓信号(低频子图)和水平、垂直、对角线三个方向上的细节信号(高频子图),相应的轮廓信号又可以进一步分解。
而图像的主要能量部分是低频部分,而且人眼视觉系统对低频部分更为敏感,所以可以对低频部分进行低压缩比,对高频部分相应采用较高压缩比,最终再将所有的分量进行图像重构,重构后的图像即是预期压缩处理后的图像。
1.3小波变换编码的发展现状
小波分析诞生于20世纪80年代,被认为是调和分析即现代Fourier分析发展的一个崭新阶段。
众多高新技术以数学为基础,而小波分析被誉为“数学显微镜”,这就决定了它在高科技研究领域重要的地位。
目前,它在模式识别、图像处理、语音处理、故障诊断、地球物理勘探、分形理论、空气动力学与流体力学上的应用都得到了广泛深入的研究,甚至在金融、证券、股票等社会科学方面都有小波分析的应用研究。
在传统的傅立叶分析中,信号完全是在频域展开的,不包含任何时频的信息,这对于某些应用来说是很恰当的,因为信号的频率的信息对其是非常重要的。
但其丢弃的时域信息可能对某些应用同样非常重要,所以人们对傅立叶分析进行了推广,提出了很多能表征时域和频域信息的信号分析方法,如短时傅立叶变换,Gabor变换,时频分析,小波变换等。
其中短时傅立叶变换是在傅立叶分析基础上引入时域信息的最初尝试,其基本假定在于在一定的时间窗内信号是平稳的,那么通过分割时间窗,在每个时间窗内把信号展开到频域就可以获得局部的频域信息,但是它的时域区分度只能依赖于大小不变的时间窗,对某些瞬态信号来说还是粒度太大。
换言之,短时傅立叶分析只能在一个分辨率上进行。
所以对很多应用来说不够精确,存在很大的缺陷。
而小波分析则克服了短时傅立叶变换在单分辨率上的缺陷,具有多分辨率分析的特点,在时域和频域都有表征信号局部信息的能力,时间窗和频率窗都可以根据信号的具体形态动态调整,在一般情况下,在低频部分(信号较平稳)可以采用较低的时间分辨率,而提高频率的分辨率,在高频情况下(频率变化不大)可以用较低的频率分辨率来换取精确的时间定位。
1.4论文内容结构
本文首先介绍了小波变换的基本理论,包括连续小波变换,离散小波变换和小波基。
然后用MATLAB实现具体图像的压缩编码,包括基于小波变换的图像局部压缩,利用二维小波变换进行图像压缩,基于小波包变换的图像压缩。
第二章小波变换的基本理论
2.1连续小波变换
定义:
设
,其FourierTransform为
,当
满足条件时,
(2-1)
我们称
为一个基本小波(或者母小波)。
(2-2)
将母函数
伸缩和平移后获得一个小波序列。
其中a为伸缩因子,b为平移因子。
对于任意的函数
的连续小波变换为
(2-3)
其逆变换(重构公式)为
(2-4)
(2-5)
是一个连续函数。
在原点
必须等于0,即
(2-6)
既满足逆变换条件式,又满足(2-7)式子稳定性条件的小波
的FourierTransform,可以实现信号重构在数值上的稳定:
(2-7)
式中
错误!
未找到引用源。
。
2.2离散小波变换
连续小波变换中的尺度伸缩参数和平移参数都是连续变化的实数,在应用中需要计算连续积分,在处理数字信号时很不方便,因此连续小波变换
只用于理论分析与论证。
在实际数值计算中常采用离散形式,即离散小波变换(DWT)。
离散形式都是针对连续的尺度参数a和连续平移参数b的。
而不是针对时间变量t的。
这一点与我们以前习惯的时间离散化不同。
在连续小波
中,考虑函数:
这里
,
,且
是容许的,为方便起见,在离散化中,总限制a只取正值,这样相容性条件就变为
(2-8)
通常,把连续小波变换中尺度参数a和平移参数b的离散公式分别取作
,这里
,扩展步长
是固定值,假定
所以相应的离散小波函数
就可以写成:
(2-9)
离散形式小波变换系数为:
(2-10)
它的重构公式是:
(2-11)
C是一个常数,它与信号无关的。
从理论上可以证明,将连续小波变换离散成离散小波变换,信号的基本数据并不会丢失,相反,在实际应用中,为使小波变换的计算更加有效,通常构造的小波函数都具有正交性,从而减少了小波变换系数的冗余度。
2.3小波包分析
短时傅立叶变换对信号的频带划分是线性等间隔的。
多分辨分析可以对信号进行有效的时频分解,但由于其尺度是按二进制变化的,所以在高频频段其频率分辨率较差,而在低频频段其时间分辨率较差,即对信号的频带进行指数等间隔划分(具有等Q结构)。
小波包分析能够为信号提供一种更精细的分析方法,它将频带进行多层次划分,对多分辨率分析没有细分的高频部分进一步分解,并能够根据被分析信号的特征,自适应地选择相应频带,使之与信号频谱相匹配,从而提高了时-频分辨率,因此小波包具有更广泛的应用价值。
关于小波包分析的理解。
我们将以一个三层的分解进行说明。
其小波包分解树如图:
图3.1小波包分解树
图3.1中,A表示低频,B表示高频。
分解具有关系:
2.3.1常用小波基介绍
(1)Haar小波
Haar于1990年提出一种正交函数系,定义如下:
(3-1)
这是一种最简单的正交小波,即
(2)Daubechies(dbN)小波系
该小波是一种离散正交小波,由Daubechies从两尺度方程系数
出发设计出来的。
dbN是其简写,N则是小波的阶数。
尺度函数和小波
中的支撑区为2N-1。
N也是
的消失矩。
当且仅当N=1时,dbN才具有对称性;
除N=1外dbN不具有显式表达式。
假设
,则有
(3-2)
其中,
为二项式的系数,
(3)Biorthogonal(biorNr.Nd)小波系
线性相位性是Biorthogonal函数系的主要特征。
Biorthogonal函数系主要在图像与信号的重构中使用。
先用函数进行分解,再用小波函数进行重构是其通常的用法。
其通常被表示为biorNr.Nd形式:
其中,r表示重构,d表示分解。
(4)Coiflet(coifN)小波系
coiflet小波函数也是由Daubechies构造的,它具有coifN(N=1,2,3,4,5)这一系列,coiflet则比dbN的对称性更好。
coifN、db3N及sym3N具有相同的支撑长度。
而coifN、db2N及sym2N具有相同的消失矩数目。
(5)SymletsA(symN)小波系
Symlets函数系是db函数的一种改进函数系,它是由Daubechies提出的。
symN(N=2,3,…,8)是Symlets函数系的通常表示形式。
(6)Morlet(morl)小波
Morlet函数定义为
Morlet函数没有正交性,也不存在尺度函数。
(7)MexicanHat(mexh)小波
MexicanHat函数为
(3-3)
MexicanHat函数是Gauss函数的二阶导数。
由于MexicanHat函数像墨西哥帽的截面,有时它也会被称为墨西哥帽函数。
在时间域与频率域MexicanHat函数都有很好的局部化。
它满足下式
由于MexicanHat函数不存在尺度函数,它也没有正交性。
(8)Meyer小波
Meyer小波是在频率域中进行定义小波函数
和尺度函数
的。
Meyer小波是具有紧支撑的正交小波。
(3-4)
为辅助函数。
第三章用Matlab实现具体图像的压缩编码
3.1基于小波变换的图像局部压缩
基于离散余弦变换的图像压缩算法,其基本思想是在频域对信号进行分解,去除信号点之间的相关性,并找出重要系数,滤掉次要系数,以达到压缩的效果,但该方法在处理过程中并不能提供时域的信息,在我们比较关心时域特性的时候显得无能为力。
但是这种应用的需求是很广泛的,比如遥感测控图像,要求在整幅图像有很高压缩比的同时,对热点部分的图像要有较高的分辨率,例如医疗图像,需要对某个局部的细节部分有很高的分辨率,单纯的频域分析的方法显然不能达到这个要求,虽然可以通过对图像进行分块分解,然后对每块作用不同的阈值或掩码来达到这个要求,但分块大小相对固定,有失灵活。
在这个方面,小波分析就优越的多,由于小波分析固有的时频特性,我们可以在时频两个方向对系数进行处理,这样就可以对我们感兴趣的部分提供不同的压缩精度。
下面我们利用小波变化的时频局部化特性,举一个局部压缩的例子,可以通过这个例子看出小波变换在应用这类问题上的优越性。
loadwbarb
%使用sym4小波对信号进行一层小波分解
[ca1,ch1,cv1,cd1]=dwt2(X,'
sym4'
);
codca1=wcodemat(ca1,192);
codch1=wcodemat(ch1,192);
codcv1=wcodemat(cv1,192);
codcd1=wcodemat(cd1,192);
%将四个系数图像组合为一个图像
rcv1=cv1;
codx=[codca1,codch1,codcv1,codcd1]
%复制原图像的小波系数
rca1=ca1;
rch1=ch1;
rcd1=cd1;
%将三个细节系数的中部置零
rch1(33:
97,33:
97)=zeros(65,65);
rcv1(33:
rcd1(33:
codrca1=wcodemat(rca1,192);
codrch1=wcodemat(rch1,192);
codrcv1=wcodemat(rcv1,192);
codrcd1=wcodemat(rcd1,192);
%将处理后的系数图像组合为一个图像
codrx=[codrca1,codrch1,codrcv1,codrcd1]
%重建处理后的系数
rx=idwt2(rca1,rch1,rcv1,rcd1,'
subplot(2,2,1);
image(wcodemat(X,192)),colormap(map);
title('
原始图像'
subplot(2,2,2);
image(codx),colormap(map);
一层分解后各层系数图像'
subplot(2,2,3);
image(wcodemat(rx,192)),colormap(map);
压缩图像'
subplot(2,2,4);
image(codrx),colormap(map);
处理后各层系数图像'
%求压缩信号的能量成分
per=norm(rx)/norm(X)
per=1.0000
%求压缩信号与原信号的标准差
err=norm(rx-X)
err=586.4979
图3.1利用小波变换的局部压缩图像.
从图3.1可以看出,小波域的系数表示的是原图像各频率段的细节信息,并且给我们提供了一种位移相关的信息表述方式,我们可以通过对局部细节系数处理来达到局部压缩的效果。
在本例中,我们把图像中部的细节系数都置零,从压缩图像中可以很明显地看出只有中间部分变得模糊(比如在原图中很清晰的围巾的条纹不能分辨),而其他部分的细节信息仍然可以分辨的很清楚。
最后需要说明的是本例只是为了演示小波分析应用在图像局部压缩的方法,在实际的应用中,可能不会只做一层变换,而且作用阈值的方式可能也不会是将局部细节系数全部清除,更一般的情况是在N层变换中通过选择零系数比例或能量保留成分作用不同的阈值,实现分片的局部压缩。
而且,作用的阈值可以是方向相关的,即在三个不同方向的细节系数上作用不同的阈值。
3.2利用二维小波变换进行图像压缩
小波分析用于二维图像压缩是其一个重要方面。
它的特点是压缩比高,压缩速度快。
压缩可以保持图像特征基本不变,传输过程中可以减少干扰。
小波分析应用于图像压缩具有明显的优势。
下图是一个图像信号(即二维信号,文件名称Wbarb.mat),运用小波分析的图像压缩。
一个图像进行小波分解后,我们可以获得一系列不同分辨率的子图像,相应的子图像的不同分辨率、频率是不一样的。
高分辨率(即高频子图像)值点的最接近0,频率的这种现象更明显。
图像的低频部分的最重要,可以使用一个简单的压缩方法,即小波分解。
消除图像的高频部分,只留下低频部分。
图像压缩可以按照下列程序处理。
loadwbarb;
subplot(221);
image(X);
colormap(map)
axissquare
disp('
压缩前图像X的大小:
'
whos('
X'
)
%对图像用bior3.7小波进行2层小波分解
[c,s]=wavedec2(X,2,'
bior3.7'
ca1=appcoef2(c,s,'
1);
ch1=detcoef2('
h'
c,s,1);
cv1=detcoef2('
v'
cd1=detcoef2('
d'
%分别对各频率成分进行重构
a1=wrcoef2('
a'
c,s,'
h1=wrcoef2('
v1=wrcoef2('
d1=wrcoef2('
c1=[a1,h1;
v1,d1];
%显示分解后各频率成分的信息
subplot(222);
image(c1);
分解后低频和高频信息'
%下面进行图像压缩处理
%第一层的低频信息即为ca1,显示第一层的低频信息
ca1=wcodemat(ca1,440,'
mat'
0);
%首先对第一层信息进行量化编码
%改变图像的高度
ca1=0.5*ca1;
subplot(223);
image(ca1);
colormap(map);
第一次压缩'
第一次压缩图像的大小为:
ca1'
%保留小波分解第二层低频信息,进行图像的压缩,此时压缩比更大
%第二层的低频信息即为ca2,显示第二层的低频信息
ca2=appcoef2(c,s,'
2);
%首先对第二层信息进行量化编码
ca2=wcodemat(ca2,440,'
ca2=0.25*ca2;
subplot(224);
image(ca2);
第二次压缩'
第二次压缩图像的大小为:
ca2'
输出结果如下所示
NameSizeBytesClass
X256x256524288doublearray
Grandtotalis65536elementsusing524288bytes
第一次压缩图像的大小为
ca1135x135145800doublearray
Grandtotalis18225elementsusing145800bytes
ca275x7545000doublearray
Grandtotalis5625elementsusing45000bytes
图像对比如图3.2所示:
图3.2利用二维小波变换进行图像压缩
可以看出,第一次压缩提取的是原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3):
第二次压缩是提取第一层分解的低频部分的低频部分(即小波分解第二层的低频部分),其压缩比较大(约为1/12),压缩效果在视觉上也基本过的去。
这是一种最简单的压缩方法,只保留原始图像中低频信息,不经过其他处理即可获得较好的压缩效果。
在上面的例子中,我们还可以只提取小波分解第3、4、…层的低频信息。
从理论上说,我们可以获得任意压缩比的压缩图像。
下面再给出用wdenemp函数对一个图像(文件名tire.mat)进行压缩的程序。
%装入一个二维信号
loadtire;
%显示图像
%下面进行图像压缩
%对图像用db3小波进行2层小波分解
db3'
%使用wavedec2函数来实现图像的压缩
[thr,sorh,keepapp]=ddencmp('
cmp'
'
wv'
X);
%输入参数中选择了全局阈值选项‘gbl’,用来对所有高频系数进行相同的阈值量化处理
[Xcomp,cxc,lxc,perf0,perfl2]=wdencmp('
gbl'
2,thr,sorh,keepapp);
%将压缩后的图像与原始图像相比较,并显示出来
image(Xcomp);
axissqua