格倫布編碼——rice編碼無非是golomb編碼M為2^x的特例


格倫布編碼 

格倫布編碼是一種無失真資料壓縮方法,由數學家 所羅門·格倫布在1960年代提出。

Rice編碼

Robert F. Rice提出Rice 編碼,是以哥倫布編碼為基礎做改良而更簡易的前置碼。Rice編碼可視為適應性編碼的一種或是哥倫布編碼的特例之一。哥倫布編碼有一個可調整參數,可以是任一正整數。而Rice編碼則是此調整參數為2的次方情況時。這讓Rice編碼在電腦運算上快速許多,因為電腦上是已二進制運算為主。 Rice編碼是一種熵編碼技術,可用在影像及圖像壓縮上。

 

編碼的建立

哥倫布編碼使用可調整參數M把輸入值分成兩部分: 商數q, 除以M的結果及余數r。 商數當做一元編碼而余數放在后面做為可縮短的二進制編碼。當{\displaystyle M=1}哥倫布編碼等同於一元編碼。

 

 

 

哥倫布-Ric編碼可想成用bin(q) 指示位置而bin (r)代表偏移。上述圖片顯現使用哥倫布-Ric對整數 N編碼,另有位置q、偏移r、參數M。 而這兩部分如下式表達,x是要被編碼的數字。

{\displaystyle q=\left\lfloor {\frac {\left(x-1\right)}{M))\right\rfloor } and {\displaystyle r=x-qM-1} 最后偏碼結果: {\displaystyle \left(q+1\right),r}

r 是變化的位元數,在Rice編碼r則只有b位元數,而在哥倫布編碼, r會是b-1或b bits. 假設 {\displaystyle b=\lceil \log _{2}(M)\rceil }. 如果 {\displaystyle 0\leq r<2^{b}-M},則用b-1 位元數編碼r. 相反的,如果 {\displaystyle 2^{b}-M\leq r<M},用b位元數編碼r'. 當M 是2的次方時,{\displaystyle b=\log _{2}(M)},則所有的r值都是b個位元.

參數M是伯努利試驗函數,其中{\displaystyle p=P(X=0)}M則是中位數或中位數+/-1,如下式:

{\displaystyle (1-p)^{M}+(1-p)^{M+1}\leq 1<(1-p)^{M-1}+(1-p)^{M}.} M愈大愈難抓取{\displaystyle M=\left\lfloor {\frac {-1}{\log _{2}(1-p)))\right\rfloor }.

哥倫布編碼在分布上跟霍夫曼編碼有相同概率。

使用記號整數

哥倫布原本是用來編碼非負整數,但也可改良用來編碼任意整數,利用重新排列數值使正整數排在特定的位置。例如一串數字0, -1, 1, -2, 2, -3, 3, -4, 4 ... ,-n排在nth奇數(2n-1),而mth正數排在mth偶數(2m)。 正數x對應({\displaystyle x^{\prime }=2|x|=2x,x\geq 0}),負數對應({\displaystyle y^{\prime }=2|y|-1=-2y-1,y<0})。

 

算法

  1. 選擇整數作為M
  2. 要編碼數值N,找出下列式子
    1. 商數: q = int[N/M]
    2. 余數: r = N除以M
  1. 產生整體編碼
    1. 編碼形式 : < 商數編碼 > < 余數編碼 >
    2. 商數編碼
      1. 寫 q長度位元的1
      2. 寫一個0位元
    3. 余數編碼
      1. 如果M'是2的次方,編碼是二進制形式,需要{\displaystyle \log _{2}(M)}。(Rice 編碼)
      1. 如果M'不是2的次方,令b = \lceil\log_2(M)\rceil</math>
        1. If {\displaystyle r<2^{b}-M} 使用b-1 個位元編碼 r.
        2. If {\displaystyle r\geq 2^{b}-M} 使用b個位元 編碼{\displaystyle r+2^{b}-M}

范例

M = 10. 則 {\displaystyle b=\lceil \log _{2}(10)\rceil =4}{\displaystyle 2^{b}-M=16-10=6}

當選42作為編碼時,42會被拆成q=4及r=2,從上表中為q(4),r(2),編碼為11110,010,實際上不需要逗號去分隔兩部分,因為商數編碼最后的0能代表 余數編碼的起始位置。

參考:http://www.wikiwand.com/zh-sg/%E6%A0%BC%E5%80%AB%E5%B8%83%E7%B7%A8%E7%A2%BC


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM