小波图像压缩
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机变量的数字特征应用实例:数据压缩
--基于小波变换的图像压缩分析
在当今这个信息爆炸的社会,各种信息系统的数据量越来越大,如何更快、更多、更好地传输与存储数据成为数据信息处理的首要问题,而数据压缩技术则是解决这一问题的重要方法。事实上,从压缩软件WINRAR到熟知的MP3,数据压缩技术早已应用于各个领域。
本质上压缩数据是因为数据自身具有冗余性。数据压缩是利用各种算法将数据冗余压缩到最小,并尽可能地减少失真,从而提高传输效率和节约存储空间。
数据压缩技术一般分为有损压缩和无损压缩。无损压缩是指重构压缩数据(还原,解压缩)时与原来数据完全相同。该方法用于那些要求重构信号与原始信号完全一致的场合,如文本数据、程序和特殊应用场合的图像数据(如指纹图像、医学图像等)的压缩。这类算法压缩率较低,一般为1/2~1/5。典型的无损压缩算法有:Shanno-Fan编码、Huffman(哈夫曼)编码、算术编码、游程编码、LZW编码等。而有损压缩重构压缩后的数据与原来数据有所不同,但不影响原始资料表达信息,其特点是压缩率比无损压缩大得多。有损压缩广泛应用于语音、图像和视频的数据压缩。常用的有损压缩算法有PCM(脉冲编码调制)、预测编码、变换编码(离散余弦变换、小波变换等)、插值和外推(空域亚采样、时域亚采样、自适应)等。新一代的数据压缩算法大多采用有损压缩,例如矢量量化、子带编码、基于模型的压缩、分形压缩和小波压缩等。
下面我们主要以小波变换图像压缩为例进行分析。小波变换实际上就相当于一个低通滤波器,而图像的高频部分大多数值接近于0,所以一个图像表现其的主要部分是其低频部分,小波分解正是运用其低通特征滤去高频保留低频部分。图形的高频成分均值图像信号经过一次小波变换后可分割成四个频带,即水平方向,垂直方向,和对角方向的高频部分和低频部分,低频部分再继续分解,这样图像信号被分解成许多只有不同空间分辨率,不同频率特性和方向特性的子图像信号,从而实现低频长时特征和高频短时的同时处理,有效地克服了傅里叶分析在处理复杂图像信号存在的局限性,使得图像信号的分解更合适人得视觉特性和数据压缩的要求。
图像可以看作是二维的矩阵,一般假设矩阵的大小为M*N,图中1,2,3表示分解级数,“L”表示低频,“H”表示高频。从图中可以看出一副图像经小波分解后,可以得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不同的。经过一级二维离散小波变换后的4个子图像分别记为LL1(低频部分),HL1(水平高频部分),LH1(垂直高频部分),HH1(高频部分),根据需要,可对LL1再做多级小波变换,第二级的子图像分别记为LL2,HL2,LH2,HH2,各层之间相互独立,分别对应于不同的频段和分辨率,每一层包括水平,垂直和对角线3个频道上的子图像。最低分辨率层中还包含一个近似原始图像的子图像,或称为最低频子图像。
从一般频谱角度分析小波变换的特点,小波变换将信号频谱按倍频分割,变换结果是原始信号在一系列倍频划分的频带上的多个高频子带数据。如图1所示HL2,HL1主要代表图像在三个层次上的水平高频信息,合称HL部分,代表水平边缘子图像;LH1,LH2,主要代表图像在三个层次上的垂直高频信息,合称LH部分,代表垂直边缘子图像;HH1,HH2主要代表图像在三个层次上对角线高频子图像。LL2代表图像中的低频信息。
图1
对一幅图像来说,其高频信息主要集中在边缘,轮廓和一些纹理的法线上,代表了图像的细节变化,因此可以认为小波变换的各个高频子带是图像中的边缘,轮廓纹理等细节信息的体现,并且各个子带代表的细节信息的方向是不同,其中
HL代表了水平方向的边缘,轮廓和纹理,LH表示是垂直方
向的,而对角线方向的边缘等信息则集中体现在HH子带中。小波图像的这一特性表明小波变换具有良好的空间方向选择性,我们可以根据不同方向的信息设计编码方法进行压缩。
我们以对原图(图2)的处理为例进行小波变换图像压缩分析
图2
第一步:进行第一次小波变换得到图3,对其低频部分压缩得到图4
图3
图3对应于
其中LL1对应于图像低频部分,正是信息量蕴含最大的部分。
图4
第二步:对LL1进行二次小波变换,得到图5,对低频进行压缩得到图6
图5
对应于
更多,所以图像更加模糊。
第三步:对分解后的低频和高频部分进行重构得到图7
图7
可见进行重构后低频部分与原图相比,有一定的失真。
根据评判参数L2-norm recovery and compression score in percentage,我们得到此图的recovery score为45.6916%,这个参数越大说明压缩效果越好,这里值为45.6916%,代表了小波分解系数中值为0的系数的个数百分比,这里可以看出小波变换并没有完美的进行图像压缩,实际操作时应该多种方法配合使用,才能更好地解决问题,compression score为99.9957%,这个参数代表了压缩后剩余能量百分比,越大说明变化越小。
附1:源代码:
H=imread('lena.bmp');
H=double(H);
ca=H;
NbColors=255;
G=wcodemat(ca,NbColors);
map2=gray(NbColors);
figure(1);
image(G);
colormap(map2);
title('原图像的灰度图');
whos('G');
%对图像进行多尺度二维小波分解
[c,s]=wavedec2(G,2,'bior3.7');
ca1=appcoef2(c,s,'bior3.7',1);%'wname' is a string containing the wavelet name ch1=detcoef2('h',c,s,1);%D = detcoef2(O,C,S,N) extracts from the wavelet decomposition structure [C,S]
cv1=detcoef2('v',c,s,1);
cd1=detcoef2('d',c,s,1);
[c1,s1]=wavedec2(ca1,2,'bior3.7');
ca2=appcoef2(c1,s1,'bior3.7',1);%'wname' is a string containing the wavelet name ch2=detcoef2('h',c1,s1,1);%D = detcoef2(O,C,S,N) extracts from the wavelet decomposition structure [C,S]
cv2=detcoef2('v',c1,s1,1);
cd2=detcoef2('d',c1,s1,1);
figure(2);
Y=[ca1,ch1;cv1,cd1];
image(Y);
colormap(map2);
title('第一层分解');
figure(6);
X=[ca2,ch2;cv2,cd2];
image(X);
colormap(map2);
title('第二层分解');
%对各频率进行小波重构
a1=wrcoef2('a',c,s,'bior3.7',1);
h1=wrcoef2('h',c,s,'bior3.7',1);
v1=wrcoef2('v',c,s,'bior3.7',1);