算术编码具体方法是将被编码的信源消息表示成实数轴0-1之间的一个间隔,消息越长,编码表示的间隔就越小,即这一间隔所 采用算术编码每个符号的平均编码长度可以为小数。 需的二进制位数就越多。 算 术 编 码 待编码的数据序列为“dacab”,信源中各符号出现的概率依次为P(a)=0.4,P(b)=0.2,P(c)=0.2, P(d)=0.2。 数据序列中的各数据符号在区间[0, 1]内的间隔(赋值范围)设定为: a=[0, 0.4) b=[0.4, 0.6) c=[0.6, 0.8) d=[0.8, 1.0 ] a=[0, 0.4), b=[0.4, 0.6), c=[0.6, 0.8), d[0.8, 1.0) StartN=StartB+LeftC×L EndN=StartB+RightC×L 输入d: 其初始间隔为[0.8, 1.0) 输入a: 其初始间隔为[0, 0.4) StartN=0.8+0×(1.0-0.8)=0.8 “a”的实际编码区间在[0.8, 0.88)之间 “a”的取值范围应在前一符号间隔[0.8, 1.0)的[0, 0.4)子区间内 EndN=0.8+0.4×(1.0-0.8)=0.88 a=[0, 0.4), b=[0.4, 0.6), c=[0.6, 0.8), d[0.8, 1.0) StartN=StartB+LeftC×L EndN=StartB+RightC×L 输入c: 其初始间隔为[0.6, 0.8) StartN=0.8+0.6×(0.88-0.8)=0.848 “c”的取值范围应在前一符号间隔[0.8, 0.88)的[0.6, 0.8)子区间内 EndN=0.8+0.8×(0.88-0.8)=0.864 “c”的实际编码区间在[0.848, 0.864)之间 a=[0, 0.4), b=[0.4, 0.6), c=[0.6, 0.8), d[0.8, 1.0) StartN=StartB+LeftC×L EndN=StartB+RightC×L 输入a: 其初始间隔为[0, 0.4) StartN=0.848+0×(0.864-0.848)=0.848 “a”取值范围应在前一符号间隔[0.848, 0.864)的[0, 0.4)子区间内 EndN=0.848+0.4×(0.864-0.848)=0.8544 “a”的实际编码区间在[0.848, 0.8544)之间 a=[0, 0.4), b=[0.4, 0.6), c=[0.6, 0.8), d[0.8, 1.0) StartN=StartB+LeftC×L EndN=StartB+RightC×L 输入b: 其初始间隔为[0.4, 0.6) StartN=0.848+0.4×(0.8544-0.848)=0.85056 “b”取值范围应在前一符号间隔[0.848, 0.8544)的[0.4, 0.6)子区间内 EndN=0.848+0.6×(0.8544-0.848)=0.85184 “b”的实际编码区间在[0.85056, 0.85184)之间 设待编码的数据序列为“dacab”, 信源中各符号出现的概率依次为P(a)=0.4,P(b)=0.2,P(c)=0.2, P(d)=0.2。 数据序列中的各数据符号在区间[0, 1]内的间隔(赋值范围)设定为a=[0, 0.4), b=[0.4, 0.6), c=[0.6, 0.8), d[0.8, 1.0) StartN=StartB+LeftC×L EndN=StartB+RightC×L 新间隔的起始位置和结束位置 表示前一间隔的起始位置 前一间隔的长度 当前编码符号的初始区间的左端和右端 第一个被压缩的符号为“d”,其初始间隔为[0.8, 1.0); 第二个被压缩的符号为“a”,由于前面的符号“d”的取值区间被限制在[0.8, 1.0)范围内,所以“a”的取值范围应在前一符号间隔[0.8, 1.0)的[0, 0.4)子区间内, 根据上式可知 StartN=0.8+0×(1.0-0.8)=0.8 EndN=0.8+0.4×(1.0-0.8)=0.88 “a”的实际编码区间在[0.8, 0.88)之间。 第三个被压缩的符号为“c”, 其编码取值范围应在[0.8, 0.88)区间的[0.6, 0.8)的子区间内. 第四个被压缩的符号为“a”, StartN=0.848+0×(0.864-0.848)=0.848 EndN=0.848+0.4×(0.864-0.848)=0.8544 第五个被压缩的符号为“b” St
lzw编码过程详解_LZW 编码详解.ppt
最新推荐文章于 2022-05-22 17:24:08 发布