使用霍夫曼编码的图像压缩二

继续前面章节的介绍

为什么要使用两个结构数组?

最初,struct array pix_freq以及 struct array huffcodes将仅包含 Huffman Tree 中所有叶节点的信息。

结构数组pix_freq将用于存储霍夫曼树的所有节点,数组huffcodes将用作更新(和排序)树。

请记住,每次迭代中只会对huffcodes进行排序,而不是pix_freq

通过组合最低频率的两个节点创建的新节点,在每次迭代中,将附加到pix_freq数组的末尾,也附加到huffcodes数组。

但是数组huffcodes在加入新节点后,会按照出现的概率重新排序。

数组pix_freq中新节点的位置将存储在struct huffcodearrloc字段中。将指针分配给新节点的左右子节点时将使用arrloc字段。

第 4 步继续……

现在,如果有N 个叶子节点,则整个哈夫曼树的节点总数将等于2N-1

并且在两个节点合并并被新的父节点替换后,节点的数量在每次迭代中减少1 。因此,数组

猜你喜欢

转载自blog.csdn.net/tianqiquan/article/details/129970184