急求 多媒体技术中哈夫曼编码的码长和熵的计算公式,大学阶段的。不要C里面的,就是要两个公式。 谢谢了

急求 多媒体技术中哈夫曼编码的码长和熵的计算公式,大学阶段的。不要C里面的,就是要两个公式。 谢谢了,第1张

1:码长是否是平均码长?如果是,
码长=(所有种类字符累加(字符出现的次数该字符哈夫曼编码是的长度))/所有字符的个数
例:
字符串aabbb
a编码为10011 -----5位
b编码为010011 -------6位
码长=(25+36)/5 (分母5代表aabbb的长度为5)
2:信息熵:
信息熵Eta=累加(Pilog2(1/Pi))(i从1累加到n,Pi表示对应第i个字符在字符串中出现的概率,如字符“a”在长度为1000的字符串中出现6次,为第一个字符,则P1=6/1000)

为了便于说明,我们先进行一些定义。
原始数据:需要被压缩的数据
压缩数据:被压缩过的数据
n:字母表的长度
a〔,j〕:字母表中第j个字符
t:已处理的原始数据中字符的总个数
k:已处理数据中各不相同字符的个数
显然1j,kn
在压缩开始前,需要引进一个空叶结点,它的重量值始终为0。在以后的压缩和解压过程中,如果k<n,我们用它来表示n-k个字母表中还未出现的字符。初始化的哈夫曼树中只有一个根结点和空叶结点。
压缩子程序读进一个字符后,它将该字符加到根结点的右分枝上,而空叶结点仍留在左分枝上,然后将该字符以ASCII码方式输出。解压子程序对其哈夫曼树作同样的调整。
以后每读进一个字符a〔,it〕,压缩子程序都执行以下的步骤:首先它检查a〔,it〕是否出现在编码树中,如果是,压缩子程序就以静态哈夫曼编码中相同的方式对a〔,it〕进行编码;如果a〔,it〕不在编码树中,压缩子程序首先对空叶结点进行编码,然后将a〔,it〕以ASCII码方式输出,最后在编码树中增加两个结点:在空叶结点的右分枝上加入一个新结点,并将a〔,it〕放在里面,然后在其左分枝上加入一个新的空叶结点。
解压子程序对解压树也做同样的调整,因为它和压缩子程序具有相同的哈夫曼树。当它遍历到空叶结点时,解压子程序就从压缩数据中取出一个ASCII字符,然后对解压树做与压缩子程序相同的调整。
每处理一个字符,压缩和解压程序都需要修改各自的哈夫曼树,为了修改的方便,树中每个结点都具有一个序号,它是根据结点的重量由大到小排列而确定的一个递减序列。
对于图1中的例子,现在已处理了32个字符,即t=32,a〔,it+1〕=“b”,此时并不是简单地将叶结点a〔,it+1〕和它的祖先结点的重量加1,因为这样做之后,该树就不再是哈夫曼树,且各结点的序号也不再是按结点重量由大到小排列而确定的递减序列,结点4和结点6的重量为6,而结点5的重量为5。
动态哈夫曼编码技术的关键就是如何将前t个字符的哈夫曼树调整成一棵前t+1个字符的哈夫曼树。为了解决上述问题,我们分两步来进行。第一步我们把前t个字符的哈夫曼树转换成它的另一种形式,在该树中只需在第二步中简单地把由根到叶结点a〔,it+1〕路径上的所有结点重量加1,就可以变成前t+1个字符的哈夫曼树。其过程就是以叶结点a〔,it+1〕为初始的当前结点,重复地将当前结点与具有同样重量的序号最大的结点进行交换,并使得后者的父结点成为新的当前结点,直到遇到根结点为止。

属于数字压缩编码技术:
霍夫曼编码是可变字长编码(VLC)的一种。 Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。下面引证一个定理,该定 理保证了按字符出现概率分配码长,可使平均码长最短。
� 定理:在变字长编码中,如果码字长度严格按照对应符号出现的概率大小逆序排列,则其平 均码字长度为最小。
� 现在通过一个实例来说明上述定理的实现过程。设将信源符号按出现的概率大小顺序排列为 : �
U: ( a1 a2 a3 a4 a5 a6 a7 )
020 019 018 017 015 010 001
� 给概率最小的两个符号a6与a7分别指定为“1”与“0”,然后将它们的概率相加再与原来的 a1~a5组合并重新排序成新的原为:
U′: ( a1 a2 a3 a4 a5 a6′ )
020 019 018 017 015 011
� 对a5与a′6分别指定“1”与“0”后,再作概率相加并重新按概率排序得
U〃:(026 020 019 018 017)…
� 直到最后得 U〃〃:(061 039)
� 分别给以“0”,“1”为止,如图4-4所示。}
� 霍夫曼编码的具体方法:先按出现的概率大小排队,把两个最小的概率相加,作为新的概率 和剩余的概率重新排队,再把最小的两个概率相加,再重新排队,直到最后变成1。每次相 加时都将“0”和“1”赋与相加的两个概率,读出时由该符号开始一直走到最后的“1”, 将路线上所遇到的“0”和“1”按最低位到最高位的顺序排好,就是该符号的霍夫曼编码。
� 例如a7从左至右,由U至U〃〃,其码字为0000;
� a6按践线将所遇到的“0”和“1”按最低位到最高位的顺序排好,其码字为0001…
� 用霍夫曼编码所得的平均比特率为:∑码长×出现概率
� 上例为:� 02×2+019×2+018×3+017×3+015×3+01×4+001×4=272 bit
� 可以算出本例的信源熵为261bit,二者已经是很接近了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12790382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存