基于权系数的无损编码方法(杰林码之无损压缩方法)

基于权系数的无损编码方法

王杰林1

摘要:本文构建一个基于系数的无损编码方法,是基于概率加权模型的基础上优化改进的,是一种全新的熵编码方法;具有并行和同步处理多个符号的能力。确保压缩能力时,成倍提高编码效率。

关键词:概率权系数,分布函数

引言

以二进制序列为例,本方法可同时针对多个符号进行编解码,适合并行处理。设二进制随机序列中,符号0的概率为 p ( 0 ) p\left( 0 \right) ,符号1的概率为 p ( 1 ) p\left( 1 \right) 。以同时处理两个符号为例子,给出基于系数的编解码方法。实际应用中采用更大的符号个数编解码,使得本方法达到其最大效率。

本方法是应用了概率的分布函数特性得出的编解码算法,设随机序列为 x 1 , x 2 , , x n x_{1},x_{2},\ldots,x_{n} ,则随机序列的分布函数为 H n ( x 1 , x 2 , , x n ) H_{n}(x_{1},x_{2},\ldots,x_{n}) 则:

H n ( x 1 , x 2 , , x n ) = i = 1 n F ( x i 1 ) j = 1 i 1 p ( x j ) + i = 1 n p ( x i ) H_{n}(x_{1},x_{2},\ldots,x_{n}) = \sum_{i = 1}^{n}{F\left( x_{i} - 1 \right)\prod_{j = 1}^{i - 1}{p\left( x_{j} \right)}} + \prod_{i = 1}^{n}{p\left( x_{i} \right)}

编码步骤

1)、构建系数区间表,两个二进制符号,总的有4种组合,分别为00,01,10,11。根据分布函数有:

L 2 ( x 1 , x 2 ) = ω 1 F ( x 1 1 ) + ω 1 ω 2 F ( x 2 1 ) p ( x 1 ) L_{2}\left( x_{1},x_{2} \right) = \omega_{1}F\left( x_{1} - 1 \right) + \omega_{1}\omega_{2}F\left( x_{2} - 1 \right)p\left( x_{1} \right)

然后将四种组合给出 L 2 ( x 1 , x 2 ) L_{2}\left( x_{1},x_{2} \right) 的系数区间下标为:

扫描二维码关注公众号,回复: 10875990 查看本文章

L 2 ( 0 , 0 ) = 0 ω 1 + 0 ω 1 ω 2 p ( 0 ) = 0 L_{2}\left( 0,0 \right) = 0\omega_{1} + 0\omega_{1}\omega_{2}p\left( 0 \right) = 0

L 2 ( 0 , 1 ) = 0 ω 1 + ω 1 ω 2 p ( 0 ) 2 = ω 1 ω 2 p ( 0 ) 2 L_{2}\left( 0,1 \right) = 0\omega_{1} + \omega_{1}\omega_{2}{p\left( 0 \right)}^{2} = \omega_{1}\omega_{2}{p\left( 0 \right)}^{2}

L 2 ( 1 , 0 ) = ω 1 p ( 0 ) + 0 ω 1 ω 2 p ( 1 ) = ω 1 p ( 0 ) L_{2}\left( 1,0 \right) = \omega_{1}p\left( 0 \right) + 0\omega_{1}\omega_{2}p\left( 1 \right) = \omega_{1}p\left( 0 \right)

L 2 ( 1 , 1 ) = ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) L_{2}\left( 1,1 \right) = \omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right)

于是系数区间表为:

00 [ 0 , ω 1 ω 2 p ( 0 ) 2 ) 00对应\lbrack 0,\omega_{1}\omega_{2}{p\left( 0 \right)}^{2})

01 [ ω 1 ω 2 p ( 0 ) 2 , ω 1 p ( 0 ) ) 01对应\lbrack\omega_{1}\omega_{2}{p\left( 0 \right)}^{2},\omega_{1}p\left( 0 \right))

10 [ ω 1 p ( 0 ) , ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) ) 10对应 \lbrack\omega_{1}p\left( 0 \right),\omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right))

11 [ ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) , ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) + ω 1 ω 2 p ( 1 ) p ( 1 ) ) 11对应 \lbrack\omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right),\omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right) + \omega_{1}\omega_{2}p\left( 1 \right)p\left( 1 \right))

2)、定义前两位符号的系数区间下标为 l 1 , 2 ( 00 01 10 11 ) l_{1,2}\left( 00\left| 01 \right|10|11 \right) 。编码时,根据待编码的两个符号的形态查表,于是

l 1 , 2 ( 00 01 10 11 ) = 0     ω 1 ω 2 p ( 0 ) 2     ω 1 p ( 0 )     ( ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) ) l_{1,2}\left( 00\left| 01 \right|10|11 \right) = 0\ \left| \ \omega_{1}\omega_{2}{p\left( 0 \right)}^{2}\ \right|\ \omega_{1}p\left( 0 \right)\ |\ \left( \omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right) \right)

3)、将查表得到系数区间下标累加到 l n l_{n} 中:

