1. 程式人生 > >編碼原理詳解(三)---量化

編碼原理詳解(三)---量化

進一步 mark 新的 dct 說明 一點 註意 cto water

本節開始介紹編碼過程中的量化環節。還記得上一篇的變換嗎?變換之後得到了一個新的矩陣,一個經過從空域變換到頻域的一個矩陣。那麽,量化呢,就是基於變換後得到的矩陣,再做進一步的處理,本質也就是進一步的壓縮。

一、原理

    量化的原理是把變換後的DCT系數除以一個常量,經過量化後的結果是量化步長的整數倍或者為更多的零值,從而達到了壓縮的目的。

二、量化公式

    q(x, y) = round(F(x, y) / Q + 0.5);

公式說明:F(x, y)為經過DCT變換後的DCT系數, Q為量化步長,在x264中對應qp的值。round()函數返回四舍五入的整數值。q(x, y)則是經過量化之後的值嘍。簡單舉個栗子:如果某個像素點經過DCT變換後的值為203, 量化步長QP 取28,辣麽,q(x,y) = round(205 / 28 + 0.5) = round(7.8214) = 8. 有沒有懂了呢,哈哈,還是來個圖吧。

三、量化示意

技術分享圖片

四、說明

    (1) 我的天哪,量化完之後腫麽這麽多零呢,哈哈,這個不正式咱們想要的結果嗎,哈哈;
    (2) 從公式可以看粗來,量化值QP越大,那麽量化的粒度越粗,相應的也會省更多的比特,但是畫質相應的就會差很多;量化值QP越小,那麽量化粒度越細,相應的會占用更多的比特,畫質也就會好一些嘍。
    (3) 從公式也可以看出,編碼過程中,量化是一個有損的過程哦,這一點一定要註意哦。

    好了,量化就到這裏嘍,量化後的數據該怎麽處理呢,敬請期待下一篇ZIG-ZAG之字形掃描嘍。

編碼原理詳解(三)---量化