專利名稱:在視頻編碼器中選擇宏塊量化參數(shù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種視頻編碼系統(tǒng)。尤其涉及使用運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)ITU-T H.263和MPEG-4甚低比特率視頻(VLBV)來進(jìn)行視頻序列壓縮的兩種標(biāo)準(zhǔn)系統(tǒng)。
背景技術(shù):
使用運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)來壓縮視頻序列的兩種標(biāo)準(zhǔn)系統(tǒng)是在1995年2月由甚低比特率視覺技術(shù)ITU-T SG 15專家組起草建議的H.263中描述的ITU-T H.263和在1996年11月由MPEG視頻組,Doc.ISO/IEC/JTCI/SC29/WG11,N1469 Maceio在MPEG-4視頻檢驗(yàn)?zāi)P?版本5.0中所描述的MPEG-4甚低比特率視頻(VLBV)。在定義的版本1之后已經(jīng)對(duì)H.263進(jìn)行了一些擴(kuò)展。擴(kuò)展版本經(jīng)常被稱作H.263+。術(shù)語H.263在這里被用作指未進(jìn)行擴(kuò)展的版本,即版本1。由于在MPEG-4 VLBV和H.263中所使用的算法之間的相似性,在此討論焦點(diǎn)將集中在H.263的算法上。
H.263是一個(gè)以低比特率(<64kbits/sec)來壓縮視頻序列的ITU-T推薦標(biāo)準(zhǔn),并且是基于早期的ITU-T推薦標(biāo)——H.261。圖1描述了H.263編碼器的控制元件的框圖。(視頻編碼器未示出。)這樣一個(gè)編碼器的主要元件是一個(gè)預(yù)測(cè)模塊11,一對(duì)塊變換模塊12(變換模塊T和T’),以及一對(duì)量化模塊13(量化模塊Q和Q’)。此外,還有一個(gè)編碼控制模塊14。
編碼控制模塊14確定所有編碼參數(shù);它充當(dāng)了所述系統(tǒng)的大腦。從編碼控制信號(hào)中產(chǎn)生INTRA/INTER判決數(shù)據(jù),該編碼控制信號(hào)用于控制是否使用先前幀的知識(shí)來編碼當(dāng)前幀。
編碼控制模塊提供的量化指示數(shù)據(jù)流確定每一宏塊使用的所謂量化參數(shù)。該確定可以位于幀級(jí)別或宏塊級(jí)別。本發(fā)明集中于該信號(hào)的產(chǎn)生上。
圖1中所指的“視頻復(fù)用編碼器”僅僅是一個(gè)復(fù)用器,并且不使用“視頻輸入”作為它的其中一個(gè)輸入。指示為被提供給“視頻復(fù)用編碼器”的信號(hào)包括視頻信號(hào)的壓縮表示。
為了利用在連續(xù)幀之間的時(shí)間相關(guān)性,如果先前重建幀有效并且有用,那么該系統(tǒng)首先執(zhí)行運(yùn)動(dòng)補(bǔ)償預(yù)測(cè),上述術(shù)語“有用”表示使用先前幀(INTER編碼)將比不使用它們(INTRA編碼)產(chǎn)生更好的壓縮性能。如果后續(xù)幀不完全相關(guān),INTRA編碼可能會(huì)產(chǎn)生更好的壓縮性能。該系統(tǒng)首先使用運(yùn)動(dòng)信息和先前重建的幀來進(jìn)行運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)。為了使所述解碼器可以進(jìn)行與所述編碼器中所進(jìn)行的預(yù)測(cè)相同的預(yù)測(cè),(從編碼器向解碼器)傳輸所述運(yùn)動(dòng)信息(圖1中的v)。下一步,稱作DCT(即離散余弦變換)的塊變換被用于塊T的預(yù)測(cè)誤差(或者在無預(yù)測(cè)的情況下是幀本身),以便利用空間相關(guān)性。最后,預(yù)測(cè)誤差的DCT系數(shù)在塊Q中被量化和熵編碼。量化器是用來向視頻序列引入損耗以獲得較高壓縮的主要裝置。損耗量(和這樣的比特率)由量化器的步長來控制,依次由量化器參數(shù)(QP)來確定所述步長的參數(shù),步長參數(shù)具有在1到31之間的整數(shù)值,并由編碼控制模塊14提供給塊Q。QP必須是解碼器所知的,因此它被作為邊(輔助)信息來傳輸(并在圖1中指定為qz)。
H.263的基本層是所述的宏塊層。宏塊(MB)是H.263的基本構(gòu)建塊,在某種意義上說主要元素的編碼(預(yù)測(cè)、塊變換和量化)可以通過每次處理一個(gè)宏塊來執(zhí)行。一個(gè)宏塊由一個(gè)16×16的亮度塊、兩個(gè)8×8的色度塊、以及宏塊級(jí)編碼參數(shù)(例如宏塊類型等)的所述表示組成;一些宏塊級(jí)編碼參數(shù)是可選的。以光柵掃描的順序傳輸宏塊。因?yàn)楹陦K級(jí)編碼參數(shù)在比特位方面代價(jià)很高,所以只有在有必要這樣做的時(shí)候才在所述宏塊級(jí)對(duì)它們進(jìn)行編碼。(存在諸如所述量化參數(shù)QP的幀級(jí)編碼的編碼參數(shù)。當(dāng)沒有執(zhí)行宏塊級(jí)編碼時(shí),就使用這些幀級(jí)數(shù)值。)H.263提供了QP的有限宏塊級(jí)控制;存在一個(gè)可選的2比特DQUANT字段,其對(duì)當(dāng)前宏塊的QP和先前的編碼宏塊的QP之間的差值進(jìn)行編碼。(參見H.263+(2/98)的5.3.6部分。)由于在H.263的5.3.6部分中所述比特字段的限制,宏塊QP在每次變化時(shí)至多可以改變±2。在QP變化被用來進(jìn)行速率控制的情況下,在QP變化范圍上的這種限制非常充分。然而,除了速率控制之外也可以有其它改變QP的原因,例如感興趣區(qū)域的編碼,其是一種給一個(gè)自動(dòng)檢測(cè)到的或用戶規(guī)定的感興趣區(qū)域,例如人臉分配更多比特(這樣引入較少的損失)的技術(shù)。
發(fā)明解決的問題考慮為了諸如感興趣區(qū)域(ROI)編碼目的而不是速率控制目的所需的宏塊級(jí)QP變化的情形。在這樣一種情形下,QP的有限宏塊級(jí)控制造成了嚴(yán)重的限制。由感興趣區(qū)域分析器建議的或由用戶輸入的任意的QP分布不能完全由H.263(或MPEG-4 VLBV)編碼器實(shí)現(xiàn)。因此,在某種意義上講,這種編碼器需要選擇一個(gè)盡可能接近初始建議分布的近似實(shí)現(xiàn)。鑒于最優(yōu)性的定義(或等效的成本量度),本發(fā)明提供了一種最佳選擇實(shí)現(xiàn)的方法,也就是,提供了一種將由約束實(shí)現(xiàn)所招致的總成本減小到最少的方法,規(guī)定的總成本當(dāng)所述QP分布越接近于所述建議的分布時(shí)越低,但當(dāng)必須使用的比特越多時(shí)則越高。
作為一個(gè)相關(guān)的問題,在1998年1月由甚低比特率視頻技術(shù)ITU-T SG 15專家組起草建議的H.263版本2所規(guī)定的H.263+中,任意分布的精確表示在比特預(yù)算上可能非常浪費(fèi),因此這不是最理想的方案。量化可以在宏塊的基礎(chǔ)上進(jìn)行變化,并且可能沒有更精細(xì)的變化。任意分布的精確表示指的是多個(gè)宏塊QP的一個(gè)任意選擇??紤]通過為每個(gè)宏塊分配一個(gè)獨(dú)立的QP所形成的矢量QP。表示所述分量矢量其中的一些比表示其它的耗費(fèi)少得多(在比特上)。如果不考慮相鄰宏塊的QP值來為每個(gè)宏塊選擇一個(gè)QP,那么就可能要花費(fèi)驚人數(shù)量的比特來表示塊到塊的QP變化。
編碼器需要在一方面跟隨感興趣區(qū)域分析器的初始建議(對(duì)于QP分布來說)和另一方面最小化花費(fèi)在QP變化上的總比特之間找到一個(gè)最好的折中。對(duì)于此相關(guān)問題,本發(fā)明提供了一種當(dāng)成本函數(shù)被定義來表示所述折中時(shí)找到最好折中的方法。
早期解決此問題的方法依據(jù)現(xiàn)有技術(shù),對(duì)于使用ROI編碼的MPEG-4視頻編碼器來說,通過將每個(gè)幀分離成兩個(gè)視頻對(duì)象平面(VOP)、一個(gè)前景VOP和一個(gè)背景VOP來獲得QP控制,如在Low Bit-rate Coding of Image Sequence Using Adaptive Regions of Interest,by N.Doulamis,A.Doulamis,D.Kalogeras,and S.Kollias,IEEE Tran.on CAS forVideo Technology,pp.928-934,vol.8,no.8,Dec.1998中所描述的,并且也在VideoSegmentation for Content-Based Coding,by T.Meier,and N.Ngan,IEEE Tran.On CASfor Video Technology,pp.1190-1203,vol.9,no.8,Dec.1999中有描述。這種分離克服了在前景/背景分離邊界±2的變化限制。
現(xiàn)有技術(shù)方案有兩個(gè)缺點(diǎn)。第一,存在一個(gè)編碼VOP分割的比特開銷,如果所述的前景不緊密,那么比特開銷有可能變得讓人望而卻步。當(dāng)決定在所述前景/背景分離時(shí),很難考慮這些比特。這樣,如果并非不可能的話,很難進(jìn)行優(yōu)化。第二,現(xiàn)有技術(shù)方案不能在每個(gè)VOP(即在每個(gè)VOP內(nèi)的變量)內(nèi)直接提供分級(jí)的QP控制。所述QP值必須在所述背景內(nèi)和/或前景內(nèi)進(jìn)一步變化,從而獲得每個(gè)VOP內(nèi)的分級(jí)控制。在QP如何變化上仍然存在限制,并且優(yōu)化甚至變得比在包括所述整個(gè)幀的單個(gè)VOP內(nèi)進(jìn)行精密QP控制的最初問題更加不切實(shí)際。
在H.263中不支持VOP結(jié)構(gòu)。因此,即使這樣的方案也是無效的。因此,±2的變化限制適用于H.263中的所有宏塊。這樣在H.263中就沒有為進(jìn)行ROI編碼(或任何其它需要進(jìn)行精密QP控制的情形)來對(duì)宏塊QP選擇進(jìn)行幀級(jí)優(yōu)化的技術(shù)。
H.263+提供了一種用于精確QP控制的比特消耗機(jī)制;該機(jī)制能夠通過花費(fèi)(使用)6個(gè)比特來表示宏塊的任意QP。對(duì)于甚低比特率應(yīng)用(其是H.263和H.263+的主要焦點(diǎn))來說,對(duì)任意QP分布的表示在比特預(yù)算方面容易變得非常驚人,因此幀級(jí)優(yōu)化尤其有利。然而,如在H.263中那樣,在H.263+中沒有用來為進(jìn)行ROI編碼(或其它任何需要精密QP控制的情形)而對(duì)宏塊QP選擇進(jìn)行幀級(jí)優(yōu)化的已知技術(shù)。
需要一種以不花費(fèi)太多比特的方式來提供精確QP控制,即幀級(jí)控制的機(jī)制,以便其在低比特率應(yīng)用中有用。
發(fā)明內(nèi)容
因此,本發(fā)明的第一方面提供一種用來在視頻編碼器中選擇量化參數(shù)值序列的方法,所述視頻編碼器被安排來將一個(gè)視頻幀編碼為一個(gè)n宏塊序列,并為所述視頻幀的每個(gè)宏塊分配一個(gè)量化參數(shù)值,所述方法的特征在于,分配給所述n個(gè)宏塊序列的至少一個(gè)子集的量化參數(shù)值以這樣一種方式被優(yōu)化,以便使得與它們編碼相關(guān)的成本最小化。
根據(jù)本發(fā)明的第一方面,所述n宏塊序列的所述子集包括所有所述n宏塊。
也是根據(jù)本發(fā)明的第一方面,可以使用一個(gè)維特比搜索算法來對(duì)分配給所述n宏塊序列的至少一個(gè)子集的所述量化參數(shù)值進(jìn)行量化。
也是根據(jù)本發(fā)明的第一方面,可以通過將與編碼建議的量化參數(shù)值序列有關(guān)的花費(fèi)和編碼一個(gè)候選的量化參數(shù)值序列的花費(fèi)進(jìn)行比較,來對(duì)分配給所述n宏塊序列的至少一個(gè)子集的所述量化參數(shù)值進(jìn)行量化。
還是根據(jù)本發(fā)明的第一方面,在用所述方法來對(duì)視頻編碼器的量化器參數(shù)QP提供幀級(jí)控制的應(yīng)用中,所述視頻編碼器具有一個(gè)量化器參數(shù),該參數(shù)用于幀的每個(gè)宏塊,所述幀由n個(gè)宏塊構(gòu)成,所述方法提供一個(gè)優(yōu)化的量化器參數(shù)序列Q*,該序列來自一組具有一個(gè)量化器參數(shù)序列Q作為充當(dāng)候選量化器參數(shù)序列的任意元素的所有可能量化器參數(shù)序列,所述最佳量化器參數(shù)序列Q*最小化指示使用所述候選量化器參數(shù)序列Q來代替一個(gè)建議的量化器參數(shù)序列S的花費(fèi)的成本函數(shù)C(Q,S),所述方法包括接收建議的量化器參數(shù)序列S的步驟;定義具有元素D(Q,S)的成本函數(shù)C(Q,S)的步驟,所述元素D(Q,S)表示了在所述候選序列Q和所述依據(jù)一個(gè)預(yù)定標(biāo)準(zhǔn)測(cè)量的建議量化器參數(shù)序列S之間的差異,并具有一個(gè)與用于表示所述候選序列Q的比特?cái)?shù)成比例的元素R(Q);以及將所述最佳量化器參數(shù)序列Q*確定為最小化所述成本函數(shù)C(Q,S)的序列的步驟;從而提供一個(gè)在比特效率方面接近所述建議的量化器參數(shù)序列S的最佳量化器參數(shù)序列Q*。
進(jìn)一步,所述建議的量化器參數(shù)序列S可以由一個(gè)感興趣區(qū)域的分析器提供。
還進(jìn)一步,所述確定所述最佳量化參數(shù)序列Q*作為最小化所述成本函數(shù)C(Q,S)的序列的步驟可以包括,用一個(gè)落入由所述建議的量化器參數(shù)序列S的量化器參數(shù)跨越的量化器參數(shù)值的范圍內(nèi)的k值來計(jì)算一個(gè)最佳的約束成本函數(shù)Ck*(St)的步驟,所述最佳約束成本函數(shù)是t個(gè)量化器參數(shù)的局部建議的量化器參數(shù)序列St的函數(shù),并指示了通過使用任何可能的局部候選量化器參數(shù)序列Qt,k可獲得的最低成本,所述序列具有作為一個(gè)最后第t個(gè)元素的帶有所述k值的量化器參數(shù)。
還進(jìn)一步,所述確定所述最佳量化參數(shù)序列Q*作為最小化所述成本函數(shù)C(Q,S)的序列的步驟可以包括子步驟從所述建議的量化器參數(shù)序列S中確定一個(gè)從一個(gè)預(yù)定最小值到一個(gè)預(yù)定最大值的量化器參數(shù)值的范圍;設(shè)定序列長度t等于1;設(shè)定k值等于所述預(yù)定最小值;計(jì)算最佳約束成本函數(shù)Ck*(St),所述最佳約束成本函數(shù)是t個(gè)量化器參數(shù)的局部建議的量化器參數(shù)序列St的函數(shù),該最佳約束成本函數(shù)當(dāng)t大于1時(shí)的計(jì)算是基于根據(jù)Ck*(St-1)給出的Ck*(St)并涉及一個(gè)條件r(k,j)+Cj*(St-1)的遞歸關(guān)系,其中r(k,j)是與在表示具有變量j的Q上花費(fèi)的比特?cái)?shù)成比例的所述成本分量R(Q)的一個(gè)元素,所述j具有從所建議的量化器參數(shù)序列S確定的范圍中的一個(gè)值;為當(dāng)前t和k存儲(chǔ)最小化條件r(k,j)+Cj*(St-1)的j值;計(jì)算所述最佳約束成本函數(shù)Ck*(St),并為所述當(dāng)前t和k存儲(chǔ)最小化條件r(k,j)+Cj*(St-1)的j值,對(duì)于連續(xù)的k值而言,每一個(gè)k值比前一個(gè)值大,直到k等于所述預(yù)定最大值為止,并且對(duì)連續(xù)的t值而言,每一個(gè)t值比先前t值大,直到t等于在一個(gè)幀中的宏塊的數(shù)量為止;基于在所建議的序列S中的量化器參數(shù)值的范圍內(nèi)的所有k值的Ck*(St=n)的比較,來確定所述最佳成本函數(shù)C*(St=n);以及通過這樣一個(gè)過程建立所述優(yōu)化序列Q*首先設(shè)定所述量化器參數(shù),使得所述最后一個(gè)宏塊等于最小化Ck*(St=n)的k值,然后向后跟蹤,將為下一個(gè)宏塊存儲(chǔ)的j值分配到被建立的優(yōu)化序列中的每個(gè)先前的量化器參數(shù)。
甚至再進(jìn)一步,所述的成本函數(shù)分量D(Q,S)可以是由方程所給出的形式,D(Q,S)=Σi=1nd(qi,si),]]>其中d(qi,si)是一個(gè)無記憶的宏塊級(jí)非負(fù)成本分量,其具有作為自變量的一個(gè)所述候選量化器參數(shù)序列的元素qi和一個(gè)所建議的量化器參數(shù)序列的相應(yīng)元素si;于是所述成本函數(shù)分量R(Q)可以是由方程所給出的形式,R(Q)=Σi=1nr(qi,qi-1),]]>其中r(qi,qi-1)是一個(gè)無記憶的宏塊級(jí)的非負(fù)成本分量,其表示在為宏塊i編碼所述量化器參數(shù)所使用的比特?cái)?shù)量和為宏塊i-1編碼所述量化器參數(shù)所使用的比特?cái)?shù)量之間的關(guān)系;于是所述成本函數(shù)分量R(Q)的一個(gè)元素r(qi,qi-1)可以由所述方程給出, 并且所述成本函數(shù)分量D(Q,S)的一個(gè)元素d(qi,si)可以由下述方程給出,d(qi,si)=(qi-si)2;此外所述成本函數(shù)分量R(Q)的一個(gè)元素r(qi,qi-1)可以由所述方程給出, 其中λ是一個(gè)用作速率失真折中參數(shù)的預(yù)定非負(fù)值和其中Nqi,qi-1是用來表示用qi-1給出的qi的比特?cái)?shù);而且所述成本函數(shù)分量D(Q,S)的一個(gè)元素d(qi,si)可以由方程給出d(qi,si)=‖mse(qi)-mse(si)‖,其中mse(...)描述了在初始?jí)K內(nèi)容和用所指示的量化器參數(shù)序列元素qi或si重建的宏塊內(nèi)容之間的均方差。
根據(jù)本發(fā)明的第二方面,提供了一種用來執(zhí)行依據(jù)本發(fā)明的第一方面的方法的裝置。
因此,本發(fā)明基于一個(gè)用來選擇最佳的宏塊QP的幀級(jí)算法。所述最佳標(biāo)準(zhǔn)可以被客觀地定義,其允許將所述算法定制來適應(yīng)不同的運(yùn)算模式。盡管所述算法使用了一個(gè)動(dòng)態(tài)編程方法,所述核心算法的計(jì)算復(fù)雜性是相當(dāng)?shù)偷摹?br>
就發(fā)明人所知,本發(fā)明是用來幀級(jí)優(yōu)化在H.263(+)或MPEG-4框架中選擇宏塊QP的第一方法。在一個(gè)精密QP控制的情形中,本發(fā)明的最優(yōu)化將產(chǎn)生比現(xiàn)有技術(shù)更好地利用約束的比特預(yù)算,所述現(xiàn)有技術(shù)提供了不是最理想的精密QP控制。例如,H.263+編碼器提供了完全控制QP變化的能力,但是需要一個(gè)高的花費(fèi)(在比特上)。進(jìn)一步,H.263編碼器只能不是最理想地接近一個(gè)由ROI編碼引擎建議的QP變化。在甚低比特率視頻壓縮應(yīng)用中對(duì)于位比特預(yù)算的充分利用是尤其有利的。
所述核心算法的計(jì)算復(fù)雜性是相當(dāng)?shù)偷摹H绻豢紤]計(jì)算所述成本函數(shù)的元素,例如在某些實(shí)施例中的元素r(i,qi-1)和d(qi,si)的值的計(jì)算成本(因?yàn)樗龀杀竞瘮?shù)的元素通常在所述核心算法之外來計(jì)算),那么所述核心算法典型地近似執(zhí)行每個(gè)象素的一個(gè)加法和一個(gè)比較運(yùn)算(或更少)。(在一個(gè)宏塊中有256個(gè)象素。)在每個(gè)象素上這樣數(shù)量的運(yùn)算對(duì)于高性能的視頻編碼器來說開銷是非常低的。
通過考慮結(jié)合附圖所呈現(xiàn)出的后續(xù)的詳細(xì)描述,將使本發(fā)明的上述以及其它目的、特點(diǎn)和優(yōu)點(diǎn)變得明顯,其中圖1是一個(gè)本發(fā)明的算法對(duì)其有用的類型的H.263編碼器的框圖,包括作為其主要元素的一個(gè)預(yù)測(cè)模塊、塊變換模塊和量化模塊、所有都在編碼控制模塊控制下;和圖2是本發(fā)明的算法的流程圖;和圖3是圖1的編碼控制模塊的一些元件的框圖/流程圖。
執(zhí)行本發(fā)明的最佳模式在此提供的公開是在H.263標(biāo)準(zhǔn)的背景下(也就是依據(jù)H.263標(biāo)準(zhǔn)的編碼器),但是由本發(fā)明也可以直接應(yīng)用于MPEG-4 VLBV標(biāo)準(zhǔn),這是因?yàn)樵趦蓚€(gè)標(biāo)準(zhǔn)之間的相似性。
所述最佳算法是稱之為維特比算法的一種形式,其中為每一幀尋找所述最佳的QP序列。所述的維特比算法在THE VITERBI ALGORITHM byG.D.Foney,Jr.,Proc.IEEE,pp.268-278,March 1973中有描述。
術(shù)語QP序列在這里被用來表示一個(gè)具有與在一個(gè)幀中的宏塊數(shù)量相等的長度,并通過以光柵掃描順序拾取分配給每個(gè)宏塊的QP建立的數(shù)據(jù)對(duì)象。在進(jìn)入到更具體的描述之前,有必要定義一些表達(dá)式和表示一下在這里所使用的符號(hào)。
定義和符號(hào)用si表示由感興趣區(qū)域(ROI)編碼引擎建議的第i個(gè)宏塊的QP值,并用s={si}表示由所述ROI編碼引擎建議的正被編碼的幀的QP序列。用Q={qi}表示任何由所述優(yōu)化算法分配作為響應(yīng)于所述請(qǐng)求S而選擇的所述幀的QP序列的候選QP序列。所述序列Q和S的每一個(gè)的長度等于在一個(gè)幀中的宏塊的數(shù)量。用n表示該長度。
用st表示一個(gè)局部建議的QP序列{si}i=1..t(即{s1,s2,...,st}),其中t≤n。依據(jù)該符號(hào),Sn=S。類似地,用Qt來表示一個(gè)局部候選QP序列。作為一個(gè)Qt的稍微約束的形式,用Qt,k表示一個(gè)局部序列Qt,其最后一個(gè)元素qt=k(其中k是在區(qū)間[1,31]內(nèi)的一個(gè)整數(shù))。這樣,例如,如果t=5(并且小于在一個(gè)幀中的宏塊的數(shù)量n)和k=8,那么Qt可能是序列{3,5,2,4,8},但也可以是任何具有五個(gè)元素、其中最后一個(gè)元素的值是8的序列。
用C(Q,S)表示當(dāng)S是所建議的QP序列時(shí)選擇Q作為所述QP序列的某一成本。對(duì)于一個(gè)可以感覺(即與直覺一致)到的成本函數(shù)C(Q,S)來說,應(yīng)當(dāng)至少具有下述的特性。
a)C(Q,S)必須是非負(fù)的。
b)如果Q是不可表示的,那么所述相關(guān)成本C(Q,S)被定義為無窮大。(如果一個(gè)視頻編碼器可以不用改變QP序列的值就能對(duì)其編碼的話,那么可以說QP序列是可以表示的。例如,所述QP序列{5,12,...}不能被一個(gè)H.263編碼器表示,因?yàn)橛蒆.263編碼器編碼的連續(xù)QP值相差不能超過+-2,但是在本例中12和5相差7。按照約定,我們可以說需要無窮多的比特來表示序列{5,12,...},以至于序列從來都不被選作最佳近似值。)c)必須要有一個(gè)與根據(jù)一個(gè)預(yù)定標(biāo)準(zhǔn)測(cè)量的Q和S之間的差值直接或間接成比例的分量。這樣一個(gè)差值或差異分量,在此用D(Q,S)表示,并推動(dòng)所述優(yōu)化器來選擇一個(gè)接近于S的QP序列。在大多數(shù)實(shí)際情況中,D(Q,S)可以是所謂的無記憶宏塊級(jí)非負(fù)成本分量的總和,所述分量由下述方程給出,D(Q,S)=Σi=1nd(qi,si)...(1)]]>這里所用的術(shù)語“無記憶”的意思是,如果i≠k,那么所述第i個(gè)宏塊的成本分量不依賴于qk和sk。然而D(Q,S)無需具有由方程(1)給出的特定形式。
d)它應(yīng)該具有一個(gè)在此稱作R(Q)的分量,其與花費(fèi)用來表示Q的比特成比例并且不依賴于S。(所述R(Q)值是用來編碼一個(gè)QP序列Q所需的比特的數(shù)量。S是由所述ROI分析器建議的QP序列。解碼器不知道S,因此如果R(Q)的確依賴于S,那么Q的表示將是不可解碼的。)如果Q是不可表示的,我們使用在此的約定R(Q)=+∞。在MPEG-4,H.263和H263+中使用的差分編碼表明,R(Q)可以是一個(gè)由下述方程給出的宏塊級(jí)非負(fù)成本分量的總和,R(Q)=Σi=1nr(qi,qi-1)...(2)]]>其中所述形式r(qi,qi-1)是指示了這樣的事實(shí),即用來編碼第i個(gè)宏塊的QP的比特?cái)?shù)量qi依賴于前一宏塊,也就是qi-1的量化器參數(shù)。對(duì)于第一宏塊(i=1)來說,其中前一個(gè)宏塊QP是無效的,可以使用在幀層規(guī)定的這里稱之為PQUANT的QP。同樣地,q0被定義等于PQUANT。
將R(Q)和D(Q,S)分量相加來產(chǎn)生所導(dǎo)出的條件,
C(Q,S)=D(Q,S)+R(Q)=Σi=1n[d(qi,si)+r(qi,qi-1)]...(3)]]>現(xiàn)在我們定義一個(gè)最低成本函數(shù)C*和一個(gè)最佳QP序列Q*。所述最低成本C*是S的函數(shù),并且被如下來定義C*(S)=minQ[C(Q,S)]...(4)]]>并且Q*被定義為產(chǎn)生最低成本的QP序列Q。C*()的一個(gè)約束版,表示為Ck*(),是一個(gè)考慮了在以qlast=k結(jié)束的候選序列上的最小化的成本函數(shù),并在此別以下面給出的方程來定義,Ck*(St)=minQi,k[C(Qi,k,Si)]...(5)]]>在下面描述的最佳算法所使用的主要定義涉及所述約束最小化C*()。
最后Qt,k*被定義為產(chǎn)生所述最低成本的Qt,k。(Qt,k表示一個(gè)最后元素qt為k值的局部序列Qt。)本發(fā)明所使用的優(yōu)化算法的來源C*()和Ck*()具有如下的相互關(guān)系 這里的目標(biāo)是如由方程(6)給出的那樣來計(jì)算C*(S)和相關(guān)的Q*。因此Ck*(S)必須用在建議的QP值的動(dòng)態(tài)范圍內(nèi)k值來計(jì)算。為了計(jì)算CK*(S),使用由方程(5)給出的Ck*(S)定義來達(dá)到隨后組的遞歸關(guān)系Ck*(S1)=d(s1,k)+r(k,q0)...(7)]]> 其中q0是在確定了最佳QP序列的宏塊之前并緊接著其的宏塊的QP值,或其它合適的值,例如幀級(jí)QP值(即為整個(gè)幀所使用的QP值)。
在遞歸步驟(8),用j*表示最小化的j值,即最小化r(k,j)+Cj*(st-1)的值j。然后,qt-1=j(luò)*是qt=k的最好的前面狀態(tài)。(回想所述數(shù)量r(k,j)的變量k和j分別是值qt和qt-1。)換句話說,如果最佳序列具有qt=k,那么也必須有qt-1=j(luò)*。通過符號(hào)best Prevt(k)=j(luò)*來表示該關(guān)系。(這樣一種關(guān)系是維特比算法的基礎(chǔ)。)
隨后通過根據(jù)方程(7)和(8)遞歸計(jì)算Ck*(S)來執(zhí)行最優(yōu)化(找到產(chǎn)生所述最低成本的QP序列Q),然后從方程(6)中計(jì)算C*(S)。在所述遞歸計(jì)算期間為每個(gè)(t,k)對(duì)存儲(chǔ)最好的先前狀態(tài)j*,允許跟蹤到與已經(jīng)計(jì)算出的最低成本相關(guān)的最佳QP序列。
作為偽碼的算法上面所闡述的算法可以用下面的偽碼來表示。
For t=1 to n{其中n是在一幀中宏塊的數(shù)量}For k=QPminto QPmaxin increments of 1{其中QPmin和QPmax分別是QP的某個(gè)可能的最小值和最大值,典型地是從1到31}Compute and store Ck*(S)(S is Sn)according to equation(7)and(8),i.e.according toCk*(Si)=d(s1,k)+r(k,q0)]]>and Set j*to the value of j that minimizesr(k,j)+Cj*(St-1);]]>Set best Prevt(k)=j(luò)*;Compute C*(S)according to equation(6),i.e.according to and so determinek*,the value of k that provides the minimum of all Ck*(S);Set qn=k*;For i=n-1 down to 1Set qi=best Previ+1(qi+1);End.
于是所述尋找后的QP序列是{q1,q2...,qn},并且是在所建議的QP序列和所述比特預(yù)算之間的一個(gè)折中,即是最大化所述成本函數(shù)C(Q,S)的QP序列。
圖2是本發(fā)明的QP優(yōu)化算法的流程圖,指示了本發(fā)明一般地包括一個(gè)接收一個(gè)建議的量化器參數(shù)序列S的步驟21,一個(gè)定義成本函數(shù)C(Q,S)的下一個(gè)步驟22,所述成本函數(shù)C(Q,S)具有表示一個(gè)根據(jù)一個(gè)預(yù)定標(biāo)準(zhǔn)測(cè)量的在所述候選序列Q和所建議的量化器參數(shù)S之間的差異的元素D(Q,S),并具有一個(gè)與花在表示所述候選序列Q的比特?cái)?shù)量成比例的分量R(Q);和一系列通向確定所述最佳量化器參數(shù)序列Q*,即最小化所述成本函數(shù)C(Q,S)的最佳序列Q*的步驟2324 25。根據(jù)上面的描述,所述流程圖也表示了通向確定所述最佳量化器參數(shù)序列Q*一系列步驟23 24 25的細(xì)節(jié)。
依據(jù)本發(fā)明的編碼控制模塊的結(jié)構(gòu)現(xiàn)在參考圖3,圖1的編碼控制模塊14被更具體地展示為包括一個(gè)優(yōu)化器模塊14a,其根據(jù)本發(fā)明的算法確定所述最佳QP序列,所述優(yōu)化基于具有兩個(gè)分量D(Q,S)和R(Q)中的每一個(gè)的特定定義的成本函數(shù)C(Q,S)。(所述成本函數(shù)的定義作為一個(gè)輸入被提供給所述優(yōu)化器模塊。)所述優(yōu)化模塊將例如由一個(gè)ROI引擎31(通常處于所述編碼控制的模塊14的外部)提供的所述建議序列S用作一個(gè)輸入。所述最佳序列Q被提供給控制器模塊14b,其然后將所述運(yùn)算參數(shù)p,t,qz和q提供給一個(gè)視頻編碼器(沒有示出)。
所述編碼控制模塊14可以包括(如果沒有單獨(dú)示出)所述ROI引擎31,如果這樣的話,它應(yīng)當(dāng)具有作為一個(gè)輸入的視頻輸入。然而,所述ROI引擎也可以作為輸入到所述編碼控制模塊14的所述成本函數(shù)信號(hào)的源或發(fā)生器來示出。所述成本函數(shù)可以具有很大差異的形式。
本發(fā)明的各種實(shí)施例,包括最佳模式方程(1)和(2)的成本分量量r(qi,qi-1)和d(qi,si)的不同定義導(dǎo)致本發(fā)明的不同實(shí)施例。任何可感覺的成本函數(shù),即任何具有上述標(biāo)為(a)-(d)屬性的成本函數(shù),都能通向一個(gè)很好的實(shí)施例。本發(fā)明的一個(gè)實(shí)施例是任何視頻編碼器,優(yōu)選是依據(jù)H.263,MPEG-4 VLBV或H.263+的視頻編碼器,其中處理器用上述的QP最佳算法來進(jìn)行幀級(jí)QP控制。
這里描述兩個(gè)實(shí)施例一個(gè)簡單模式,其實(shí)現(xiàn)起來相對(duì)便宜,以及一個(gè)高性能模式,其通常是優(yōu)選的實(shí)施例,盡管在某些應(yīng)用中優(yōu)選簡單模式。
簡單模式所述簡單模式主要應(yīng)用于依據(jù)MPEG-4和H.263的視頻源編碼器。在所述簡單模式中,r(qi,qi-1)和d(qi,si)被如下定義 和
d(qi,si)=(qi-si)2。(10)所述優(yōu)化器的目的是找到“最佳可表示的近似值”。所述簡單模式強(qiáng)調(diào)所述可表示部分,在某種意義上,其尋找近似值的多數(shù)努力花費(fèi)在尋找可表示的序列。(注意這在H.263+由于所有序列都是可表示的,因此不是問題,但是一些序列要花費(fèi)更多的比特。)所述簡單模式的目標(biāo)是用一個(gè)可表示的序列盡可能近地接近于所建議的QP序列。(所述ROI引擎總是建議一個(gè)序列,其中每個(gè)QP在[1,31]的范圍內(nèi)。然而,在[1,31]的范圍內(nèi)的每個(gè)QP對(duì)于一個(gè)序列的可表示性是不夠的,例如對(duì)于H.263,并且沒必要將所述ROI引擎的可表示性建議為一個(gè)可表示的序列。使所述ROI引擎免于承擔(dān)建議一個(gè)可表示的序列的責(zé)任將使得所述ROI引擎更輕便,因?yàn)榭杀硎拘允且粋€(gè)依賴于系統(tǒng)的問題。對(duì)于H.263+來說,可表示性不是主要問題,因?yàn)樵趨^(qū)間[1,31]的任何QP(只有整數(shù))可以被表示。因此,所述簡單模式對(duì)于依據(jù)H.263+的源編碼器的操作不是特別有用。
一個(gè)簡單模式的例子假定ROI引擎已經(jīng)為在圖片內(nèi)的一個(gè)任意位置產(chǎn)生了一個(gè)建議的QP序列6、7、3、2、1、3,并且在所述序列中在第一宏塊的前面并緊接于其的宏塊的QP值是5,因此其是在方程(7)中被用作q0的值。(如果所述情況是前一宏塊QP無效,那么幀級(jí)QP的值將被用作q0。)在該例子中,在被檢查的序列中的宏塊的數(shù)量是6,因此t=[1,6]并因此在上面的方程中使用的符號(hào)中的n=6。注意到建議的QP值的動(dòng)態(tài)范圍是從1到7,因?yàn)閝0被包括在所述范圍內(nèi),在上面所用的符號(hào)中k=[1,7]。(如果建議的QP值的范圍不包括q0,那么該范圍應(yīng)該被擴(kuò)展來這樣做。)圖4展示了下面指示的計(jì)算結(jié)果。
下一步驟是設(shè)定t=1,并為所述約束局部序列Ck*(S1)計(jì)算所述最小成本,其中k從1變化到7。如果在連續(xù)的QP值之間的差是2或更少,那么與花費(fèi)在表示由方程(9)給出的Q的比特成比例的成本函數(shù)的分量產(chǎn)生值0,否則產(chǎn)生一個(gè)意味著不可接受的無窮大值(∞)。由于前一QP值被假定為5,因此由于由方程(9)給出的成本分量對(duì)C1*(S1)和C2*(S1)中的每個(gè)是無窮的,所以為兩者的成本也是無窮的。
依據(jù)方程(7),對(duì)于C3*(S1)的成本是
C3*(S1)=d(6,3)+r(3,5),]]>其中,通過使用方程(9)和(10),變成C3*(S1)=(3-6)2+0=9,]]>并因此被記錄在圖4的表中以Ck*(S1)開頭欄下的k=3和t=1的格子中。對(duì)于t=1和其它k值的成本函數(shù)的值被以一種相似的方式來計(jì)算,結(jié)果是C4*(S1)=4,]]>C5*(S1)=1,]]>C6*(S1)=0]]>和C7*(S1)=1.]]>所有這些值都被存儲(chǔ)起來以備后來使用(并在圖4中的表中示出)。
下一步驟是確定為在序列中的第二宏塊選擇不同QP值的成本,即對(duì)于t=2。從方程(8),k=1和t=2時(shí), 為了求得C1*(S2)的值,我們需要選擇最佳可能的j值,即最小化r(1,j)+Cj*(S1)]]>的j值。由于在相鄰宏塊之間的的QP值中只允許變化2(因?yàn)榉駝t依據(jù)方程(9)的成本將是無窮大),對(duì)于k值為1來說,j的可能選擇只有1、2和3。當(dāng)選擇j值時(shí),我們可以向后看并看看對(duì)于前一狀態(tài)(t=t-1)來說選擇j所產(chǎn)生的最低總成本,或者我們可以使用方程(8)(也可以是方程(9)和(10))來計(jì)算所有可能j值的成本,接著就可以看出選擇j所產(chǎn)生的最低成本。不管使用什么方法,結(jié)果是相同的。在這種情況下,在j等于1或2時(shí),所述成本是無窮大(因?yàn)閷?duì)于j=1或2來說,Cj*(S1)是無窮大),因此對(duì)于k=1的最低成本是對(duì)于j=3。用3來代替j,我們得到 =62+
=45]]>并且因此j*(k,t)=j(luò)*(1,2)=Best Prevt(k)=Best Prev2(1)=3。如圖4所示的那樣,這兩個(gè)值(45和3)被存儲(chǔ)。
下一步,對(duì)于k=2,(并且仍然t=2), 再者,不得不作出最佳可能的j值的選擇。由于允許±2的變化(在j和k之間),我們現(xiàn)在有4個(gè)可能的j值,即1、2、3和4。在前一狀態(tài)(t=1),對(duì)于這些值中的任何一個(gè)來說,最低成本是C4*(S1)=4,]]>因此我們選擇j=4,產(chǎn)生, =52+
=29]]>因此,對(duì)于C2*(S2)(即k=2和t=2)來說,最好的前面的狀態(tài)(t=1)具有一個(gè)為4的QP值,因此設(shè)置BestPrev2(2)=4。如圖4所示,對(duì)于t=2的其余值是C3*(S2)=17,]]>C4*(S2)=9,]]>C5*(S2)=4,]]>C6*(S2)=1]]>和C7*(S2)=0.]]>這些值又被與相應(yīng)的j*(k,2)值一起存儲(chǔ)起來。對(duì)于所有的t值來說繼續(xù)以相似的方式來處理直到計(jì)算出C7*(S6)。
下一步,比較所有的Ck*(S6)值,并根據(jù)方程(6)選擇最小值作為C*(S)。在該例子中, 現(xiàn)在我們通過使用存儲(chǔ)的j*(k,t)=Best Prevt(k)值來跟蹤產(chǎn)生最低成本的“路線”。為了這樣做,接著上面的偽碼算法(倒數(shù)第三行),首先設(shè)定qn=k*,其中k*是在t=n處產(chǎn)生最低成本的k值。在本例中,q6=k*=3。因此我們的最佳Q*序列的最后一個(gè)值是3(由于對(duì)于k=3的成本是2,對(duì)于所有t=6的成本是最少的)。下一步設(shè)定i=n-1,并得到,qi=qs=Best Previ+1(qi+1)=Best Prev6(3)=j(luò)*(3,6)=1,因此在我們的Q*序列中倒數(shù)第二個(gè)值qn-1是1。對(duì)于i=n-2來說,j*(k,t)的值是2,因此在我們的序列中的下一個(gè)QP值是2,等等。所選擇的序列是這樣的6、6、4、2、1、3,其中除最后一個(gè)值以外所有的值都被在圖4中用具有這些值的格子的陰影來表示,并且所述最后一個(gè)值(QP=3)是相應(yīng)于t=6時(shí)最低成本為2的k值,該k值是3。
高性能模式所述高性能模式可以為MPEG-4,H.263和H.263+中的每一個(gè)來使用。這里,r(qi,qi-1)和d(qi,si)被定義如下 d(qi,si)=‖mse(qi)-mse(si)‖ (12)其中λ是一個(gè)用作速率失真折中參數(shù)的預(yù)定非負(fù)值,Nqi,qi-1是需要用來表示由qi-1給出的qi比特?cái)?shù)量,以及當(dāng)qi被用作所述宏塊的QP時(shí),mse(qi)表示在初始宏塊內(nèi)容和重建的宏塊內(nèi)容之間的均方差。(所述均方差是一個(gè)在兩個(gè)矢量、矩陣、圖像或一般地在兩個(gè)具有相同級(jí)別的多元素?cái)?shù)量之間的測(cè)量誤差。所述一個(gè)(多元素)數(shù)量的均方差等于所述指明的數(shù)量和某一參考數(shù)量之間的元素方面差值的平方的平均數(shù)(平均)。)(符號(hào)mse被用來表示在宏塊的初始象素值與所述宏塊的編碼的象素值之間的測(cè)量誤差。所述宏塊的編碼象素值受各種編碼參數(shù)所影響,包括為所述宏塊使用的QP。然而,所述宏塊的初始象素值(所述參考數(shù)量)是一個(gè)到所述視頻編碼器的輸入,并且不受任何的編碼參數(shù)以任何方式的影響。這樣,為了便于符號(hào)化,通常沒有對(duì)所述參考數(shù)量的直接參考。這樣,當(dāng)q被選作用來編碼所述宏塊的QP時(shí),mse(q)表示在一個(gè)宏塊的初始象素值和所述塊的編碼象素值之間的均方差,或用簡略的術(shù)語來說,當(dāng)q被選作用來編碼所述宏塊的QP時(shí),mse(q)表示在初始宏塊和編碼宏塊之間的均方差。)所述高性能模式強(qiáng)調(diào)了比特預(yù)算的效率管理,并具有一個(gè)在跟隨所述建議QP序列和最小化花費(fèi)在用于QP變化的總比特之間找到最佳折中的目的。依據(jù)方程(12)的d(qi,si)計(jì)算在計(jì)算上是代價(jià)很高的,但不是令人望而卻步的;所需要的計(jì)算還是比例如全范圍塊運(yùn)動(dòng)估計(jì)所需要的計(jì)算少得多,所述全范圍塊運(yùn)動(dòng)估計(jì)是視頻編碼器的主要計(jì)算集中的部分。
討論由依據(jù)本發(fā)明的視頻編解碼器所使用的幀級(jí)QP優(yōu)化,可以通過比較編解碼器輸出的QP分布與所述視頻源來辨別。典型地,一個(gè)具有依據(jù)本發(fā)明的幀級(jí)優(yōu)化器的編解碼器將響應(yīng)于由所述QP的非正常變化所引起的急劇QP變換的需要。換句話說,這樣一種編解碼器將在產(chǎn)生這樣一個(gè)需要之前開始增加(或降低)所述宏塊的QP。這里,以前與所述宏塊的一個(gè)光柵掃描順序有關(guān)。所述宏塊被以光柵掃描的順序編碼,即從左到右,從上到下。如果有一個(gè)可視的重要特征,例如臉,例如在第六個(gè)宏塊,并且所有的其它宏塊包括不重要的特征,那么所述ROI引擎將建議第6宏塊的QP突然降低。接著所建議的QP序列S(由所述ROI引擎建議的)可能看起來象{15,15,15,15,15,10,15,15,...}。術(shù)語“以前”和“非正?!敝冈?-D序列。降低所述QP的需要被認(rèn)為在等于6的索引(即第六位置)處出現(xiàn)。在H.263編碼器中使用的相應(yīng)的幀級(jí)優(yōu)化QP變化將看起來有點(diǎn)象{15,15,15,15,13,11,13,15,15,...}。所述第一變化在具有等于5的索引的宏塊處開始,其小于第一可視重要宏塊的索引,即它是在第一可視重要宏塊之前。一個(gè)不使用幀級(jí)優(yōu)化的近似器將可能只在索引等于6時(shí)開始改變QP。
應(yīng)當(dāng)明白,本發(fā)明除了上述的方式外,還可以包含構(gòu)成失真測(cè)量和成本函數(shù)的其它方式。例如,與花費(fèi)用來表示一個(gè)候選的QP序列的比特成比例的成本函數(shù)的分量,可以被與花費(fèi)用來編碼實(shí)際圖像(包括用來表示所述QP序列的比特)而不僅僅是所述QP序列成比例(或其它基于或相關(guān)的)的分量所代替。在這樣一種表達(dá)式中,所述不可能的QP序列應(yīng)當(dāng)被再次分配給一個(gè)無窮大的成本(即一個(gè)相對(duì)非常大的值),如在上面所描述的那樣,并且所述失真測(cè)量(無論它是什么)應(yīng)當(dāng)被擴(kuò)展來包括一個(gè)用來說明所述圖像的失真(或編碼損失)的分量。
應(yīng)該理解到上述的配置僅僅是本發(fā)明原理應(yīng)用的示例而已。多種其它修改和可選的配置可以被本領(lǐng)域的熟練的技術(shù)人員設(shè)計(jì)而不脫離目前本發(fā)明的范圍,并且所附的權(quán)利要求書目的是覆蓋這些修改和配置。
權(quán)利要求
1.一種在視頻編碼器中選擇量化參數(shù)值序列的方法,所述視頻編碼器被安排將一個(gè)視頻幀編碼為n個(gè)宏塊的序列,并為所述視頻幀的每個(gè)宏塊分配一個(gè)量化參數(shù)值,所述方法的特征在于它包括步驟(23 24 25),其中分配給所述n個(gè)宏塊序列的至少一個(gè)子集的量化參數(shù)值以這樣一種方式被優(yōu)化,以便使得與它們編碼相關(guān)的成本最小化。
2.權(quán)利要求1所述的方法,進(jìn)一步特征在于,所述的n個(gè)宏塊序列的所述子集包括所有所述的n個(gè)宏塊。
3.權(quán)利要求1所述的方法,進(jìn)一步特征在于,對(duì)分配給所術(shù)n個(gè)宏塊序列的至少一個(gè)子集的所述量化參數(shù)值的優(yōu)化是使用一個(gè)維特比搜索算法來執(zhí)行的。
4.權(quán)利要求1所述的方法,進(jìn)一步特征在于,對(duì)分配給所述n個(gè)宏塊序列的至少一個(gè)子集的所述量化參數(shù)值的優(yōu)化是通過比較與編碼量化參數(shù)值的建議序列相關(guān)的成本和編碼量化參數(shù)值的候選序列的成本來執(zhí)行的。
5.權(quán)利要求1所述的方法,其中所述方法是用來對(duì)視頻編碼器的量化器參數(shù)QP提供幀級(jí)控制,所述視頻編碼器具有用于一個(gè)幀的每個(gè)宏塊的一個(gè)量化器參數(shù),一幀由n個(gè)宏塊構(gòu)成,所述方法從一組所有的可能量化器參數(shù)序列中提供一個(gè)最佳量化器參數(shù)序列Q*,所有的可能量化器參數(shù)序列具有一個(gè)作為充當(dāng)一個(gè)候選量化器參數(shù)序列的任意元素的量化器參數(shù)序列Q,所述最佳量化器參數(shù)序列Q*最小化一個(gè)指示使用所述候選量化器參數(shù)序列Q代替一個(gè)建議的量化器參數(shù)序列S的成本的成本函數(shù)C(Q,S),所述方法的進(jìn)一步特征在于它包括a)一個(gè)接收建議的量化器參數(shù)序列S的步驟(21);b)一個(gè)定義成本函數(shù)C(Q,S)的步驟(22),所述成本函數(shù)C(Q,S)具有一個(gè)表示在所述候選序列Q和根據(jù)一個(gè)預(yù)定標(biāo)準(zhǔn)測(cè)量的建議量化器參數(shù)序列S之間的差異的分量D(Q,S),以及一個(gè)與花費(fèi)在表示所述候選序列Q的比特?cái)?shù)量成比例的分量R(Q);以及c)一個(gè)確定所述最佳量化器參數(shù)序列Q*作為最小化所述成本函數(shù)C(Q,S)的序列的步驟(23 24 25)。由此提供一個(gè)在比特效率方式上近似于所述建議量化器參數(shù)序列S的最佳量化器參數(shù)序列Q*。
6.權(quán)利要求5所述的方法,進(jìn)一步特征在于,所述建議量化器參數(shù)序列S由一個(gè)感興趣區(qū)域分析器來提供。
7.權(quán)利要求5所述的方法,進(jìn)一步特征在于,確定所述最佳量化器參數(shù)序列Q*作為最小化所述成本函數(shù)C(Q,S)的序列的步驟(23 24 25),包括使用落入由所述建議量化器參數(shù)序列S的量化器參數(shù)跨越的量化器參數(shù)值范圍的k值計(jì)算一個(gè)最佳的約束成本函數(shù)Ck*(St)的步驟(25),所述最佳約束成本函數(shù)是t個(gè)量化器參數(shù)的局部建議量化器參數(shù)序列St的函數(shù),并指示通過使用任何可能的局部候選量化器參數(shù)序列Qt,k獲得的最低成本,所述序列Qt,k具有作為最后一個(gè)的第t個(gè)元素的一個(gè)帶有所述k值的量化器參數(shù)。
8.權(quán)利要求5所述的方法,進(jìn)一步特征在于,確定所述最佳量化器參數(shù)序列Q*作為最小化所述成本函數(shù)C(Q,S)的序列的步驟(23 24 25),包括子步驟a)從所述建議量化器參數(shù)序列S中確定一個(gè)從一個(gè)預(yù)定最小值到預(yù)定最大值的量化器參數(shù)值范圍;b)設(shè)定序列長度t等于1;c)設(shè)定k值等于所述預(yù)定最小值;d)計(jì)算一個(gè)最佳的約束成本函數(shù)Ck*(St),所述最佳約束成本函數(shù)是t個(gè)量化器參數(shù)的局部建議量化器參數(shù)序列St的函數(shù),該最佳約束成本函數(shù)當(dāng)t大于1時(shí)的計(jì)算是基于根據(jù)Ck*(St-1)給出的Ck*(St)并涉及一個(gè)條件r(k,j)+Cj*(St-1)的遞歸關(guān)系,其中r(k,j)是與花費(fèi)在表示Q的比特的數(shù)量成比例的成本函數(shù)分量R(Q)的一個(gè)元素,所述Q具有在從所述建議量化器參數(shù)序列S中確定的范圍內(nèi)的一個(gè)值的變量j;e)為當(dāng)前的t和k存儲(chǔ)最小化條件r(k,j)+Cj*(St-1)的j值;f)使用連續(xù)的每個(gè)比前一個(gè)k值大的k值和連續(xù)的每個(gè)比前一個(gè)t值大的t值來計(jì)算所述最佳約束成本函數(shù)Ck*(St),并為當(dāng)前的t和k存儲(chǔ)最小化條件r(k,j)+Cj*(St-1)的j值,直到k等于所述預(yù)定最大值為止并且t等于在一個(gè)幀中的宏塊數(shù)量;g)根據(jù)對(duì)于在所述建議序列S中的量化器參數(shù)值范圍內(nèi)的所有k值的Ck*(St=n)的比較,確定所述最佳成本函數(shù)C*(St=n);以及h)通過這樣一個(gè)過程建立所述優(yōu)化序列Q*首先設(shè)定所述量化器參數(shù),使得所述最后一個(gè)宏塊等于最小化Ck*(St=n)的k值,然后向后跟蹤,將為下一個(gè)宏塊存儲(chǔ)的j值分配到被建立的優(yōu)化序列中的每個(gè)先前的量化器參數(shù)。
9.權(quán)利要求5所述的方法,進(jìn)一步特征在于,所述成本函數(shù)分量D(Q,S)是由下述方程給出的形式,D(Q,S)=Σi=1nd(qi,si),]]>其中d(qisi)是一個(gè)無記憶宏塊級(jí)非負(fù)成本分量,所述分量具有一個(gè)作為自變量的所述候選量化器參數(shù)序列的元素qi和一個(gè)所述建議量化器參數(shù)序列的相應(yīng)元素si。
10.權(quán)利要求9所述的方法,進(jìn)一步特征在于,所述成本函數(shù)分量R(Q)是由下述方程給出的形式,R(Q)=Σi=1nr(qi,qi-1),]]>其中r(qi,qi-1)是一個(gè)無記憶的宏塊級(jí)的非負(fù)成本分量,其表示在為宏塊i編碼所述量化器參數(shù)所使用的比特?cái)?shù)量和為宏塊i-1編碼所述量化器參數(shù)所使用的比特?cái)?shù)量之間的關(guān)系。
11.權(quán)利要求10所述的方法,進(jìn)一步特征在于,所述成本函數(shù)分量R(Q)的一個(gè)元素r(qi,qi-1)可以由下述方程給出, 并且所述成本函數(shù)分量D(Q,S)的一個(gè)元素d(qi,si)可以由下述方程給出d(qi,si)=(qi-si)2。
12.權(quán)利要求10所述的方法,進(jìn)一步特征在于,所述成本函數(shù)分量R(Q)的一個(gè)元素r(qi,qi-1)可以由下述方程給出, 其中λ是一個(gè)用作速率失真折中參數(shù)的預(yù)定非負(fù)值和其中Nqi,qi-1是用來表示用qi-1給出的qi的比特?cái)?shù);而且所述成本函數(shù)分量D(Q,S)的一個(gè)元素d(qi,si)可以由下述方程給出d(qi,si)=‖mse(qi)-mse(si)‖,其中mse(...)描述了在初始?jí)K內(nèi)容和用所指示的量化器參數(shù)序列元素qi或si重建的宏塊內(nèi)容之間的均方差。
13.一種在視頻編碼器中選擇量化參數(shù)值序列的裝置,所述視頻編碼器被配置來將一個(gè)視頻幀編碼為n個(gè)宏塊的序列,并為所述視頻幀的每個(gè)宏塊分配一個(gè)量化參數(shù)值,所述裝置的特征在于它包括裝置(14),其用來分配量化參數(shù)值到所述n個(gè)宏塊序列的至少一個(gè)子集,以這樣一種方式優(yōu)化以便使得與它們編碼相關(guān)的成本最小化。
14.如權(quán)利要求13所述的裝置,進(jìn)一步特征在于,所述的n個(gè)宏塊序列的所述子集包括所有所述的n個(gè)宏塊。
15.如權(quán)利要求13所述的裝置,進(jìn)一步特征在于,對(duì)分配給所述n個(gè)宏塊序列的至少一個(gè)子集的所述量化參數(shù)值的優(yōu)化是使用一個(gè)維特比搜索算法來執(zhí)行的。
16.如權(quán)利要求13所述的裝置,進(jìn)一步特征在于,對(duì)分配給所述n個(gè)宏塊序列的至少一個(gè)子集的所述量化參數(shù)值的優(yōu)化是通過比較與編碼量化參數(shù)值的建議序列相關(guān)的成本和編碼量化參數(shù)值的候選序列的成本來執(zhí)行的。
17.如權(quán)利要求13所述的裝置,其中所述裝置具有被所述視頻編碼器使用的一個(gè)量化器參數(shù)的幀級(jí)控制和由所述視頻編碼器處理的一個(gè)幀的每個(gè)宏塊的一個(gè)量化器參數(shù),一幀由n個(gè)宏塊構(gòu)成,所述幀級(jí)控制基于從一組所有可能的量化器參數(shù)序列中提供一個(gè)最佳量化器參數(shù)序列Q*,所有的可能量化器參數(shù)序列具有一個(gè)作為充當(dāng)一個(gè)候選量化器參數(shù)序列的任意元素的量化器參數(shù)序列Q,所述最佳量化器參數(shù)序列Q*最小化一個(gè)指示使用所述候選量化器參數(shù)序列Q代替一個(gè)建議的量化器參數(shù)序列S的成本的成本函數(shù)C(Q,S),所述裝置的進(jìn)一步特征在于它進(jìn)一步包括a)裝置(14a),用來接收建議的量化器參數(shù)序列S;b)裝置(14a),用來定義成本函數(shù)C(Q,S),所述成本函數(shù)C(Q,S)具有一個(gè)表示在所述候選序列Q和根據(jù)一個(gè)預(yù)定標(biāo)準(zhǔn)測(cè)量的建議量化器參數(shù)序列S之間的差異的分量D(Q,S),以及一個(gè)與花費(fèi)在表示所述候選序列Q的比特?cái)?shù)量成比例的分量R(Q);以及c)裝置(14a),用來確定所述最佳量化器參數(shù)序列Q*;所述視頻編碼器由此確定一個(gè)在比特效率方式上近似于所述建議量化器參數(shù)序列S的最佳量化器參數(shù)序列Q*。
18.如權(quán)利要求17所述的裝置,進(jìn)一步特征在于,所述建議量化器參數(shù)序列S由一個(gè)感興趣區(qū)域分析器(31)來提供。
19.如權(quán)利要求17所述的裝置,進(jìn)一步特征在于,所述裝置(14a)用來確定最小化所述成本函數(shù)C(Q,S)的所述最佳量化器參數(shù)序列Q*,并使用落入由所述建議量化器參數(shù)序列S的量化器參數(shù)跨越的量化器參數(shù)值范圍的k值計(jì)算一個(gè)最佳的約束成本函數(shù)Ck*(St)的所述最佳量化器參數(shù)序列Q*,所述最佳約束成本函數(shù)是t個(gè)量化器參數(shù)的局部建議量化器參數(shù)序列St的函數(shù),并指示通過使用任何可能的局部候選量化器參數(shù)序列Qt,k獲得的最低成本,所述序列Qt,k具有作為最后一個(gè)的第t個(gè)元素的一個(gè)帶有所述k值的量化器參數(shù)。
20.如權(quán)利要求17所述的裝置,進(jìn)一步特征在于,所述裝置(14a)用來確定最小化所述成本函數(shù)C(Q,S)的所述最佳量化器參數(shù)序列Q*,包括a)從所述建議量化器參數(shù)序列S中確定一個(gè)從一個(gè)預(yù)定最小值到預(yù)定最大值的量化器參數(shù)值范圍的裝置;b)設(shè)定序列長度t等于1的裝置;c)設(shè)定k值等于所述預(yù)定最小值的裝置;d)計(jì)算一個(gè)最佳的約束成本函數(shù)Ck*(St)的裝置,所述最佳約束成本函數(shù)是t個(gè)量化器參數(shù)的局部建議量化器參數(shù)序列St的函數(shù),該最佳約束成本函數(shù)當(dāng)t大于1時(shí)的計(jì)算是基于根據(jù)Ck*(St-1)給出的Ck*(St)并涉及一個(gè)條件r(k,j)+Cj*(St-1)的遞歸關(guān)系,其中r(k,j)是與花費(fèi)在表示Q的比特的數(shù)量成比例的成本函數(shù)分量R(Q)的一個(gè)元素,所述Q具有在從所述建議量化器參數(shù)序列S中確定的范圍內(nèi)的一個(gè)值的變量j;e)為當(dāng)前t和k存儲(chǔ)最小化條件r(k,j)+Cj*(St-1)的j值的裝置;f)裝置,使用連續(xù)的每個(gè)比前一個(gè)大的k值和連續(xù)的每個(gè)比前一個(gè)t值大的t值來計(jì)算所述最佳約束成本函數(shù)Ck*(St),并為當(dāng)前的t和k存儲(chǔ)最小化條件r(k,j)+Cj*(St-1)的j值,直到k等于所述預(yù)定最大值為止并且t等于在一個(gè)幀中的宏塊數(shù)量;g)裝置,根據(jù)對(duì)于在所述建議序列S中的量化器參數(shù)值范圍內(nèi)的所有k值的Ck*(St=n)的比較,確定所述最佳成本函數(shù)C*(St=n);以及h)裝置,通過這樣一個(gè)過程建立所述優(yōu)化序列Q*首先設(shè)定所述量化器參數(shù),使得所述最后一個(gè)宏塊等于最小化Ck*(St=n)的k值,然后向后跟蹤,將為下一個(gè)宏塊存儲(chǔ)的j值分配到被建立的優(yōu)化序列中的每個(gè)先前的量化器參數(shù)。
21.如權(quán)利要求17所述的裝置,進(jìn)一步特征在于,所述成本函數(shù)分量D(Q,S)是由下述方程給出的形式,D(Q,S)=Σi=1nd(qi,si),]]>其中d(qi,si)是一個(gè)無記憶宏塊級(jí)非負(fù)成本分量,所述分量具有一個(gè)作為自變量的所述候選量化器參數(shù)序列的元素qi和一個(gè)所述建議量化器參數(shù)序列的相應(yīng)元素Si。
22.如權(quán)利要求21所述的裝置,進(jìn)一步特征在于,所述的成本函數(shù)分量R(Q)是由下述方程給出的形式,R(Q)=Σi=1nr(qi,qi-1),]]>其中r(qi,qi-1)是一個(gè)無記憶的宏塊級(jí)的非負(fù)成本分量,其表示在為宏塊i編碼所述量化器參數(shù)所使用的比特?cái)?shù)量和為宏塊i-1編碼所述量化器參數(shù)所使用的比特?cái)?shù)量之間的關(guān)系。
23.如權(quán)利要求22所述的裝置,進(jìn)一步特征在于,所述成本函數(shù)分量R(Q)的一個(gè)元素r(qi,qi-1)可以由下述方程給出, 并且所述成本函數(shù)分量D(Q,S)的一個(gè)元素d(qi,si)可以由方程給出d(qi,si)=(qi-si)2。
24.如權(quán)利要求22所述的裝置,進(jìn)一步特征在于,所述成本函數(shù)分量R(Q)的一個(gè)元素r(qi,qi-1)可以由下述方程給出, 其中λ是一個(gè)用作速率失真折中參數(shù)的預(yù)定非負(fù)值和其中Nqi,qi-1是用來表示用qi-1給出的qi的比特?cái)?shù);而且所述成本函數(shù)分量D(Q,S)的一個(gè)元素d(qi,si)可以由方程給出d(qi,si)=‖mse(qi)-mse(si)‖,其中mse(...)描述了在初始?jí)K內(nèi)容和用所指示的量化器參數(shù)序列元素qi或si重建的宏塊內(nèi)容之間的均方差。
全文摘要
一種用來在視頻編碼器中選擇量化參數(shù)值序列的方法和相應(yīng)的裝置,所述視頻編碼器被安排將一個(gè)視頻幀編碼為n個(gè)宏塊的序列,并為所述視頻幀的每個(gè)宏塊分配一個(gè)量化參數(shù)值。所述方法包括步驟(23 24 25),其中分配給所述n個(gè)宏塊序列的至少一個(gè)子集的量化參數(shù)值以這樣一種方式被優(yōu)化,以便使得與它們編碼相關(guān)的成本最小化。
文檔編號(hào)H04N7/26GK1608372SQ02826248
公開日2005年4月20日 申請(qǐng)日期2002年12月18日 優(yōu)先權(quán)日2001年12月28日
發(fā)明者L·奧克特姆 申請(qǐng)人:諾基亞有限公司