发布网友 发布时间:2022-04-20 15:56
共1个回答
热心网友 时间:2023-05-06 06:17
若有一个a、b、c、d四种符号的单符号信源,待编序列为S=abda,已知:
符号a b c d
符号概率Pi 0.100 0.010 0.001 0.001
(以二进位小数表示)
累积概率∑pi 0.000 0.100 0.110 0.111
按照一定精度的数值作为序列的算术编码,实质上是分割单位区间的过程。实现它,必须完成两个递推过程:一个代表码字C(·),另一个代表区间宽度为A(·)。若记SXi表示S的增长(即S后增加一个符号Xi)序列。则有图1 。
若记λ为空序列,有A(λ)=1,C(λ)=0,则有如图2 。
并依次求得:C(abd)= 010111, A(abd)= 0.00001
C(abda)= 0.010111 ,A(abda)= 0.000001 该编码过程可以用图3所示的单位区间划分的过程来描述。
译码为逆递推过程,可以通过对编码后的数值进行比较来实现。即判断C(S)落入哪一个区间,最后得出一个相应的符号序列S'=Ma=S。
实际的编译码过程比较复杂,但原理相同,算术编码的理论性能也可使平均符号代码长度接近符号熵,而且对二元信源的编码实现比较简单,故受重视。中国将它应用于报纸传真的压缩设备中,获得了良好的效果。