数据压缩实验指导书(6)

2019-04-16 17:52

图2.7.3 小波系数的扫描顺序

对阈值Ti来说,重要系数的所在区间为[Ti,2Ti],若辅表中的重要系数位于

[Ti,3Ti/2],则用符号“0”表示,重构值为1.25 Ti-1;否则用符号“1”表示,重构值为1.75 Ti-1。输出的符号“0”、“1”由一个辅扫描表记录。

编码在两个过程中交替进行,在每个主过程前将阈值减半。译码时系数的重构值可以位于不确定区间的任意处,如果采用MMSE准则,则重构值应位于不确定区间的质心处。

SAQ是和位平面编码直接关联的,它是EZW快速算法的基础。 (2)算法分析

在图像的低比特率编码中,用来表示非零系数所在位置的开销远远大于用来表示非零系数值的开销。零树结构正是一种描述图像经过小波变换后非零数值位置的有效方法。

EZW的编码思想是不断扫描变换后的图像,生成多棵零树来对图像编码:一棵零树的形成需要对图像进行两次扫描。在生成第一棵零树时,首先找出变换后图像的最大绝对值系数,用它对应的T0作初始阈值,对图像进行第一次扫描。将图像中绝对值小于阈值的系数都看作零,然后按前面的符号定义形成零树。在第二次扫描中,对那些绝对值大于阈值的节点(POS和NEG),按其绝对值是否大于阈值的1.5倍附加一个比特1或0来描述其精度。

这样做的目的是减小非零节点系数值的变换范围,使其适应下一次阈值减半后的比特附加。而后将阈值减半,再经两次扫描生成第二棵零树,在第一次扫描

生成零树时,以前已经大于阈值的节点不再考虑,而第二次扫描附加比特时则要考虑以前数值较大的节点以保证精度。如此重复下去,不断生成零树,直到达到需要的编码精度为止。

EZW算法也存在一些问题:

①由于编码时它形成多棵零树,因而要多次扫描图像,效率低。且每一棵树必须在前一棵树形成之后才能形成,难以用并行算法优化;

②对所有频域进行等同重要度的编码,不能充分利用小波变换的特点。改进办法之一是把最低频子图与其它子图分开处理,对其进行单独得无失真编码;

③在一棵零树中包含的元素越多,越有利于数据压缩。在EZW算法中存在这样的树间冗余,在后续算法如SPIHT中则进一步利用了这种树间冗余;

④通过对小波系数的分析发现,在同一子带中相邻元素间有一定的相关性,尤其在高频子带存在大量的低值元素,所以可以通过子带中的集合把大量的这种低值元素组织到一起,达到数据压缩的目的。EZW算法并没有充分利用这种相关性。

以Lena.bmp的局部图像(128×128)为例,图2.7.4显示了该图经过三层小波变换后的小波系数分布。

图2.7.3 一幅图像三层小波变换后的小波系数分布

该图经过EZW算法编码后每级编码主表及辅表得到的部分数据流显示如下 (此处扫描顺序为RASTER scan):

主表:Znnnznznzzzzzzznnznnnzznzzzzzzznnznnzzn

zzzzzzzznnzzzznnnzzzzzznnnzzzzzzzzzppp

辅表:0000000011001101011100011000011100000100

000000100100101101000000000

(3)嵌入零数小波解码算法

解码过程其实与主扫描过程非常类似,按照扫描次序扫描解码矩阵。 ①初始化

获取扫描次序列表,初始化符号矩阵,创建以下几个空表:重要系数重构列表,量化器编号列表,上一次解码用到的辅扫描表。

获取本级解码需要的主扫描表和辅扫描表。创建解码矩阵,量化符号列表编号,主扫描表扫描编号。

②构造逆量化器

逆量化器包括两个部分,一是量化值部分,与编码程序中的量化器函数代码相同;二是量化器编号列表的构造,这个是难点和重点,把它构造出来,才能解码出重要系数的数值。

③提高上一级解码的重要系数的重构精度

根据逆量化器生成的重构值矩阵和逆量化器编号列表t来更新重要系数列表的值,并将更新数据存入解码矩阵中。

根据不同阈值的渐进式解码后的重构图像如图2.7.4所示。

图2.7.4 不同阈值下解码后的重构图像

六、实验步骤:

(1)打开一幅灰度图像,对该图像进行三层小波变换,并得到小波系数分

布;

(2)按照EZW算法的原理实现图像的编码程序; (3)编程解码程序,实现相应的图像渐进式解码; (4)实验完毕后,提交一份实验报告。

七、思考题目:

(1)在JPEG2000标准中小波变换为什么取代了DCT变换?

(2)不同的扫描顺序对编、解码效果会有什么影响? (3)EZW算法的编码原理是什么? (4)EZW算法的译码过程如何? (5)EZW算法有何缺点?该如何改进?

八、实验程序代码:

(1)生成查找表

function y=lookup_128

% Prepare table of indices of descendants y=extract(reshape([1025:2048],32,32)'); y=[y ;extract(reshape([2049:3072],32,32)')]; y=[y ; extract(reshape([3073:4096],32,32)')]; y=[y ;extract(reshape([4097:8192],64,64)')]; y=[y ; extract(reshape([8193:12288],64,64)')]; y=[y ; extract(reshape([12289:16384],64,64)')]; y=[zeros(512,4);y]; indices=y; save indices

(2)EZW编码程序

clear,clc load indices format long

% Prepare for RASTER scan [Sha93] xm=mapping_128; xm=xm(:); load lena.mat

mat=anal2d(x(50:50+127,50:50+127),3,3); x=xm; seqt(x)=mat;

T=2^round(log2(max(max(abs(mat))))); T=T/2

mat=mat.*[abs(mat)>=T==1];

seq(x)=mat; ztr=[]; sig_coeff=[]; num_of_passes=1; refine=[]; kkk=0; beta=[]; sym=[];

% For the subband LL3

while num_of_passes<=9 % Number of dominant passes kkk=kkk+1; % This is only for level 3 for ii=513:1024

if(isempty(sig_coeff) | sum([sig_coeff==ii])==0) % Added new count=0; for kk=1:4

if(seq(indices(ii,kk))==0),count=count+1; end for mm=1:4

if seq(indices(indices(ii,kk),mm))==0,count=count+1;

end

end end

if count==20 & seq(ii)==0, ztr=[ztr ii]; for kk=1:4

seq(indices(ii,kk))=inf; for mm=1:4

seq(indices(indices(ii,kk),mm))=inf; end end end end % Added new end

% Start of level 2


数据压缩实验指导书(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Levis牛仔裤型介绍

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: