算术编码用C++的实现,第1张

算术编码用C++的实现,第2张

算术编码在图像数据压缩标准(如jpeg和jbig)中占有重要地位。在算术编码中,消息用0到1之间的实数编码。算术编码使用两个基本参数:符号的概率及其编码间隔。源符号的概率决定了压缩编码的效率,也决定了编码过程中源符号的间隔,这些间隔在0和1之间。编码过程中的间隔决定了符号压缩后的输出。

算术编码需要输入符号,每个符号的概率和要编码的符号序列。根据该概率,可以计算初始编码间隔。首先设置几个变量以备后用:高—当前编码的上限,低—当前编码的下限,高—中间变量,用于计算下一个编码符号的当前间隔的上限,低—中间变量,用于计算下一个编码符号的当前间隔的下限。D—第一个编码符号的当前间隔为其初始编码间隔,第I个编码符号的当前间隔为I-1次编码后的[Low,High],第I+1次编码符号的当前间隔算法如下:high=Low+d*第I+1次初始编码符号对应的上限,low=Low+d*第I+1次编码符号对应的下限,然后High=high。

编码过程如下:

# include
# define M 100
# define N 4
class算书
{
int count,length
字符数[N],N;
长双机会[N],c;
char code[M];
long双高,低,高,低,d;
public:
suan Shu()
{ High = 0;低= 0;}
void get _ number();
void get _ code();
void编码();
~ suan Shu(){ }
};

void suan Shu::get _ number()
{
cout count = I;
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 算术编码用C++的实现

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情