• 沒有找到結果。

第三章 熵編碼模式切換演算法的設計

3.3 熵編碼的碼率預估演算法

3.3.1 CAVLC碼率預估演算法

Level suffix_length : 0

1 1 -7 00000000000001

±8 ~±15 000000000000001xxxx

≧ ±16 0000000000000001xxxxxxxxxxxx

Level suffix_length : 1

1 10 14 000000000000010

-14 000000000000011 15 0000000000000010 -15 0000000000000011

> ±15 0000000000000001xxxxxxxxxxxx

Level suffix_length : 2 29 00000000000000100

-29 00000000000000101 30 00000000000000110 -30 00000000000000111

> ±30 0000000000000001xxxxxxxxxxxx

Level suffix_length : 3

1 1000 59 000000000000001100

-59 000000000000001101 60 000000000000001110 -60 000000000000001111

> ±60 0000000000000001xxxxxxxxxxxx

表 3.3 suffix_length 值為 0 到 4 對應的 level 編碼結果

從四個表格中可看到,除了 suffix_length 值等於 0 的情況之外,其他三個表格皆會 在當 level 值大於某個門檻值之後,編碼長度即固定為 28,即表格中呈現灰色的部份。

而在小於門檻值時,則編碼長度會和 level 絕對值呈正比。而 suffix_length 值等於 0 時,

則具有兩個門檻值。表 3.4 列出不同 suffix_length 值之下,影響編碼值長度變動或固定 的 level 門檻值,意即當 level 小於門檻值時,編碼長度屬於變動值。

suffix_length level 門檻值

0 8

在[32]中提到,level 編碼的結果在 level 值小於門檻值時(即表格中白色部分的編碼) 可以分成 prefix 和 suffix 兩個部份。prefix 部份可以相當於表 3.3 中每個碼字前面連續 零的部分,而 suffix 部分為第一個 1 之後所包含的部份。這兩個部份的編碼長度都會受 到 suffix_length 這個參數所影響。而當編碼的過程中,區塊中 level 的絕對值超過規定 的門檻值,則 suffix_length 的值會增加。門檻值和 suffix_length 的關係[1]表示在表 3.5 中。

suffix_length 增加 suffix_length 的 level 門檻值

(3.17 式)、(3.18 式)所示。(3.16 式)是把 level 值轉成以 level_index 表示,而 level_index 可以等效成在 suffix_length 表格中的位置。(3.17 式)中的 代表編碼結果連續零的 個數,也就是 prefix 部分的長度。而(3.16 式)中的 為 suffix 部分扣掉第一個 1 之後 的二進位值,其編碼長度恰好為 suffix_length。

prefix

_index suffix_length level

prefix= (3.17)

) 2

(

%

_index suffix_length level

suffix= (3.18)

但是我們在這裡只需要知道 level 編出來的編碼長度,綜合前面三式的結果,level 編碼長度可以用(3.19 式)、(3.20 式)表示。code_length 為計算出來的 level 編碼長度,prefixsuffix為 3.17 式和 3.18 式所計算之值,threshold為表 3.4 之門檻值。

Time/frame(s) 25.38 11.24 2.56

表 3.6 CAVLC 碼率預估演算法模擬比較

模擬的方式為將內視鏡影像以原始的 CAVLC 壓縮先求得在 48 個 QP 值的壓縮量,

在以模擬的單張畫面壓縮預算去計算對應的 QP 值為何,而提出的預估演算法和[21]同 樣使用相同的方法去反推 QP 值。而這個 QP 值即等效使用這個預估演算法的線性模型 在單張畫面壓縮預算給定下會計算出的 QP 值。所以利用兩者和原始 CAVLC 壓縮的 QP 值差異就可以推論預估演算法準確度對線性模型預估準確性的影響。

表 3.6 第二行的資料代表直接用 CAVLC 壓縮的結果,同時我們也利用這個結果當 做標準,去計算提出的預估演算法和[21]兩者的 QP SAD 值和錯誤率,分別列於表中第 二和第三列。QP SAD 值為兩種預估演算法和 CAVLC 壓縮所預估出的 QP 差值的絕對 值總和而錯誤率為 20 個模擬值發生錯誤的機率。表中第四列的數據代表使用三種方式 在取得單張圖片壓縮量的平均模擬時間。模擬平台是使用 MATLAB 7.6.0。從模擬結果 的數據可以看到我們的預估演算法雖然不能像[21]比原始的壓縮大幅減低時間,但也平 均減少了一半的時間以上,甚至約達 ,但是能保證猜測出的 QP 值和直接用 CAVLC 編碼猜測的相同。而[21]的方式則產生很大的誤差。

3 / 1

圖 3.10 顯示其中一張測試影像以三種方法壓縮的位元率。圖 3.10 上半部顯示 QP 值 4 到 27,而下半部則顯示 QP 值 28 以後的結果。其中 CAVLC 為直接以固定 QP 值壓 縮的結果,而提出的預估演算法和[21]則是直接以公式計算。因為預估演算法和直接以 CAVLC 壓縮的兩條線幾乎重疊,所以猜測的 QP 值才會完全相同。從圖中可以發現,[21]

的猜測方法只有在 QP 值在 21 到 26 時才會和原始 CAVLC 的壓縮結果接近,其它的部 份都具有相當的差距,所以其計算出的猜測 QP 值也都具有相當的誤差,而這就能解釋 表 3.6 的模擬結果。雖然為了節省執行時間,在整體的熵編碼模式切換演算法設計中我 們不使用 CAVLC 的碼率預估,但是從這個模擬結果,碼率預估演算法預估的編碼量必 須儘可能接近原始的壓縮結果,才不會造成過大的猜測 QP 值誤差。

圖 3.10 CAVLC 編碼率預測的 R-QP 關係圖

0 200000 400000 600000 800000 1000000 1200000 1400000

4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

QP

R(bits)

CAVLC proposed [21]

(a) QP from 4 to 26

0 20000 40000 60000 80000 100000 120000 140000

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

QP

R(bits)

CAVLC proposed [21]

(b) QP from 27 to 51

相關文件