• 沒有找到結果。

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

3.2 熵編碼模式切換演算法

3.2.5 線性模型的硬體實現分析

在前三小節中,我們在利用(3.9 式)計算 QP 和(3.12 式)更新係數時,都會需要浮點 數的除法器,為了減低演算法以硬體實現的成本,所以我們使用查表的方式來取代除法 的運算。在RQstep模型的計算上,我們使用 R-QP model 記憶體來取代,如圖 3.8 所示。

兩種熵編碼都需要自己的 R-QP model 記憶體。以一種熵編碼來說明,我們的記憶 體的位址為 52,代表 52 種 QP 值的變化,不過實際上只使用 48 種 QP 值。而每個位址 會紀錄 N 筆的 R 值,N 為同一個 QP 值之下要紀錄的資料數,而 R 為畫面以該 QP 值實 際壓縮的資料量。

圖 3.8 R-QP model 記憶體

所以這個記憶體的使用方式為,在演算法實際執行前,我們先收集畫面在48 種 QP 值壓縮下的 R 值以當作記憶體的預設值。而每次壓縮完,則將壓縮量 R 儲存到對應的 QP 位址,儲存的方式和圖 3.7 的方式相同,所以只會儲存最近的 N 筆資料。每次儲存 完之後,會針對每個 QP 值內儲存的資料取平均。平均完的資料則用來為編碼預算選擇 要使用的 QP 值。和 3.2.2 節相同,我們同樣要先計算畫面的編碼預算,在將編碼預算 和平均後的 52 個資料做比較,以相差最少者對應的位址為選定的 QP 值,而兩種熵編 碼同樣都以這個方法得出對應的 QP 值。

1 2 3 13.34% 10.58% 18.88%

表 3.1 記憶體所造成的切換誤差率

3.1 為使用 R-QP model 記憶體進行切換和實際以(3.9 式)計算兩者的模式切換誤 差,可以發現在 3 個測試影像中所造成的平均誤差約 14%,從第四章的模擬結果來看,

這個模式切換誤差是可以接受的,因為對整體的結果沒有造成很大的影響,而且可以省 去使用浮點數除法器。當記憶體的 N 取 4,而畫面壓縮最大資料量為 1M (bits/frame)時,

需要的記憶體大小為 2×48×4×20,約為 0.94 KB。但是因為在位元率控制中,畫面編碼 預算的變動量約為±50%之間,所以以頻寬 250k bits/frame 為例,需要的記憶體大小為

2×10×4×20,約 0.2 KB。 成數個區間,而同一個區間內的圖片則使用相同的 PSNR-QP table。PSNR-QP table 在每 個區間中要為 52 個 QP 值建立預先計算好的 M 值。在這裡,M 的紀錄大小為 0~4。0 代表此處的等效 PSNR 已經大於 50 dB 以上,不進行模式的切換,而 M 值出現 4 以上 的機率很低,所以 4 以上的情況都化簡以 4 表示。PSNR-QP table 的使用方式為利用畫

面實際壓縮時的 SATD 值去選擇對應的表格,在用兩種熵編碼對應的值去選擇 M 值,

當選擇出的 M 不同時,以較小值為主,這樣做的理由是 M 值出現較小值的機率會比較 大值高。

4 8 16 32 64 128

SATD 0.1301 0.1271 0.1169 0.1141 0.103 0.104 表 3.2 SATD 分類區間數所造成的 M 值 MSE

表 3.2 為測試影像在不同 SATD 分類區間數下所造成的 M 值 MSE 變化。MSE 值的 計算為同一 SATD 分類下單一畫面的 M 值和整個區間的平均值計算的結果。我們最後 選擇的分類數為 16,因為分類數 8 到 16 是 MSE 減少最大的地方,而雖然分類數越大 可以造成 MSE 值的下降,但是分類數越大將直接導致表格變大,且 MSE 值的下降趨勢 漸趨於飽和。同樣在位元率控制中,QP 值的變動最大約為±10,所以實際的表格大小約 為 16×20×3,約為 1Kb。

相關文件