1. 程式人生 > >量化引數QP與量化噪聲(壓縮偽影)

量化引數QP與量化噪聲(壓縮偽影)

背景介紹

    量化噪聲/偽影介紹 現代視訊編解碼技術(包括 H.264/AVC, H.265/HEVC, Mpeg2/4 等)概括起來都可以認為是基於塊的混合編碼技術,技術上編碼器將每一幀劃分稱為巨集塊的非重疊正方形。可以用幀內 Intra 預測和幀間 Inter 預測來處理壓縮每一個巨集塊。在幀內模式中編碼器僅使用當前幀來重構數 據,幀間模式中編碼器使用先前處理的參考幀來重構資料。

    如上圖所示,一般用“殘差”Dn 來表示當前塊和參考塊之間的誤差。將殘差 Dn 進一步進行離散餘弦變換 DCT後對變換系數進行量化可以進一步壓縮資料量。其中該壓縮過程是有損的,一般地隨著量化引數QP的擴大,影象的損失將變大。解碼過程需要進行一次反量化-反變換IDCT 還原殘差,後再根據參考巨集塊還原原始影象。應用量化-反量化的過程將導致資料丟失和失真。 因此,原始資料和重構資料之間的差稱作“量化噪聲”。視訊壓縮過程中的量化噪聲導致稱作“偽影” 的特定視覺誤差。在偽影當中有塊狀、環狀以及飛蚊噪聲,其中塊狀、環狀是塊中的豎線和橫線, 飛蚊噪聲看起來像影象強邊緣周圍的一團昆蟲。

量化引數 QP

    由於量化-反量化的資料有損性,因此可以說現代視訊壓縮技術都難以避免量化噪聲和其所 帶來的偽影現象。

    量化是在不降低視覺效果的前提下減少影象編碼長度,減少視覺恢復中不必要的資訊。 H264 採用標量量化技術,它將每個影象樣點編碼對映成較小的數值。一般標量量化器的原 理為:FQ = round(y/Qstep)。其中,y 為輸入樣本點編碼,Qstep 為量化步長,FQ 為 y 的 量化值。其相反過程即反量化為:y' = FQ ·Qstep。

    量化引數 QP 是量化步長 Qstep 的序號,因此越小的量化引數 QP 預示著越小的量化 步長,隨之量化損失也越小,量化誤差也越低。量化引數 QP 越大則反之。

量化引數 QP 和壓縮位元速率之間的關係

    實際上現有的位元速率控制演算法主要是通過調整離散餘弦變換的量化引數大小輸出目標碼 率。實際上,量化引數(QP)反映了空間細節壓縮情況,如 QP 小,大部分的細節都會被保留,碼 率增大。QP 增大,一些細節丟失,位元速率降低,但影象失真加強和質量下降。也就是說,QP 和位元率成反比的關係,而且隨著視訊源複雜度的提高,這種反比關係會更明顯。

    但是相反這樣的邏輯關係並不成立。位元速率越高的視訊並不一定 QP 值越小,這與編碼器 的預測演算法和預測策略有很大的關係。好的編碼器壓縮率較高,在較低的位元速率下就能夠實現 較小的 QP 值,視訊還原誤差小。而差的編碼器往往位元速率較大,反而視訊還原效果也不好。 往往也跟壓縮場景有很大的關係。因此用位元速率去衡量視訊的質量和壓縮誤差是不準確的。

    例如我們的測試片源同樣的編碼器指定 540p 400k 的位元速率編碼:

    第一個視訊就明顯呈現出大量的量化噪聲、 偽影現象。 而第二個視訊則呈現畫面清晰,細節豐富,無明顯量化噪聲的現象。 因此第一幅圖片需要進行去壓縮偽影 AF 的演算法,而第二幅加上 AF 反而會使細節丟失,畫面模糊。
    以上是兩個不同的場景。 讓我們在看一下同一個場景下,前後不同的兩幀:

    前後差距幾幀的視訊也表現出不同的現象。 圖片 3 在蛇的頭部和字型邊緣有偽影現,圖片 4則畫面清晰自然。

    實際上這是由於殘差 Dn 的大小造成的,在運動量較大的場景中,巨集塊的殘差 Dn 矩陣的值較大,在恆定位元速率的情況下,QP 就必須取的大一些以降低量化後的矩陣係數值,進行量化造成損傷的概率較高。 反之,在靜止情況下,巨集塊殘差 Dn 矩陣的值較小,甚至很大部分是 0,因此在恆定位元速率下,QP 值可以取得很小,量化造成的損傷也較小,量化噪聲和偽影也較輕。

    通過解碼過程統計平均的 QP 值:

    序號 圖片 QP 值 量化噪聲/偽影強度
    1 Pic1 38 非常強
    2 Pic2 22 無明顯
    3 Pic3 34 較強
    4 Pic4 23 無明顯

    因此通過解碼統計出巨集塊的平均 QP 值 Avg QP 可以作為衡量量化噪聲、 偽影強度的直接指標。

    優點是衡量相對客觀準確,對於量化操作的衡量直接準確。

    缺點是需要修改解碼器記錄巨集塊的 QP 值並計算平均 QP。