1. 程式人生 > >[幀間編碼]概分法幀間編碼快速判定

[幀間編碼]概分法幀間編碼快速判定

曾經有在讀研究生問我有關幀間編碼快速判定演算法,因為他(她)目前的任務主要是為幀間編碼或者幀內編碼提出一種實用實時的快速演算法。對於實時編碼軟體(或者硬體)而言包括X264,T264在內為了達快速的效果,以達到實時傳送影象資訊的效果,都會採用快速判定幀間或者幀內預測,有的會去掉一些複雜的演算法。主要的想法就是,既然要得到最優的編碼模式,要用很高的複雜計算和大量的計算時間,倒不如不再要求得到最優的編碼模式,只要能得到80%的次優的編碼模式,甚至得到一部分中優的編碼模式,只要編碼後再解碼的影象質量下降不多,能適用,位元速率增加不多,編碼時間能大幅下降,那這樣的目的也就達到了。所以目前就有很多人提出了很多幀間或幀內快速判定法,先去除一些認為出現概率不大的預測模式,比如或先刪P16的P16x16模式,或先刪P16的P16x8,P8x16模式,或先刪P8的P8x8模式,或先刪P8的P8x4,P4x8模式,或先刪P8的P4x4模式,如此林林種種,各種演算法五花八門。
對於幀間預測模式而言,大體上分了如下幾類。
第一種分法:
P16全模式:包括P16x16, P16x8, P8x16
P16大模式:p16x16
P16小模式:包括P16x8, P8x16
P8全模式:包括P8 x8, P8x4, P4x8, P4x4
P8大模式:p8x8
P8小模式:包括P8x4, P4x8, P4x4
第二種分法:
A類模式:包括P16x16,PSKIP/BSKIP_DIRECT

B類模式:包括P16x8, P8x16
C類模式:包括P8 x8
D類模式:包括P8x4, P4x8
E類模式:包括P4x4。

幀間快速判定模式,很多是或者根據邊緣強度,或者根據紋理特徵,或者根據原影象點和參考影象點的SAD值,去除掉其中一類或者多類幀間預測模式,用少量的幀間預測模式進行預測,進行代價(開銷)比較,取最小的代價(開銷或者成本)為最佳模式進行編碼。這樣得到的基本是:大部分次優(次佳)模式+少量的最優模式+少量的中優模式。
這樣影象質量有所下降,位元速率有所增加,但大幅度降低了編碼時間,更適用了實時的編碼場合。

這兒提的“概分法快速判定幀間預測模式”指的是:用概率分佈的方法來判定某一塊最有可能的幀間預測模式。
具體方法是:把待編碼影象按4x4分為若干不重疊的塊即我們通常所說的4x4塊,將該塊與一幀參考幀或者多幀參考相對應的位置(相同的位置)進行4x4塊內SAD累加和計算。然後用該塊的SAD累加和與五個動態的SAD閥值比較,根據比較結果將該塊按本文所說的第二種幀間模式分類的類別,根本進行該模式類別相應幀間預測進行幀間預測計算。

本文對該演算法進行過測試
。影象質量下降不明顯,位元速率有所提高,編碼時間有大幅下降為原編碼時間的40%~60%不等。
該法雖然去掉了不少的幀間預測計算的時間,但SAD累加和的計算和五個動態的SAD閥值計算仍佔了不少的時間。