嵌入式小波零树(EZW)算法的过程详解和Matlab代码(2)编码过程(081227-补充quantifier程序)

本文详细介绍了嵌入式小波零树(EZW)算法的编码过程,包括初始化、主扫描、辅扫描等步骤,并提供了Matlab实现代码。在主扫描中,通过对阈值比较和标志矩阵更新来确定重要系数,而在辅扫描中进行量化处理,最终形成编码输出。算法适用于数据压缩和嵌入式系统。
摘要由CSDN通过智能技术生成


首先根据实际需要确定扫描次数D=codeDim,然后进行D次主扫描和辅扫描。

1、初始化
首先获取扫描次序表scanlist,表中每行的数字依次是该元素的(1)扫描序号、(2)对应于数据矩阵中位置的行号r、(3)对应于数据矩阵中位置的列号c、(4)值Mat(r,c),即
                                            
scanlist (i) = [ i, r, c, Mat(r,c) ]
编码扫描的对象就是次序表scanlist,而非数据矩阵Mat。
然后构建初始符号矩阵flagMat,其中每个元素均为字符“Z”。

2、主扫描
在第d次(1<= d <=codeDim)扫描中,输入阈值为T(d),首先依次对次序表的每一行scanlist(i)按照如下步骤扫描:
(1)    如果上一次扫描得到的flagMat中,处于位置(r,c)的符号为“O”,则表示相应的Mat(r,c)是重要的,不需要通过本次扫描再次编码,故作跳过处理。
(2)    将scanlist(i,4)(即Mat(r,c))的绝对值与阈值T(d) 比较,如果是重要的系数,则令flagMat(r,c)的值为P或N,并存入主扫描表scancode中,并将Mat(r,c)的值以及相应的行、列数(r,c)存入重要数列表imptvalue中,将符号P或N存入重要数符号列表imptflag中。
(3)    如果是不重要的系数,则首先检查flagMat(r,c),若是符号“X”,则表示这个点是不重要的,作跳过处理不再扫描。
(4)    如果点(r,c)处于第一分解级,即r>row/2或c>col/2,没有子孙系数,且其系数是不重要的,则该点flagMat的符号为Z,存入主扫描表scancode中。
(5)    如果点(r,c)满足r<row/2且c<col/2,则检查其子孙系数中是否有重要系数。有,则flagMat(r,c)的值为字符Z,存入主扫描表scancode中;否则flagMat(r,c)的值为T,存入主扫描表scancode中,并令其所有子孙系数相应的flagMat(r’,c’)值为字符X,不再作下一次扫描。
至此,扫描结束。然后,将扫描后得到的符号矩阵flagMat转存到s

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值