l n = l n + l 1 , 2 ( 00 01 10 11 ) l_{n} = l_{n} + l_{1,2}\left( 00\left| 01 \right|10|11 \right)

4)、更新系数区间表,根据分布函数有:

H 2 ( x 3 , x 4 ) = H 4 ( x 1 , x 2 , x 3 , x 4 ) H 2 ( x 1 , x 2 ) ω 1 ω 2 p ( x 1 ) p ( x 2 ) = ω 3 F ( x 3 1 ) + ω 3 ω 4 F ( x 4 1 ) p ( x 3 ) H_{2}\left( x_{3},x_{4} \right) = \frac{H_{4}\left( x_{1},x_{2},x_{3},x_{4} \right) - H_{2}\left( x_{1},x_{2} \right)}{\omega_{1}\omega_{2}p\left( x_{1} \right)p\left( x_{2} \right)} = \omega_{3}F\left( x_{3} - 1 \right) + \omega_{3}\omega_{4}F\left( x_{4} - 1 \right)p\left( x_{3} \right)

若系数为静态系数,则有:

l 3 , 4 ( 00 01 10 11 ) = ω 1 ω 2 p ( x 1 ) p ( x 2 ) l 1 , 2 ( 00 01 10 11 ) l_{3,4}\left( 00\left| 01 \right|10|11 \right) = \omega_{1}\omega_{2}p\left( x_{1} \right)p\left( x_{2} \right)l_{1,2}\left( 00\left| 01 \right|10|11 \right)

若系数为动态系数,且 ω 1 , ω 2   , ω 3 , ω 4 , p ( x 1 ) , p ( x 2 ) \omega_{1},\omega_{2}\ ,\omega_{3},\omega_{4},p\left( x_{1} \right),p\left( x_{2}\right) 均已知,且待编码的两位符号也已知,可由 H 2 ( x 3 , x 4 ) H_{2}\left( x_{3},x_{4} \right) 将系数区间表值进行更新。

5)、再获取两个符号,并循环步骤2)到步骤4),直到处理完所有符号,则 l n l_{n} 为编码结果。

解码步骤:

由编码过程得出编码的结果为 l n l_{n} ,通过比较 l n l_{n} 在系数区间表的区间,从而得出对应的组合形态,并输出该组合,实现同时解码多个符号。步骤如下:

1)、同编码过程的步骤1),根据符号0和1的概率,构建系数区间表。

2)、通过比较 l n l_{n} 所在系数区间,并输出对应的组合形态:

l n [ 0 , ω 1 ω 2 p ( 0 ) 2 ) l_{n} \in \lbrack 0,\omega_{1}\omega_{2}{p\left( 0 \right)}^{2}) 时,输出00;

l n [ ω 1 ω 2 p ( 0 ) 2 , ω 1 p ( 0 ) ) l_{n} \in \lbrack\omega_{1}\omega_{2}{p\left( 0 \right)}^{2},\omega_{1}p\left( 0 \right)) 时,输出01;

l n [ ω 1 p ( 0 ) , ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) ) l_{n} \in \lbrack\omega_{1}p\left( 0 \right),\omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right)) 时,输出10;

l n [ ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) , ω 1 p ( 0 ) + ω 1 ω 2 p ( 0 ) p ( 1 ) + ω 1 ω 2 p ( 1 ) p ( 1 ) ) l_{n} \in \lbrack\omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right),\omega_{1}p\left( 0 \right) + \omega_{1}\omega_{2}p\left( 0 \right)p\left( 1 \right) + \omega_{1}\omega_{2}p\left( 1 \right)p\left( 1 \right)) 时,输出11。

3)、更新系数区间表,同编码步骤4)。

4)、并累减 l n l_{n} ,即 l n = l n l 1 , 2 ( 00 01 10 11 ) l_{n} = l_{n} - l_{1,2}\left( 00\left| 01 \right|10|11 \right) 。并循环步骤2)到步骤4),直到所有符号解码完成。

复杂度分析:

本编解码方法, l n l_{n} 的计算方式为累加或累减;系数区间表值的更新为乘法,且加法过程和乘法过程可以并行处理。由上面的编解码步骤可得出基于两个符号的系数编码的时间复杂度为 O ( n 2 ) O\left(\frac{n}{2} \right) 。若基于 k k 个符号的系数编码时间复杂度为: O ( n k ) O\left( \frac{n}{k} \right) 。很明显, k k 越大,本算法的时间复杂度越低; k = 1 k =1 时系数区间就是概率区间。
说明:当 ω \omega 恒等于1时,则是一种全新的概率编码方案,可以对算术编码和区间编码进行提升;当 ω \omega 不等于1时,则属于泛过程编码。


  1. 王杰林,男,1985-,数学爱好者,资深编解码工程师,主要研究领域为随机过程、概率论、信息论以及编解码算法 ↩︎

发布了27 篇原创文章 · 获赞 38 · 访问量 7574

猜你喜欢

转载自blog.csdn.net/wjlxueshu/article/details/82352499