4、算术编码 4.1算法思想
算术编码是把一个信源表示为实轴上0和1之间的一个区间,信源集合中的每一个元素都用来缩短这个区间。
算法流程
1 输入信源符号个数,还有需要编码的符号序列,计算信源概率分布
2 根据概率可以算出初始编码间隔,High——当前编码的上限,Low——当前编码的下限,high——中间变量,用来计算下一个编码符号的当前间隔的上限,low——中间变量,用来计算下一个编码符号的当前间
隔的下限,d——当前间隔之间的距离。
3 扫描需编码的符号序列,确定编码空间第1个编码符号的当前间隔为其初始的编码间隔,第i个编码符号的当前间隔为第i-1个编码后的[Low,High),第i+1个编码符号的当前间隔算法如下:high=Low+d*第i+1个初始编码符号对应的上限,low=Low+d*第i+1个编码符号对应的下限,然后High=high,Low=low,d=d*第i个编码符号的概率。
4.2模块划分
(1)主程序模块:
Int main() {
初始化; 输入数据; 执行功能;
显示结果; }
(2)各功能模块 编码
void bianma(int a,int h){} 解码
void jiema(int a,int h){} 主函数 void main(){}
4.3测试情况