一种易于硬件实现的快速自适应哈夫曼编码算法
第48卷第3期
2
00
大连理工大学学报
JournalofDalianUniversityofTechnology
VoI.48.No.3May2
0
0
8年5月8
≯业誊囊啦-妇叠鲁业螺业盥k
掌电子与信息工程、管理工程I}
文章编号:l000—8608(2008)03-0436-05
凑带弗蒂蒂蒂蒂带蒂固s啊‘芥j_}黍
一种易于硬件实现的快速自适应哈夫曼编码算法
林建英“,
伍
勇2,
李建华1,
100084)
、
全伟伟1
116024I
(1.大连理工大学电子与信息工程学院,辽宁大连2.清华大学电子工程系,北京
摘要:白适应哈夫曼编码由于其良好的实时性,特别适合于通信系统等对速度要求高的场
合.为此提出一种新的自适应哈夫曼编码算法。它利用符号到达前后构造哈夫曼树的相似性,仅更新少量节点即可完成编码过程.与原有的V算法相比,有效降低了编码复杂度,占用存储资源较少。易于硬件实现.
关键词:图像编码;自适应哈夫曼编码;动态哈夫曼编码中图分类号:TN919.81
文献标志码:A
0
引言
权重,并检查其权重递增后是否大于右侧相邻节点的权重zv(称为“向前搜索”).若是,则须在树中找
哈夫曼编码[1]是迄今为止运用最为广泛的无损压缩编码.为了适应通信系统的高速实时传输要求,人们提出了自适应哈夫曼编码,如著名的FGK算法[2]和V算法[3J.自适应哈夫曼编码的核心是树的更新.在FGK算法和V算法中,树的更新是基于符号到达前后哈夫曼树结构上的相似性[2。】进行的.改变这一结构通常比较复杂,所需存储量也较大,难以用硬件实现.有部分文献“州]研究了哈夫曼树结构的存储方法,以期减少存储空间,提高处理效率..
本文从另一个角度出发,提出一种易于硬件实现的快速自适应哈夫曼编码算法.其基本思想是,利用树的构造过程的相似性,而不是树的结构的相似性,快速完成树的更新.
1
到编号最小的、权重为叫的节点作位置交换.将
跳新的父节点变为当前节点,重复进行向前搜索和交换节点操作,直到当前节点为根节点.若姒
为新符号,则它与符号mT(一个人为设置的符号,
权重始终为o,一直存在于树中)构成一棵子二叉树,
M[T原来的父节点作为当前节点进行上述操作.对
更新后的节点重新编号,完成树结构的更新.
由此可见,V算法的更新过程包括向前搜索和更新节点编号两部分.向前搜索可能需遍历多个节点.而结构调整后的重新编号是一个十分复杂、耗时的过程.
2树的构造过程
为了避免V算法更新树结构这一复杂操作,本文研究了构造哈夫曼树的过程.这一过程可通过节点序列描述.在静态哈夫曼编码中,各符号按事先统计的出现次数(即权重)降序排列,所得序.列记为
V算法简介
首先介绍“当前节点”.它是符号到达后权重
递增的节点,包括符号和内部节点.当前节点所在位置可能违反哈夫曼树的兄弟特性.
假设当前已存在一棵哈夫曼树,且权重小的作左子树.对各节点按从上到下、从右到左的顺序给予升序编号.当旧符号SVk到达时,更新该符号的
SS={SVl,SU,Sy。,…,SU,…,SVN)
其中su表示排在第足位的符号,N是符号的个数(包括NYT).树的构造过程中将产生N一1个内部节点.定义序列
收稿日期;2006-08-19’修回日期t2008-03-29.作者简介-林建英’(1958一),女.高级工程师.
第3期
林建英等:一种易于硬件实现的快速自适应哈夫曼编码算法437
其中聊1’’是,l口,的父节点.SV,到达后,S。甜中‰到"。Ⅳ_。部分将不会有任何变化(即构造过程进行到SU之前无变化).下面考察Sn到下一个当前节点删,的情况.
(1)Su到咒可,部分
NS={删l,珊2,删3,…,聊¨…,nUN-1)其中删。表示编号为k的内部节点.哈夫曼树构造完成后,NS中的元素将按权重升序排列.初始时则假设各内部节点的权重为无穷大.
序列sS确定后,即可按下述方法构造哈夫曼树.
设立两个指针R和P竹.初始时令R指向SVN,Pn指向咒"。.选出R所指的元素SK和前
(a)%。的权重大于等于训+1.此时Sn在
SoH中的位置不变(注意第2章的规定②和③).
由于u一。到D眦_。部分的内部节点由排列在SU之
后(序列中位于某个节点右边被称为“排列在该节点之后”,否则为“排列在该节点之前”)的节点生成,且这部分节点没有变化,故这些内部节点的权重和排序不变.另外,硼一,到掣一,部分的符号无变
一个元素SV卜l,以及Ph所指的元素咒可I及加蚪1.
用其中权重最小的两个节点构造子二叉树,并生成新的内部节点.其编号等于已生成内部节点的总数加1,以保证NS中的元素按权重升序排列.最后,根据选择结果移动R和P,l,直到Ph指向71"0N-I(即根节点).
随机性.为确保惟一性,作如下规定:
①当聊。和nVlH-。权重相等时,认为删t权重较小.
②当SⅥ和SVH权重相等时,认为SK权重较小.
③当符号和内部节点权重相等时,认为符号权重较小.
上述规定使哈夫曼树可由SS惟一确定.构造树完成后,将树中节点按从上到下、从右到左的顺序排列,得到序列S
S={7.1l,耽,饥,…,研,…,耽肛1)
其中Vi是第i个节点.显然,S中各节点的排序代表了它们被选出构造子二叉树的先后次序.故S代表了哈夫曼树的构造过程.
3
,
化.故S。H中珏,到%,部分与符号到达前相同.
删,仍为SU的父节点,是下一个当前节点.
(b)可一-的权重小于叫+1(此时其权重必为
在上述过程中,子二叉树的构造具有一定的
硼).此时Su在S。t。中的位置将前移.假设在SU
之前有P(P≥1)个节点的权重为训,则SU将前
移到乞仁p之前.而S。“中节点tk广l到聊件[P/2]部
分没有变化([z]代表不超过z的最大整数),其
中,删卅p/z3在符号到达前是%,的父节点,符号到
达后是SV,的父节点,其权重递增1,如图1所示(图中P=3).相应地,它替代删,成为当前节点.
sz,幺r%%
(a)sv,N达前
蕊蕊
..F2
oJ%%sv.
w=2HF2w=3
w=2w=2w=2¨一2
(b)SV,到达后
图1
符号到达前后SV,到7"/'0,部分的变化
Fig.1
ChangeinconstructionbetweenSV,and,彤,
sequence
哈夫曼树构造过程的相似性分析
在自适应哈夫曼编码中,哈夫曼树的更新也
可通过更新树的构造过程完成.为此,需研究符号到达前后构造过程(即S)的变化,然后对不同部分进行重构即可.显然,S中各当前节点的位置是可能导致变化的地点.下面分段考察相邻两个当前节点之间S的变化情况.
3.I
下面考察当前节点聊。或玑一件[p/z]到下一个当前节点的情况.
(2)聊,(或删帆p/23)到删1I部分
为便于说明,将Su新的父节点竹可件[plZl也记
做聊,,其父节点也用删丁表示.Sota中删,到玑r下部分可记做
旧符号到达
旧符号SⅥ到达后其权重递增为硼+1.分两
S:=(,掰1l,…,u一,.1,,础f)
并假设聊,更新后的权重为'uJ,.
种情况讨论.
3.1.1
符号到达使ss保持权重降序规律2(可I,…,珊1.,…,,埘”弘P,,…,
假
(a)若%,。的权重大于姒,或可一,-的权重
等于Ⅵ且口二,。是内部节点,这等同于第(1)部分的情况(a)(注意第2章的规定①),可知s:无
变化,聊下是下一个当前节点.
设SV。到达前其父节点为咒口,,此时的s记为
S。Id
Vm--l,SyI,%,‰1,…,耽№1)
大连理工大学学报
第48卷
(b)若珏,,的权重等于叫,且铆一,.・是符号,
这等同于第(1)部分的情况(b).此时n'o-在S。ta中
同,这意味着3.1.1中第(1)或第(2)部分的情况(a)发生.(b)让所在子树与符号到达前不同,这表明。3.1.1中第(1)或第(2)部分的情况(b)发生.但由于q仍被选出,说明眺已前移到指定位置.
(2)未选出让
这表明3.1.1中第(1)或第(2)部分的情况(b)发生,且"12;尚未前移到指定位置,直到q被重新选出构造子二叉树时,它才前移到指定位置.’根据3.1.1中的分析,出现结果(1)时,构造过程在让之后不会变化,直到其进行到砧的父节点为止.出现结果(2)时,构造过程在让之后发生变化,直到重新选出让为止;重新选出q后构造过程不会变化,直到其进行到让新的父节点为止.
综上所述,新算法更新树的过程如下:(1)如果符号SⅥ是旧符号,则交换SS中
的位置将前移.假设包括珏r.-在内共有q(q≥1)
个符号(注意,不是内部节点)的权重为姒,则删,将前移到这些符号之前.删,的新位置到nvr+Eq/z3的部分与符号到达前相同,其中nT)r+Eq/Z]是符号到达后捌,新的父节点,权重递增1,且替代,圪,下成为当前节点.
删r(或nUT+[∥。])到其父节点部分,及其之后一直到根节点部分的情况与这部分相同.
3.1.2
符号到达使sS违反权重降序规律假
设SU到达前,Ss中SⅥ之前有t个符号的权重
等于"10,则Su将与SK,互换位置.交换位置后,
SS中排在第点位的符号对应权重不变,排在第
k—t位的符号(即原来的SU)对应的权重递增.
这等效于SK,到达.不同的是,趴么到达将保持
SS的排序,即符合3.1.1的条件.故SU与趴,卜,位
Su和SK,(£≥o)的位置,并将S睢,(原Su)
设为当前节点.然后①将R和P咒移动到上一次
构造过程进行到当前节点时的位置,此时有4个备选节点.②按照第2章的规定选出两个节点构造子二叉树.若仍选出当前节点,则将当前节点的父节点设为当前节点;否则从当前节点开始按第2章的方法重新构造树,直到重新选出当前节点为止,并将当前节点新的父节点设为当前节点.③返回①继续进行,直到当前节点为根节点.
置互换后,令吼o,为第一个当前节点,其新的父节
点为下一个当前节点,然后按3.1.1分析即可.3.2新符号到达
新符号SVN到达后,首先在SS中插入该符号,然后用符号NYT和SVN生成一棵二叉树.该树的根节点为新生成的内部节点聊Ⅳ,其权重为1.在S中,删N通常占据符号NyT原先的位置.但若SVⅣ-。的权重也为1,根据第2章的规定③,删N在S中的位置将前移.此时可将删Ⅳ看做权重递增后的符号Ny丁,即等效为“旧符号”Ny丁到
(2)如果符号姒是新符号,则首先在SS中
将SV+插入到符号M仃所在位置,N汀后移一
位,姒和N汀生成内部节点n'oⅣ,并将它设为当
前节点.B指向Ⅳ汀,砌指向聊Ⅳ,开始构造树,直
到选出当前节点n73N为止.然后回到①继续.
新算法的编解码过程与V算法相同.
5
达.显然,删T到达不会改变SS的降序规律.因
此,SVⅣ到达后,删Ⅳ被看做第一个当前节点,册Ⅳ之前(含聊N)S的变化情况可按3.1.1的第(2)部分进行分析.
4
新算法的空时消耗与压缩率
新算法的空问消耗新算法将使用以下空间:
(1)2N。。+1(N。。是可能出现的最大的符
新的自适应算法
由第3章可知,符号到达前后序列S(即构造
5.1
过程)的变化只可能出现在当前节点处.故新的自适应算法需在这些地方判断构造过程是否发生变化,并进行相应处理.下面介绍判断和处理方法.
符号到达前,构造过程进行到当前节点让时,根据R和P,z所指位置可得4个备选节点
号数目,不包括NYT)个存储单元保存节点的权重,每个存储单元占用l092Wbits(W是符号的最大出现次数).
(2)N。。+1个存储单元保存序列SS的元素
(即符号的值),每个存储单元占用logz(N~+1)
bits.为了快速找到每个符号在ss中的位置,需N。。。个存储单元保存符号在sS中的位置,每个存储单元占用199。N~bits.
为了使新算法将R和P咒移动到符号到达前构造过程进行到当前节点时所指的元素上,需要:
SU、S%,、删。和nvp+i(参见第2章).其中必有
一个为当前节点Vi,且弘被选出构造子二叉树.符号到达后,有两种结果:
(1)仍选出";
分两种情况:(a)让所在子树与符号到达前相
第3期
林建英等:一种易于硬件实现的快速自适应哈夫曼编码算法
(3)2Nm。个存储单元保存Ss和NS的各元
素对应的砌值或Ps值,每个存储单元占用
l092N。。bits.
进一步研究还发现,若当前节点为符号Su,且符号到达前SU与另一个符号被选出构造子二
叉树(其中SU作右子树),则R可指向SU之后
的一个元素;若当前节点为内部节点聊;,且符号到达前删;与另一个内部节点构造子二叉树(nv;作右子树),则Ph可指向玎可;之前的一个元素.这可进一步缩短更新树的时间.为此,Ss或NS的每个元素还应设置两个二进制位记录构造子二叉树时该节点是否为右子树,及同时被选出的另一个节点的类型,即:
(4)2N一十1个存储单元保存每个节点在构
造子树时同时被选出的另一个节点的类型,每个存储单元占用lbit.2N0。十1个存储单元存储每个节点自身的子树类型,每个存储单元占用1
bit.
(5)确定下一个当前节点及编码过程需要2N。。+1个存储单元存储每个节点的父节点,每个存储单元占用logzN。。bits.
综上,新算法占用的存储空间为
s=(2N。。+1)l092W+(N。。+1)l092(N二。+
1)+Ⅳ瑚。logzⅣm。+2儿。l092‰。+、
(4N。。+2)+(2N。。+1)l092N。。
当N。。=256时,除去记录节点权重占用的空间,s一(2N。。十1)l092W=13.01
Kbits.
而V算法的空间消耗相对较大.在V算法中,除需要上述存储空问外(其中第(3)项视V算法的具体实现方法而略有不同),由于在V算法中还要自上而下地重新编号,还需保存每个内部节点的左右孩子编号.这需要额外的2N胁。个存储单元,每个存储单元占用logzN。。bits.
5.2
新算法的时间消耗
假设在树的更新过程中有T个节点作过当前
节点(不含根节点),则新算法与V算法相同,需要T个单位时问完成当前节点的权重递增和变换当前节点的操作.下面讨论新算法进行树的重构所需要的时间.
5.2.1
对符号排序如果符号到达后其权重递
增为叫十1,而ss中有忌-(忌t≥O)个符号的权重等于W,那么需要是t个单位时问找到排列在最前方的符号并与到达符号交换位置.
5.2.2
更新构造树的过程
显然,除新符号到
达的情况外,第一个当前节点是符号.假设其更新
后的权重为W+1,且S。坩中排列在其前方的节点中有忌。(七。≥O)个节点的权重为硼,则需要是2个单位时问完成此次前移.此后的当前节点全为内部节点.若第f个当前节点(f≥2)更新后的权重为叫,+1,而S0.。中排列在其前方的节点中有k。;(志。;≥o)个符号的权重等于训;+1,则需要忌。t个单位时间完成本次前移.因此,新算法进行一次重构树的操作所需时问为
t—k1+愚2+k3
1’
其中志3一>:k3f.
‘i。=’一2
V算法重构树的操作包括向前搜索和更新节点编号两部分.其中向前搜索的时间等同于新算法前移当前节点的时间.应当指出,在V算法中,个符号的权重与其更新后的权重相等,V算法也孩子节点编号的过程,而V算法最主要的时间消耗将出现在这一部分.综合来看,新算法在时间上大大优于V算法.只要k.、k。和k。较小(即源符号出现概率不服从均匀分布,这在实际情况中是成应当指出,新算法在压缩率方面不及V算高度较小的节点被优先选出构造子二叉树.在新的条件,其压缩率应该在较高水平.实际上,新算实验结果
本文提出的新算法在Altera公司的MAX+
024次.基于新算法的自适应哈夫曼编码器的资
若当前节点是内部节点,则即使该节点右侧有多不再向前搜索.此时新算法将比V算法多花费ks个单位时间.但是新算法避免了极其复杂的更新立的),则新算法将在短时间内完成树的更新.5.3新算法的压缩率
法,这是因为它不能保证每次构造的哈夫曼树深度最小.深度最小的哈夫曼树称为最优哈夫曼树,其构造方法是:当有两个以上的节点权重相等时,算法中,符号具有最高的优先级(参见第2章).符号是高度最小的节点.但是,当两个内部节点权重相等时,新算法按内部节点生成的先后次序进行选择.这有可能使高度较大的内部节点先被选出.然而由于新算法“部分地”满足构造最优哈夫曼树法以牺牲少量压缩率为代价,换取了复杂度的降低和编解码速度的提高.
6
PLUSⅡ上仿真通过,波形仿真给出了正确的编解码输出,如图2所示.该编码器允许的码符号集最大元素个数为16,所有符号最多出现次数为
1
440
大连理工大学学报
第48卷
源占用为内存使用976bits(占总内存的1%),逻法资源占用适中,操作简便,易于移植到普通的辑单元个数1082(占总资源的21%).可见,新算
FPGA器件上.
,400i15
’
Name:
2000ns4000FI¥8000115
8000ns1.0
Hs1.2Ⅳs
1.4
ps
1点“s
1.8脚s
2.0
lp
一吐
slart
1J
w-elk
0
_蜮0J]毋J1唧八nrI唧几几八n
n
n几乒鲍^簟莘蹙型]nl
/
I
n兀几几nn几几n哪几.几几几几几
I
曲rivesym[30】・3X
4
X7
0I3
:
矗cede_valid0一
。IL-J
e_lcngth
0
・一
xⅥ0
I
二[=匦芟D礤D[=互二]匝芟x
——彳———竹Vivlr忆育v.———彳——~v
x
n
“v
1∞
^
,
(a)编码器输出波形
■●一Ⅻ0n
_●-dk0哪m舢8f1I|18肌m《8咖4咖『lfl888088嘲肌fi』|flf
._●code_bit
0
'-I
o山fT——]nI
.IU
几
l
删姗岁输出彳号序列删哪删ilJIfl脚10肿0咖f
/
fl
H嗽哪【j|Jl删...I山
symbol—valid0n
n
n,旷
n
-㈣l
n
n‘
甜olval叫3,0】.
X
r
X
,
X
X
X
(b)解码器输出波形
图2基于新算法的自适应哈夫曼编解码器输出波形
●
结语
.
[J].
-
●
,
:
基于哈夫曼树构造过程的相似性,提出了一[3]
j
.’
种快速的易于硬件实现的自适应哈夫曼编码算[J].
.,
法.其总体流程是:符号到达后,更新符号的排序,(4):
然后检查构造过程与符号到达前是否相同,对不[4]王
玲.陈
莉.任意K元
树的新构造[J].
相同部分进行重构.与V算法相比,新算法具有航空计算技术.。
:
亡5]CHowDHURY
R
,..
时空消耗少、复杂度低的优势.
参考文献
口].
。。:
一
[1]
[6]李伟生.李域.王
涛.一种不用建造树
.
[J].
的高效
编码算法[J].中国图象图形学报,
,
.40(9):
.
(3):
一
一
一
“,
1
2,
一
1,
一
(1.
,.・
.
。,.
)
:
一
●●
,
,
.
,,
,
。
:
一种易于硬件实现的快速自适应哈夫曼编码算法
作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数:
林建英, 伍勇, 李建华, 全伟伟, LIN Jian-ying, WU Yong, LI Jian-hua, QUANWei-wei
林建英,李建华,全伟伟,LIN Jian-ying,LI Jian-hua,QUAN Wei-wei(大连理工大学,电子与信息工程学院,辽宁,大连,116024), 伍勇,WU Yong(清华大学,电子工程系,北京,100084)大连理工大学学报
JOURNAL OF DALIAN UNIVERSITY OF TECHNOLOGY2008,48(3)1次
参考文献(6条)
1.HUFFMAN D A A method for the construction of minimum redundancy codes 1952(09)2.KNUTH D E Dynamic Huffman coding 1985
3.VITTER J S Design and analysis of dynamic Huffman codes 1987(04)4.王玲.陈莉 任意K元Huffman树的新构造 1998(04)
5.CHOWDHURY R A.KAYKOBAD M.IRWIN K An efficient decoding technique for Huffman codes 20026.李伟生.李域.王涛 一种不用建造Huffman树的高效Huffman编码算法[期刊论文]-中国图象图形学报 2005(03)
引证文献(1条)
1.李晓飞 Huffman编解码及其快速算法研究[期刊论文]-现代电子技术 2009(21)
本文链接:http://d.g.wanfangdata.com.cn/Periodical_dllgdxxb200803023.aspx授权使用:中南大学(zndx),授权号:6fe00dda-636b-4be1-a36d-9e5a00f7377e
下载时间:2010年12月28日