文件名称:算术编码流程-2020考研数学一真题及解析
文件大小:4.88MB
文件格式:PDF
更新时间:2024-07-10 02:56:11
视频 压缩 H264
图 6.56 算术编码流程 6.9.1.2 自适应 在实际过程中,输入流中字符的概率分布是动态改变的,这需要维护一个概率表去记录概率变化 的信息。在作递进计算时,通过对概率表中的值估计当前字符的概率,当前字符处理后,需要重新 刷新概率表。这个过程表现为对输入流字符的自适应。编码器和解码器按照同样的方法估计和刷新 概率表,从而保证编码后的码流能够顺利解码。 6.9.1.3 码流输出 在实际操作过程中,编码器并不是等递进到 终区间才输出码字的,这里有两方面的原因,一 是在编码器的递进计算过程中,如果没有输出,信道会出现空闲,形成浪费;二是如果输入流较长 时, 终得到的区间非常小,必须以极高的精度来记录 L 和 R 。幸运的是,在二进制编码中,区间 的上下限以二进制形式表示,每当下限的 高有效位与上限的 高有效位一样时,就可以移出这个 比特。这样的方法可以保证编码器在递进计算的同时不断地输出码流。序列出现的可能性越大,区 间就越长,确定该区间所需要的比特数就越少。 6.9.1.4 算术编码与哈夫曼性能比较 下面通过对比哈夫曼编码来评价算术编码的优势。算术编码的比特率由下式限制: NNHRNH NN /2/)(/)( +ℜ≤≤ℜ (6.38) 其中,N 是编码序列中的符号数而 )(ℜNH 是序列的 N 阶熵。参照矢量哈夫曼编码的情况: NNHRNH NN /1/)(/)( +ℜ≤≤ℜ (6.39) 可以看到,当 N 足够大时,都有: )()(lim ℜ=ℜ ∞→ HRNN (6.40) 也就是说当输入流足够长时可使比特率接近信源熵率,从这点看,这两者都是优秀的熵编码算法。 然而,用哈夫曼编码,必须为所有可能的长度为 N 的序列设计和存储码书,这样做的复杂度随 N 呈 指数增长。用算术编码则不需要预先为每个可能的信源序列指定码书。而是每当所确定区间的下限 和上限有公共 高有效位时,就可以连续地得到比特。编码序列的长度可以和信源的长度一样长。 因此,实际上,算术编码可以更接近熵率。 算术编码的另一个优点是可以简单地通过更新符号概率表来实现对信源统计特性的自适应。通 过对不同上下文用不同的概率表也可以容易地实现条件编码。对于哈夫曼编码,则不得不基于更新 的概率表重新设计码书,或对不同的上下文设计多个码表。 由于较高的编码效率和易于自适应,只要所涉及的计算量是能接受的,无疑算术编码比哈夫曼 Binval= 0 ? L=L R=R*P0 L=L+R*P0 R=R*P1 yes no 当前字符结束