算術編碼在圖象資料壓縮標準(如jpeg,jbig)中扮演了重要的角色。在算術編碼中,訊息用0到1之間的實數進行編碼。算術編碼用到了兩個基本的引數:符號的概率和它的編碼間隔。信源符號的概率決定壓縮編碼的效率,也決定編碼過程中信源符號的間隔,而這些間隔包含在0到1之間。編碼過程中的間隔決定了符號壓縮後的輸出。
算術編碼需要輸入的是符號,各個符號的概率還有需要編碼的符號串行,根據概率可以算出初始編碼間隔,先設幾個變數在後面可用:high——當前編碼的上限,low——當前編碼的下限,high——中間變數,用來計算下乙個編碼符號的當前間隔的上限,low——中間變數,用來計算下乙個編碼符號的當前間隔的下限,d——當前間隔之間的距離。第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個編碼符號的概率。
編碼程式如下:
#include
#define m 100
#define n 4
class suanshu
void get_number();
void get_code();
void coding();
~suanshu(){}
};void suanshu::get_number()
if(i==20)
cout<<"the number is full."<>length;
while(length>=m)
for(int i=0;i>code[i];}}
void suanshu::coding()
else
}else continue;
}cout<<"the result is:"<}int main()
本程式在vc6.0和xp專業版下執行通過,這是我個人第一次用c++寫的比較完整的程式,還有些不盡人意的地方,比如變數和函式命名不太專業,以後會注意,慢慢也會好的。呵呵~
算術編碼用c 的實現
算術編碼在圖象資料壓縮標準 如jpeg,jbig 中扮演了重要的角色。在算術編碼中,訊息用0到1之間的實數進行編碼。算術編碼用到了兩個基本的引數 符號的概率和它的編碼間隔。信源符號的概率決定壓縮編碼的效率,也決定編碼過程中信源符號的間隔,而這些間隔包含在0到1之間。編碼過程中的間隔決定了符號壓縮後的...
c 算術編碼
熵編碼 算術編碼 算術編碼把整個信源序列表示為實數線上的0到1之間的乙個區間,其長度等於該序列的概率,在該區間內選擇乙個代表性的小數 最少位數 轉化為二進位製作為實際的編碼輸出。序列中的每個新增元素都要用來縮短這個區間。訊息序列中元素越多,所得到的區間就越小,區間越小,就需要更多的數字來表示這個區間...
Python實現算術編碼的原始碼
在通訊領域經常會使用算術編碼對資訊進行編碼,下面提供乙個給python使用的對給定序列進行算術編碼的源 使用方法一看就會了 coding utf8 class artimeticcoding object def init self,symbol,p,range 1.low 0.self.symbo...