一、算术编码简介
算术编码是图像压缩的主要算法之一。
是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。
二、编码方法
现在以“00111001111100”为例
- 步骤一:分别获取0和1的个数设为count_a,count_b
- 步骤二:获取0和1的概率,设为pa,pb
- 步骤三:计算字符串概率P
P=(pow(pa, count_a) * pow(pb, count_b));
- 步骤四:计算编码长度L
L = ceil(log(1 / P) / log(2));
- 步骤五:计算算术概率F
公式:F( s r ) = F( s )+P( s ) * F( r )
例如:F(00111001111100)=F(0011100111110)+P(0011100111110)*F(0)
注:这里是通过递归得出最后的结果,结果即为算术概率
- F(s)函数:指字符串的累计概率和,初始F(0)=0,F(1)=pa
- P(s)函数&#