




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章圖像視頻編碼技術9.1視覺生理與心理學
9.2視頻壓縮編碼技術
9.3
H.264視頻壓縮標準概述
9.4
H.264視頻壓縮標準關鍵模塊
習題與思考題 9.1視覺生理與心理學
9.1.1失真可察覺門限
對于高質量圖像視頻編碼,編碼前后的圖像在主觀感覺上應該沒有差別,這意味著編碼引入的失真應當接近視覺的可察覺門限。失真的可察覺門限定義為剛好可以被發現的失真值,低于它就不被察覺,高于它則可以被察覺。可察覺門限是一個統計量,一般將其定義為有50%的概率能夠察覺出來的失真的幅度。對于圖像的像素域編碼,總是希望知道在圖像中每一個像素上可以容忍的失真的大小。對人類視覺系統的研究發現,編碼圖像時所要求的精度取決于該像素及其鄰域在編碼過程中失真的可察覺程度。通常,如果該像素的失真可察覺門限值高,意味著編碼可以允許較大的失真,于是編碼器可以使用更少的比特編碼圖像信號以降低碼率;相反,如果該像素的失真可察覺門限值低,則編碼器應該盡量避免失真產生,于是可以通過增加編碼比特數來減小失真。
影響失真可察覺門限主要有三方面的因素:
(1)像素所處背景的總體亮度;
(2)像素的時空鄰域內亮度變化的掩蓋效應;
(3)時空鄰域內其他像素失真的綜合影響。
1.總體亮度影響
人類視覺系統對于亮度變化的反應是非線性的。設有一亮度為I+ΔI的光斑,其周圍的背景亮度為I,如圖9-1(a)所示。實驗表明,眼睛剛可分辨的亮度差ΔI是I的函數。在一個相當寬的亮度范圍內,比值ΔI/I近似為一常數,約等于0.02。這一現象稱為韋伯-費克納(Weber-Fechner)定律,比值ΔI/I稱為韋伯比,物理意義為對比靈敏度。但當亮度很高或很低時,上述關系并不成立,比值ΔI/I明顯升高,ΔI/I與I的示意關系圖如圖9-1(b)所示。圖9-1對比靈敏度
2.視覺掩蓋效應
大多數圖像包含著復雜的、不均勻的亮度背景。因此,需要了解當被觀察的圖像處在大的可見空間和隨時間變化的亮度背景中時,感知情況是如何變化的。觀察表明:在空間或時間的不均勻背景及存在大的亮度變化的情況下,在亮度跳變的兩側,亮度變化的可察覺門限會提高。這就是非均勻背景引起的對于測試激勵的掩蓋效應。所謂空間掩蓋效應,即在背景亮度中,當測試圖像的兩邊存在較大的亮度變化時,其可察覺失真會減少。這種效應對于圖像DPCM編碼很重要,因為DPCM編碼就是對信號的差值直接量化,可察覺失真門限對量化器的量化特性的設計非常重要。圖9-2顯示當背景存在一個垂直邊緣,邊緣兩邊的亮度分布都是均勻的,但一邊的亮度是另一邊的30倍時,邊緣兩側亮度變化可察覺門限隨離開邊緣的距離變化的情況。圖9-2亮度變化的可察覺門限與到邊緣距離間的關系
3.綜合影響
如果能夠了解低于可察覺門限的多個激勵在視覺系統中的響應是如何綜合起來的,就可以預見任何形狀激勵的可察覺性。在做這種分析時,因為是在小信號條件下,所以一般把視覺系統近似作為一個線性系統處理。這種研究在進行內插編碼時特別有用,因為此時需要知道多個相鄰像素的編碼誤差造成的總失真在什么情況下會被察覺。
事實上,在視覺系統的線性假定下,任意形狀的測試激勵的可見度閾值,在線性系統的轉移函數或脈沖響應已知時是可計算的。如果測試激勵在空間上是正弦變化,而沒有時間變化,則可見度閾值可畫成空間頻率的函數,如圖9-3所示。這種函數叫對比度靈敏度函數,其最大值的空間頻率約為3~4.5周/°。圖9-3亮度為500cd/m2時正弦光柵的9.1.2運動察覺和時間掩蓋
當引入時間上變化的激勵時,時間上的掩蓋效應和感覺對幀間編碼來說是非常重要的。然而,時間掩蓋是很復雜的,至少有兩個因素:①電視攝像機把物體的圖像綜合在靶面上,因而產生了運動模糊和清晰度下降;②對于運動物體的感覺十分依賴于人眼能否跟蹤住該物體。有不少文獻敘述了有關時間變化激勵的許多因素,然而其在編碼中的應用卻仍處于初始階段;同時,若干應用研究已嘗試估計由于景像中運動引起的感覺清晰度的下降。若景像中物體運動是劇烈的,則在景像變化后所感覺到的空間清晰度立即顯著下降。實驗指出,物體運動造成的主觀(感覺)分辨力下降與人眼能否跟蹤住物體的運動有關。Miyahara曾于1975年測量過人對于圖像的時間和空間分辨率要求,發現如果圖像中的運動物體能被人眼跟蹤,則二者的結果類似。然而,對于不易被人眼跟蹤的運動物體,其分辨率的損失就不太容易被察覺。顯示在屏幕上的大多數運動是不易被人眼跟蹤的,如人物的頭、肩運動就難于精確預測。另外,觀看者也不會分散太多注意力去跟蹤他看到的那么多運動物體。Miyahara的實驗顯示,在一般的電視觀看條件下,平穩運動的角速度達到24′/s時開始能被察覺。Seyler與Budrikis在1965年研究時間掩蓋效應時發現,如果是緊跟在一個場景變換之后,空間清晰度顯著下降是不易被察覺的,只要在其后慢慢增加即可。如果在0.75s內恢復100%的清晰度,觀看者就不會感覺到清晰度的下降。對于掩蓋問題,還沒有定量的數據指出什么時候觀察者能跟蹤住一個物體,以及如何精確地跟蹤。9.1.3視覺心理理論運用
根據上面視覺生理和心理學的結論,人們得出人類視覺系統HVS具有以下特性。
(1)亮度掩蔽特性:在背景較亮或較暗時,人眼對亮度不敏感。
(2)空間掩蔽特性:隨著空間變化頻率的提高,人眼對細節分辨能力下降。
(3)時間掩蔽特性:隨著時間變化頻率的提高,人眼對細節分辨能力下降。如果能充分利用HVS的生理和心理特性,適當降低某些參數的分辨率,就可以進一步降低圖像視頻信號的數碼率。這是因為圖像視頻信號在大多數情況下最終是給人觀看的,而HVS在某些條件下往往可容忍一些失真,有些失真人眼又根本分辨不出來,因此超過視覺分辨能力的高保真度要求根本就沒有必要。由于這類壓縮方法是從HVS特性出發的,故它們被統稱為視覺生理/心理壓縮編碼,常用的方法有以下幾種。
1.空間-灰度分辨率交換
視覺生理-心理學實驗表明,人眼僅在觀察大面積圖像塊時,才能分辨出全部256級灰度等級;而當觀察小面積區域或細節時,只能分辨出不多的灰度等級。在急劇的黑白跳變處,人眼分辨不出灰度差別(空間掩蔽特性)。因此,對于圖像的平坦區域,可以降低空間分辨率,但要保持每一樣本有較多的灰度等級;反之,對于圖像中的邊緣和細節處,則應該保持較高的空間分辨率,但對每一樣本可以采用更少的量化比特數。這就是圖像子帶編碼或某些利用視覺掩蔽效應的自適應量化器的設計依據。
2.空間-時間分辨率交換
對于PAL制電視圖像,每幅畫面大約有40萬個有效像素。但是對于運動圖像而言,人眼根本不可能分辨出這么多像素;這時可以減少一些像素(時間掩蔽特性),但要保證足夠的畫面變換速度,即較高的幀頻。這也就是說,在圖像快速運動情況下,空間分辨率可以適當低一些,但時間分辨率一定要保證(時間分辨率低會出現圖像跳動和模糊感)。在圖像慢速運動甚至靜止不動時,若要保證每幅圖像的空間分辨率,則可以適當降低一些時間分辨率。這就是圖像視頻編碼的空間-時間分辨率交換。
3.時間-灰度分辨率交換
視覺生理-心理學實驗表明,時間-灰度分辨率關系存在類似于空間-灰度分辨率的關系。對于快速運動的圖像(通常所說的人眼需要的最高時間分辨率為25Hz),人眼可分辨的像素的灰度等級降低,因此可以用更少的量化級數進行量化,但一定要保證圖像的時間分辨率。反之,對于慢速圖像或者靜止圖像,灰度等級要求更高,即需要更多的量化比特數進行更加細致的量化,但時間分辨率可以適當降低一些。
4.利用視覺特性降低色度信號的編碼碼率
1947年,Hartridge就通過實驗指出,人眼在圖像細節處分辨不出色彩差別,即人眼對色度信號不如亮度信號敏感,對色度信號的空間分辨率就可以適當降低一些。實際應用中,一般色度信號的空間分辨率為亮度信號的1/2或者1/4。 9.2視頻壓縮編碼技術
9.2.1視頻壓縮編碼概述
視頻編碼算法在總體上可以分為基于波形的編碼和基于內容的編碼。它們采用的視頻序列的信源模型不同,描述視頻序列的參數就不同,因此使用的方法和關鍵技術也不同。如果采用像素統計獨立的信源模型,那么這種信源模型的參數就是每個像素的亮度和色度。如果把一個場景描述成幾個物體的模型,那么其參數就是各個物體的形狀、紋理和運動。基于波形的編碼總是盡可能準確地描述各個像素的信息,而不考慮像素的整體——物體的信息。為了提高編碼效率,就要利用相鄰像素的統計相關性和相鄰像素運動一致性特點。因此基于波形的圖像編碼的基本模型是二維的、剛性的、平動的、具有高相關性的像素塊,相應的編碼方法有基于塊的變換編碼、運動補償預測編碼等,其方法一般具有普適性,即適合于各種類型的圖像,但編碼效率相對基于內容的圖像編碼差一點?;趦热莸膱D像編碼更加關注圖像內容特點和視覺心理感受。基于內容的編碼將重點放在各種信源模型的表示上,以求在此上得以突破。典型的基于內容的圖像編碼有:知識基編碼、物體基編碼、3D模型基編碼等。基于內容的圖像編碼方法種類繁多,一般不具有普適性,但每種方法針對特定信源模型的編碼效率一般都很高。
表9-1列出了常見的圖像編碼的信源模型、編碼參數和編碼技術。序號1~3即為常見的基于波形的編碼,也是現在視頻編碼的主流技術;序號4~7即為常見的基于內容的編碼。從序號1~7各編碼方法所利用的圖像內容的先驗知識不斷增加,與之對應的是適用的圖像范圍不斷縮小,但編碼效率不斷提高。表9-1圖像編碼的信源模型、編碼參數和編碼技術
1.基于波形的編碼
利用像素的空間相關性和幀間的時間相關性,采用預測編碼和變換編碼技術可大大減少視頻信號的相關性,從而顯著降低視頻序列的碼率,實現壓縮編碼的目標。基于波形的編碼采用了把預測編碼和變換編碼結合起來的基于塊的混合編碼方法,其基本編碼框架如圖9-4所示。視頻編碼標準H.261、H.263、MPEG-1、MPEG-2、MPEG-4和AVC/H.264都屬于基于波形的編碼,本章9.3節和9.4節將重點介紹AVC/H.264視頻編碼的標準。圖9-4基于預測編碼和變換編碼的混合視頻編碼框架為了降低編碼的復雜性,使視頻編碼操作易于執行。當采用混合編碼方法時,首先把一幅圖像分成固定大小的塊,例如8×8塊、16×16塊,等等,然后對塊進行壓縮編碼處理。預測編碼實際上是基于圖像像素數據的空間和時間相關性,用相鄰像素或相鄰圖像塊來預測當前要編碼的像素或者圖像塊的值,然后再對預測誤差進行傳輸或存儲,或者經過DCT、量化和熵編碼后再傳輸或存儲。
基于塊的混合編碼易于操作,但由于采用了固定大小的塊來近似場景中物體的形狀,當包含邊界的塊屬于不同物體時,這些物體可能具有不同的運動方式,不能用同一運動矢量表示該邊界塊的運動狀態。因此,這種邊界塊必然會產生高的預測誤差和失真,嚴重影響壓縮編碼信號的質量。另外,基于塊的變換編碼方法固有的方塊效應也會造成視頻主觀和客觀質量的下降。
2.基于內容的編碼
基于內容的編碼首先把視頻幀分成對應于不同物體的區域,然后分別對其進行編碼,即對不同物體的形狀、運動和紋理進行編碼。在最簡單情況下,利用二維輪廓描述物體的形狀,利用運動矢量描述其運動狀態,而紋理則用顏色的波形進行描述。
當視頻序列中的物體種類已知時,可采用基于知識或基于模型的編碼。這種編碼使用特別設計的線框來描述已識別出的物體類型。因為預定義線框可以與物體的形狀相適應,因此可以提高編碼效率?;谥R的編碼使用了較多的有關信源模型的先驗知識,適用的范圍相對較窄,通常的編碼對象是低比特率視頻通信中的頭肩序列圖像。該方法廣泛應用于可視電話、視頻消息、會議電視中。當物體的可能類型和行為已知時,可采用語義基編碼。語義基編碼是基于對象編碼的最高級形式,充分利用編碼對象的先驗知識,編碼圖像的內容是確定的,如某人的頭部和肩部的圖像。編碼器和解碼器中都有一個相同的與該對象相對應的三維模型。目前語義基編碼中研究最多的是可視電話圖像編碼。語義基編碼采用比知識基編碼更高級的形式來表示圖像信號和視頻序列信號,如用“微笑”、“喜悅”、“憤怒”等語義來描述圖像和視頻序列中要編碼對象的行為,這里所指的對象行為包括動作和表情等方面的內容。該方法能夠達到非常高的編碼效率。圖9-5是物體基分析-綜合編碼的框圖[16],用它可簡要說明基于內容的圖像編碼的一般方法。物體基分析-綜合編碼的輸入為圖像序列,通過對圖像的分析從每一幀圖像中分離出運動的物體,并估計出每一物體的三個參數集,分別描述物體的運動、形狀和紋理。運動參數Ai決定了物體i在圖像平面中的運動;形狀參數Mi描述物體i在圖像平面中的位置及其邊界;紋理參數Si描述物體i表面的色度和亮度。對計算得到的參數集進行參數編碼,編碼后的參數傳輸到接收端,同時進行參數解碼和參數存儲。編解碼端使用相同的信源模型,當得到相同的參數信息后,可以在編解碼端同樣地通過圖像綜合重建被傳輸的圖像。重建的圖像在解碼端可以作為恢復圖像顯示,在編碼端則被用來對下一幀圖像進行圖像分析。另外,存儲下來的參數可以作為參考值對下一幀圖像的參數進行預測編碼。圖9-5物體基分析-綜合編碼框圖9.2.2視頻標準化組織
1.ISOMPEG
運動圖像專家組(MPEG)是國際標準化組織(ISO)和國際電工委員會(IEC)的一個工作組。它是第一聯合技術委員會第29子委員會的第11個工作組,因此它的官方名稱是ISO/IECJTC1/SC29/WG11。MPEG致力于為音頻、圖像和視頻等媒體信號的壓縮、處理和播放制定國際標準,其制定的標準稱為MPEG-X系列,如MP3就是由MPEG組織制定完成的。
MPEG組織分成許多專題子小組,如表9-2所示,每個小組負責解決與標準化有關的一個特定問題。MPEG組織中的專家從世界范圍內的公司、研究組織和機構中來挑選。MPEG的成員和例會參與者僅限于國家標準體。想要參加MPEG的公司和協會必須參加國家標準體。加入標準體、參加國家會議和MPEG的國際大會是昂貴和耗時的,但好處是可以訪問MPEG的私有文檔(包括標準正式發布前的草案,這意味著在潛在的市場上的領先機會)和制定標準的機會。表9-2
MPEG子小組和職責
2.ITU-TVCEG
視頻編碼專家組(VideoCodingExpertGroup,VCEG)是國際電信聯盟(ITU-T)標準化部門的一個工作組。ITU-T開發電信標準(或稱建議)的組織由16個子小組組成。第16子小組致力于多媒體服務、系統和終端,形成H.264標準的多媒體編碼項目被描述為問題6,因此VCEG的官方全稱是ITU-TSG16Q.6。VCEG是近年來被采納的名稱,以前稱為低比特率專家組(LBCEG)。
VCEG開發了一系列在計算機網絡和電信網絡上的視頻通信相關標準。從最早的H.261可視電話標準到更加有效的H.263及H.263的擴展H.263+和H.263++,接下來的是H.26L,現在稱之為H.264。
VCEG的成員資格向任何有興趣者開放(需要主席批準)。與MPEG相比,VCEG的輸入/輸出文檔是公開的。VCEG早期文檔(從1992年到1996年)可從參考文獻[24]給出的網站上獲得,2002年5月以后的文檔可在參考文獻[25]給出的網站上獲得。
3.JVT
聯合視頻小組(JVT)包括ISO/IECJTC1/SC29/WG11(MPEG)和ITU-TSG16Q.6(VCEG)兩個小組的成員。JVT的產生是MPEG對先進視頻編碼工具的需求的結果。MPEG-4視頻(第二部分)的核心編碼機制基于相當老的技術(H.263建議,發布于1995年),因此希望在標準中采用更加先進的視頻編碼技術。在2001年6月評估了幾種有競爭力的技術后,H.26L的測試編解碼器被認為是符合MPEG要求的最佳選擇,MPEG和VCEG的成員同意成立聯合視頻小組管理H.26L的最后階段開發。JVT的主要目標是推動H.264/MPEG-4第十部分的發布。如今這個標準已經完成,現在它的注意力轉為對H.264進行擴展和發展更加先進的視頻編碼技術。9.2.3視頻編解碼標準發展
1984年CCITT(ITU-T的前身)第15研究組發布了數字基群電視會議編碼標準H.120建議。1988年CCITT通過了“p×64kb/s(p=1,2,3,4,5,…,30)”視頻編碼標準H.261建議,被稱為視頻壓縮編碼的一個里程碑。從此,ITU-T、ISO等公布的基于波形的一系列視頻編碼標準的編碼方法都是基于H.261中的混合編碼方法的。
1986年,ISO和CCITT成立了聯合圖像專家組(JointPhotographicExpertsGroup,JPEG),研究靜止圖像壓縮算法國際標準,1992年7月通過了JPEG標準。
1988年,ISO/IEC信息技術聯合委員會成立了活動圖像專家組MPEG。1991年公布了MPEG-1視頻編碼標準,碼率為1.5Mb/s,主要應用于家用VCD的視頻壓縮。
1994年11月,MPEG組織公布了MPEG-2標準,用于數字視頻廣播(DigitalVideoBroadcast,DVB)、家用DVD(DigitalVideoDiscard)的視頻壓縮及高清晰度電視(HighDigitalTelevision,HDTV)。碼率從4Mb/s、15Mb/s直至100Mb/s,分別用于不同檔次和不同級別的視頻壓縮。
1995年,ITU-T推出了H.263標準,用于低于64kb/s的低碼率視頻傳輸,如PSTN(PublicSwitchedTelephoneNetwork)信道中的可視會議、多媒體通信等。1998年和2000年又分別公布了H.263+、H.263++等標準。
1999年12月,ISO/IEC通過了視頻對象的編碼標準MPEG-4,它除了定義視頻壓縮編碼標準以外,還強調了多媒體通信的交互性和靈活性。
2003年3月,ITU-T和ISO/IEC正式公布了H.264/AVC視頻編碼標準,這不僅顯著提高了壓縮比,還具有良好的網絡親和性,加強了對IP網、移動網的誤碼和丟包的處理。
綜上所述,MPEG和VCEG這兩大組織制定的視頻壓縮編碼標準及時間大致如圖9-6所示。圖9-6
ITU-T與ISO/IECMPEG視頻壓縮標準的發展歷程
1.H.261標準
H.261又稱為p×64kb/s(p的取值范圍是1~30的整數),主要應用于會議電視和可視電話。用于可視電話時,p=2;用于會議電視時,建議p≥6。它采用了一種公共格式(CommonIntermediateFormat,CIF),從而解決了由于不同國家彩電制式不同造成的無法互通的問題。H.261采用基于塊匹配的運動補償方法,只支持整像素精度的運動補償和單向的單幀參考,即參考幀只能使用前一幀圖像。
在編碼過程中,H.261采用了幀間預測和幀內變換(DCT)相結合的混合編碼架構。編碼器的三個主要過程是:預測、變換、量化。H.261編、解碼器框圖如圖9-7所示。圖9-7
H.261編、解碼器框架
2.H.263標準
H.263是為低碼率視頻壓縮提供的新標準,目的是支持碼率小于64kb/s的應用,目標網絡是PSTN、ISDN和無線網絡。同H.261相比,H.263采用了半像素精度的運動矢量搜索,增加了非限制運動矢量,提出了基于語法的算術編碼、先進預測模式和PB幀編碼等多個高級選項,從而達到了進一步降低碼率和提高編碼質量的目的。H.263建議不僅著眼于利用公共開關電話網絡PSTN傳輸,而且兼顧移動通信等無線業務。
H.263的發展經歷了三個階段:H.263、H.263+和H.263++。其中,H.263+和H.263++擴充了H.263的編碼可選項以及一些附加特性,提高了編碼效率和錯誤掩蓋能力,適用范圍更大,同時支持SQCIF等多種圖像格式。
3.MPEG-1標準
MPEG-1標準可用于視頻傳輸和視頻存儲,編碼前必須將圖像轉換成逐行掃描圖像。由于大多數多媒體內容是在CD-ROM上發布的,因此將1.5Mb/s作為CD-ROM播放器的訪問速度,視頻格式定為SIF。最終的標準可支持更高的速率和更大的圖像尺寸。同H.261類似,MPEG-1也采用運動補償和二維DCT變換,量化后的DCT系數進行變長編碼,同時對每個數據塊的直流分量DC進行預測差分編碼。該標準中加入了兩個比較重要的新特性:雙向運動補償技術以及1/2像素精度的運動補償。雙向運動補償允許將前幀和后幀作為參考幀,因此,MPEG-1中有三種類型的幀:I幀、P幀和B幀。采用雙向運動補償可進一步降低輸出碼流的碼率,但是需要對序列圖像進行重排序,因此無法應用在視頻通信中。1/2像素精度的運動補償根據整像素的值經過內插計算出相應的亞像素位置各點的亮度和色度值,一方面提高了編碼器的性能,另一方面也增加了編碼器的計算復雜度。
4.MPEG-2標準
MPEG-2標準主要針對數字視頻廣播DVB、高清晰度電視HDTV和數字光盤DVD等4~9Mb/s運動圖像。MPEG-2按照不同的壓縮比分成5個檔次,并按視頻清晰度分成4個級別,共20種組合,可以滿足不同圖像分辨率及相應的存儲成本和處理速度的需要。
MPEG-2既可用于逐行掃描圖像,也可用于隔行掃描圖像。對逐行掃描圖像,可按行分割成塊,基于塊進行DCT變換;對隔行掃描圖像,一幀由兩場組成,因此就出現了基于幀的分割和基于場的分割兩種宏塊結構。同時,為了適應信道的變化和擴大應用范圍,MPEG-2采用三種分級編碼:空間域分級、時間域分級和信噪比分級。
MPEG-2從編碼到傳輸的體系十分完善,應用領域十分廣闊,涵蓋了衛星廣播服務、有線電視與廣播、數字地面電視、電子影院、家庭影院、互動媒體、遠程視頻監控等方面。
5.MPEG-4標準
MPEG-4是1999年初正式成為國際標準的。該標準更加注重多媒體系統的交互性和靈活性,主要應用于可視電話、視頻會議等。MPEG-4標準的編碼基于對象,便于操作和控制。在比特率控制時,即使在低帶寬條件下,MPEG-4也可利用碼率分配方法,對用戶感興趣的對象多分配比特率,對其他則少分配比特率,保證主觀質量。MPEG-4的對象操作使用戶可在終端直接將不同的對象進行拼接,得到用戶合成圖像。MPEG-4標準將眾多的多媒體應用集成于一個完整的框架內,目的是為多媒體通信及應用環境提供標準的算法及工具,從而建立起一種能被多媒體傳輸、存儲、檢索等應用領域普遍采用的統一數據格式。
MPEG-4具有很好的擴展性,可進行時域和空域的擴展。MPEG-4提供自然的和合成的音頻、視頻以及圖形的基于對象的編碼工具。MPEG-4為了支持高壓縮率、基于內容交互和基于內容分級擴展,以基于內容的方式表示視頻數據,引入了AVO(Audio/VideoObject)的概念實現基于內容的表示方法。MPEG-4通過用運動、紋理和形狀參數對物體獨立地編碼,使與視頻對象進行基于內容的交互成為可能。一個場景由幾個視頻對象(VO)組成。一個VO可由幾個視頻對象層(VOL)組成。VOL表示可分級比特流的不同層或VO的不同部分。VOL的一個時間瞬間稱為一個視頻對象平面(VOP)。所使用的I、P和B模式類似于MPEG-2的編碼模式。
MPEG-4采用的編碼方法既有基于塊的混合編碼,又有基于內容的編碼方法。圖9-8為MPEG-4對視頻序列進行編碼的一個實際例子。左上角的圖是背景全景圖。右上角的圖是一個沒有背景的子圖像,可以把網球運動員當作是一個視頻對象(VO),經常把這種可以獨立移動的小圖像稱為子圖像。下面的圖是接收端合成的全景圖。在編碼之前這個子圖像全景圖從背景全背景圖序列中抽出來,然后分別對它們進行編碼、傳送和解碼,最后再合成。圖9-8
MPEG-4電視序列編碼舉例
6.H.264/AVC標準
H.264/AVC是ITU-T和ISO/IEC共同成立的聯合視頻組(JointVideoTeam,JVT)共同制定的新標準,其目的是與已存在的視頻編碼標準相比能夠成倍地提高編碼效率并可應用到更廣闊的領域。應該說,H.264/AVC的頒布是視頻壓縮編碼科技發展中的一件大事,它的優異壓縮性能也將在數字電視廣播、視頻實時通信、網絡視頻流媒體傳遞以及多媒體短信等各個方面發揮重要的作用。MPEG-4視頻和H.264的發展歷程如表9-3所示。表9-3
MPEG-4視頻和H.264的發展歷程
7.AVS標準
AVS標準在國家標準計劃中的正式名稱為“信息技術先進音視頻編碼”,它是我國第一個具有自主知識產權、達到國際先進水平的數字音視頻編解碼標準,是高清晰度數字電視、高清晰度激光視盤機、網絡電視、視頻通信等重大音視頻應用所共同采用的基礎性標準。
AVS標準中涉及視頻編碼的主要有兩個部分。AVS標準的第2部分“視頻”(AVS-P2)已于2006年2月正式公布,主要針對高清晰度數字電視廣播和高密度存儲媒體應用。該部分規定了多種比特率、分辨率和質量的視頻壓縮方法,適用于數字電視廣播、交互式存儲媒體、直播衛星視頻業務、多媒體郵件、分組網絡的多媒體業務、實時通信業務、遠程視頻監控等應用,并且規定了解碼過程。AVS的第7部分“移動視頻”(AVS-P7),主要針對低碼率、低復雜度、較低圖像分辨率的移動媒體應用。
在AVS-P2中只定義了一種檔次(基準檔次)和四種級別:4.0(720×576)、4.2(720×576,可4∶2∶2采樣)、6.0(1920×1152)和6.2(1920×1152,可4∶2∶2采樣),該檔次能夠滿足多數應用對視頻編碼的常規要求。在GB/T20090.2修訂版中,將增加一個加強檔次,它是在基準檔次的基礎上,從AVS新工具集中選擇了高級熵編碼和自適應加權量化兩項技術而形成的,能夠更好地滿足存儲、下載等實際應用對電影等高清晰度節目編碼的需要。相比于MPEG-2標準,AVS的視頻編碼效率提高了2~3倍,并且實現方案簡潔。AVS的算法與H.264/AVC的類似,但是做了許多簡化和修訂,目的是為了規避國外的各種高收費專利,降低編解碼器等硬件的生產成本,從而促進國內相關產業和應用的快速發展。 9.3
H.264視頻壓縮標準概述
9.3.1編/解碼器框圖
H.264/AVC視頻編/解碼系統由視頻編碼層(VideoCodingLayer,VCL)和網絡提取層(NetworkAbstractionLayer,NAL)兩部分組成,如圖9-9所示。VCL中包括VCL編碼器與VCL解碼器,主要功能是視頻數據壓縮編碼和解碼,它包括運動補償、變換編碼、熵編碼等核心模塊。NAL則用于為VCL提供一個與網絡無關的統一接口,它負責對視頻數據進行封裝打包后使其在網絡中傳送。NAL采用統一的數據格式,包括單個字節的包頭信息、多個字節的視頻數據與組幀、邏輯信道信令、定時信息、序列結束信號等。通過NAL,H.264可以支持大部分基于包的網絡。圖9-9
H.264/AVC可伸縮性擴展的基本編碼結構
H.264/AVC編碼是基于像素塊的,其中的DCT變換和量化基于4×4分塊,但是幀間預測和運動補償都是基于16×16的宏塊及其(亞)分割的,而且幀內和殘差編碼中的方塊濾波也是基于宏塊的。
H.264/AVC編/解碼器的功能模塊如圖9-10所示。與傳統的MPEG-1/2/4編/解碼器相比,它們除了幀內預測、去方塊濾波和NAL外,其他并無本質區別,主要的不同在于各個功能塊的細節。如其中的變換編碼和量化過程,與傳統的視頻編碼相比,就有很大的不同。圖9-10
H.264/AVC編/解碼器的功能模塊9.3.2檔次與級別、宏塊和片
1.檔次
H.264/AVC標準規定了三種檔次(profile),如圖9-11所示。每種檔次支持一組特定的編碼功能和應用:
(1)基本檔次(baselineprofile):利用I片和P片進行的幀內和幀間編碼,使用CAVLC熵編碼,主要應用于可視電話、視頻會議和無線通信。
(2)主檔次(mainprofile):支持隔行視頻,利用I、P和B片進行的幀內和幀間編碼,可使用CABAC熵編碼,主要應用于數字電視廣播和數字視頻存儲。
(3)擴展檔次(extendedprofile):支持碼流之間的有效切換(SP和SI片),采用數據分割來改進錯誤恢復機制,但是不支持隔行視頻和CABAC,主要應用于流媒體領域。圖9-11
H.264/AVC的三種檔次
2.級別
對每種檔次設置不同的(處理速率、圖像尺寸、緩沖區大小、編碼比特率等)參數,則得到對應編碼器性能的不同級別(level)。在H.264/AVC標準中,共定義了15個級別,它們的各種限制見表9-4。表9-4級別限制
3.宏塊
H.264/AVC中的一個編碼圖像通常被劃分為若干個宏塊(MacroBlock,MB),一個宏塊由一個16×16像素的亮度塊和附加的兩個8×8像素的(Cb和Cr)色差塊所組成。在每個圖像中,若干宏塊被排列成片(slice)的形式。
與MPEG-1/2中的I、P、B幀相對應,在H.264/AVC中也有三種采用不同類型編碼的宏塊,另外還增加了一種新的SI宏塊類型:
(1)I宏塊——利用當前片中已經解碼的圖像作為參考圖像進行幀內預測編碼(不能取其他片中的已解碼像素作為參考進行幀內預測)。
(2)P宏塊——利用前面已經解碼的圖像作為參考圖像進行幀內預測編碼(可取其他片中的已解碼像素作為參考進行幀內預測),還可以對宏塊進行分割與亞分割。
(3)B宏塊——似P宏塊,但是可利用雙向(前面和后面的已經解碼的)參考圖像進行幀內預測編碼。
(4)SI宏塊——一種特殊類型的幀內編碼宏塊,似I宏塊,也只使用同一片內的已編碼樣本來進行預測,用于編碼流之間的快速切換。
4.片和片組
一個視頻圖像可以編碼成若干個片(slice),每個片可包含若干個宏塊(MB),如圖9-12所示。一個片中至少包含一個宏塊,最多可包含整幅圖像中的所有宏塊。設置片的目的是為了限制誤碼的擴散和傳播,編碼時需保持片間的相互獨立性。圖9-12片的句法結構
H.264/AVC中共有五種如下編碼片類型:
(1)I片——只包含I宏塊(在相同的片內由以前編碼的數據來預測每個塊和宏塊),可用于所有檔次。
(2)P片——可包含P宏塊(由列表list0的參考圖像來預測每個宏塊或宏塊分割)和/或I宏塊,也可用于所有檔次。
(3)B片——可包含B宏塊(由列表list0或list1的參考圖像來預測每個宏塊或宏塊分割)和/或I宏塊,可用于主檔次和擴展檔次。
(4)SP片——使編碼流之間容易切換,包含P和/或I宏塊,只能用于擴展檔次。
(5)SI片——使編碼流之間容易切換,包含I宏塊和/或SI宏塊,只能用于擴展檔次。9.3.3技術特點
H.264/AVC標準的編碼思想與傳統的MPEG-1/2等視頻編碼一致——基于像素塊的混合編碼方法,但是它同時運用了眾多的新技術,使得其編碼性能遠遠優于其他標準。
1.H.264/AVC保留的傳統編碼技術
H.264/AVC保留的傳統編碼技術如下:
(1)將圖像分成16×16像素的宏塊來處理。
(2)利用幀間預測與運動補償來消除時域相關性。
(3)對運動估值后的殘差塊進行變換、量化、掃描和熵編碼,以消除空間和頻域冗余。
(4)4∶2∶0亮度色差子采樣、運動矢量、劃分變換塊的大小、分級量化和I/P/B幀等其他技術。
2.H.264/AVC采用的新型編碼技術
H.264/AVC所采用的新型編碼技術如下:
(1)宏塊分割與亞分割。16×16像素的宏塊可分割成16×8、8×16、8×8的塊,8×8像素塊還可進一步亞分割成8×4、4×8和4×4的塊。
(2)幀內預測。不僅采用傳統的幀間預測,還新增了幀內預測,以消除I幀編碼中的空間冗余。利用當前像素塊左邊和上邊的像素來對塊內像素值進行預測,只對殘差進行編碼。
(3)多參考幀和小運動分塊。在幀間預測中,可將宏塊分割與亞分割成(1)中所列的各種小運動分塊,利用已經解碼的多個(最多2×16=32)參考幀來進行預測編碼,運動補償的殘差值會更小。
(4)4×4整數DCT。對運動補償和幀內預測的殘差塊進行4×4的分塊,再對4×4的殘差塊進行整數DCT。與傳統的8×8塊的浮點數DCT相比,4×4的整數DCT減小了分塊效應和振鈴效應(ringingeffect),計算快(只需整數加法與移位運算)、效果好(反變換不會出現失配等問題)、結合量化過程、保證運算精度和范圍。
(5)Hadamard變換。在量化之前,還對DC系數矩陣先進行Hadamard(哈達瑪)變換,可消除相鄰變換塊的DC系數之間的相關性,以提高壓縮比。
(6)無擴展分級量化。對變換系數采用無擴展的分級量化量來進行標量量化,量化的步長由量化參數決定。而且還將量化與變換中的比例伸縮部分(尺度矩陣乘法)融合在一起,有效地減少了編碼的計算量。
(7)場掃描順序。除了傳統的Z字型幀掃描順序外,還增加了圖9-13所示的場掃描方式,用于場編碼模式。
(8)抗塊效應濾波器。為了消除分塊編碼中,由于塊邊界像素值的量化誤差而形成的圖像主觀質量的“塊效應”,引入了基于內容的抗塊效應濾波器。當4×4塊邊界上兩邊的圖像差較小時,使用濾波器“平滑”掉差別;若邊界上的圖像特征明顯,則不使用濾波器。這樣既可減弱塊效應的影響,又能避免濾掉圖像的內容。圖9-13新的場掃描方式
(9)新型熵編碼。采用了CAVLC(Context-basedAdaptiveVariableLengthCoding,基于上下文的自適應變長編碼)和CABAC(Context-basedAdaptiveBinaryArithmeticCoding,基于上下文的自適應二進制算術編碼)等新的熵編碼方法,可以克服Huffman和算術編碼等傳統VLC(VariableLengthCode,變長編碼)的概率分布不符合實際情況、概率分布是靜止的、忽略了符號的相關性、沒有利用條件概率、碼字必須為整數比特等缺點,提高壓縮比。
(10)新圖片類型。新增加了支持碼流切換的可轉換片(slice,條帶)類型SP(SwitchingPredicted,轉換預測)和SI(SwitchingIntra,轉換幀內),使得解碼器可以在有類似內容但是碼率不同的碼流之間快速切換,并同時支持隨機訪問和快速回放模式。SP片采用了幀間預測方法,并通過改變量化值的大小來實現在不同碼率的圖像流之間的轉換;SI片則是SP片的一種近似,用于出現傳輸錯誤而無法采用幀間預測方法的情形。
(11)場模式編碼??蓪⒁粠瑘D像拆成兩場圖像,對其中一場采用幀內編碼,對另一場則利用前一場的信息進行運動補償編碼,可提高壓縮比。
(12)分層算法結構。編碼算法總體上分為兩層:視頻編碼層(VCL)負責對視頻內容的有效描述;網絡抽象層(NAL)負責在不同網絡上對視頻數據進行打包傳輸。在VCL和NAL之間定義了一個基于分組方式的接口,參見圖10-4。VCL的設計目標是提高編碼效率,而NAL的則是解決視頻QoS(服務質量)與網絡QoS的匹配。
(13)面向IP和無線環境。為了提高壓縮視頻流在IP網絡和移動通信等誤碼和丟包的多發環境中傳輸的穩健性,而且適應不同傳輸速率的需要,H.264/AVC標準中包含了消除傳輸差錯、改變視頻流碼率的方法和工具:
①為了抵御傳輸差錯,對視頻流中的時間同步可以通過采用幀內圖像刷新來完成,對空間同步可由片結構編碼來支持;
②為了便于誤碼后的再同步,在一幅圖像的視頻數據中還提供了一定數量的重同步點;
③在幀內宏塊刷新和多參考宏塊中,允許編碼器在選擇宏塊模式時,不僅考慮編碼效率,還可以適應不同傳輸信道的特性;④除了利用量化步長的改變來適應信道碼率,還常利用數據分割方法來應對信道碼率的變化。這里的數據分割
是指在編碼器中生成具有不同優先級的視頻數據以支持網絡中的QoS;
⑤在無線通信應用中,可通過改變一幀的量化精度或空間/時間分辨率,來支持無線信道較大的碼率變化。與MPEG-4中采用的(效率較低的)精細可伸縮性(FGS)編碼方法不同,H.264/AVC采用流切換的SP幀來代替分級編碼。 9.4
H.264視頻壓縮標準關鍵模塊
9.4.1幀內預測
1.4×4亮度塊
對4×4亮度塊的幀內預測,利用當前像素塊左邊和上邊的已編碼重建的像素A~M對當前塊中的待預測像素a~p進行預測,參見圖9-14。共有9種預測模式,其中除了第2種DC(直流)模式是采用左邊和上邊像素的平均值外,其余模式都是按一定方向進行預測的,參見圖9-15和圖9-16。預測時,對9種模式都進行計算,選取殘差SAE最小的模式。圖9-14用像素A~M來對塊中像素a~p進行幀內4×4預測圖9-15幀內4×4預測的8個預測方向圖9-16
9種幀內4×4預測模式這里的SAE(SumofAbsoluteErrors,絕對誤差和)定義為
其中Bx,By=16,8,4。
具體的預測方法如下(其中round()為舍入取整函數):
(1)模式0(垂直預測)中的a=e=i=m=A,b=f=j=n=B,c=g=k=o=C,d=h=l=p=D;
(2)模式1(水平預測),與垂直預測類似;
(3)模式2(DC預測)中的a~p=round([A+B+C+D+I+J+K+L]/8);(9-1)
(4)模式3(下左對角線預測)中的a=round([A+2B+C]/4),b=e=round([B+2C+D]/4),c=f=i=round([C+2D+E]/4),d=g=j=m=round([D+2E+F]/4),h=k=n=round([E+2F+G]/4),l=o=round([F+2G+H]/4),p=round([G+3H]/4);
其余模式的預測與模式3類似,只是具體計算式稍有差別,這里就不再一一介紹了。
2.16×16亮度宏塊
對16×16亮度宏塊,可以進行整體預測,有4種預測模式,參見圖9-17。圖9-17
4種幀內16×16預測模式具體預測計算式如下(其中P(i,-1)和P(-1,j)分別表示宏塊上邊和左邊的相鄰像素):
(1)模式0(垂直預測):
Pred(i,j)=P(i,-1),
i,j=0,1,…,15(9-2)
(2)模式1(水平預測):
Pred(i,j)=P(-1,j),
i,j=0,1,…,15(9-3)
(3)模式2(直流預測):(其中round()為舍入取整函數)(9-4)
(4)模式3(平面預測)(其中clip(x)為裁減函數,作用是將x限制在0~255之內):
其中,
(9-5)(9-6)
3.8×8色度宏塊
因為色度在圖像中是相對平坦的,所以只對8×8像素的色度宏塊進行幀內預測,采用的預測模式也有4種,與16×16亮度宏塊的一致。具體預測計算式如下(其中P(i,-1)和P(-1,j)分別表示宏塊上邊和左邊的相鄰像素):
(1)模式0(垂直預測):
Pred(i,j)=P(i,-1),
i,j=0,1,…,7(9-7)
(2)模式1(水平預測):
Pred(i,j)=P(-1,j),
i,j=0,1,…,7(9-8)
(3)模式2(直流預測):(其中round()為舍入取整函數)(9-9)(9-10)(9-11)(9-12)
(4)模式3(平面預測):
其中,(9-13)(9-14)9.4.2幀間預測與運動補償
1.圖像幀新類型
除了具有傳統的I、P和B圖片(slice)類型外,H.264/AVC還增加了支持碼流切換的可轉換圖片類型SP(SwitchingPredicted,轉換預測)和SI(SwitchingIntra,轉換幀內),使得解碼器可以在有類似內容但是碼率不同的碼流之間快速切換,并同時支持隨機訪問和快速回放模式。
SP片的主要目的是用于不同碼流的切換,此外也可用于碼流的隨機訪問、快進快退和錯誤恢復。這里所說的不同碼流是指在不同比特率限制下對同一信源進行編碼所產生的碼流。設切換前傳輸碼流中的最后一幀為A1,切換后的目標碼流第一幀為B2(假設是P幀),因為B2的參考幀不存在,所以直接切換顯然會導致很大的失真,而且這種失真會向后傳遞。一種簡單的解決方法就是傳輸幀內編碼的B2,但是一般I幀的數據量很大,這種方法會造成傳輸碼率的陡然增加。
根據前面的假設,由于是對同一信源進行編碼,盡管比特率不同,但切換前后的兩幀必然有相當大的相關性,因此編碼器可以將A1作為B2的參考幀,對B2進行幀間預測,預測誤差就是SP片,然后通過傳遞SP片完成碼流的切換。與常規P幀不同的是,生成SP片所進行的預測是在A1和B2的變換域中進行的。SP片要求切換后B2的圖像應和直接傳送目標碼流時一樣。顯然,如果切換的目標是毫不相關的另一碼流,SP片就不適用了。視頻流切換如圖9-18和圖9-19所示。圖9-18用SP片切換視頻流圖9-19切換幀的獲取
2.多幀預測
在傳統的MPEG視頻編碼中,P幀只使用前面某一幀、而B幀也只使用前后各一幀來預測。在H.264/AVC中,則可利用多幀(最多前向和后向各16幀,共2×16=32幀)來進行幀間預測和運動補償。多幀預測可以對周期性運動、平移封閉運動,以及在兩個場景間不斷切換的視頻流有非常好的預測效果。
通過引入多參考幀圖像,AVC不僅能提高編碼效率,還可以實現更好的碼流誤碼恢復,不過這需要增加額外的時延和存儲空間。實驗證明,一般采用2~5幀作為參考幀,能得到較好的效果。例如,采用5幀預測,可比單幀預測節省5%~10%的編碼比特率。
3.宏塊劃分
在MPEG-1/2中,幀間預測和運動補償都是針對整個16×16宏塊進行的;在MPEG-4的矩形區域編碼中,允許對一個宏塊中的4個4×4塊分別進行預測和補償;而H.264/AVC則采用了7種不同大小和形狀的宏塊分割與亞分割方法,可以減小殘差和提高預測精度。
在H.264/AVC中,一個16×16像素的亮度宏塊,可以按照16×16、16×8、8×16和8×8進行分割,對8×8的分割塊還可以按照8×8、8×4、4×8和4×4進行進一步的亞分割,參見圖9-20。利用各種大小的塊進行運動補償的方法,稱為樹狀結構的運動補償,每個分塊都有自己獨立的運動矢量。圖9-20宏塊的分割與亞分割選用較大的塊,可以減少表示運動矢量和區域選取的數據量,但是會增加運動補償后的殘差;選用較小的塊,可以減小殘差和提高預測精度,但卻會增加表示運動矢量和區域選取的數據量。較大的塊適用于幀間的同質區域,而較小的塊則適用于幀間的細節部分。
因為在H.264/AVC中使用4∶2∶0采樣,所以色差宏塊為8×8像素,是亮度宏塊大小的一半。對8×8色差宏塊,也采用與16×16亮度宏塊類似的方法進行分割與亞分割,只不過所有對應分割塊的大小都需要除以2。
4.1/2、1/4和1/8像素精度
為了提高幀間預測的準確性,在H.264/AVC中,對亮度分量采用了(通過內插而得的)1/2和1/4像素的運動精度,內插過程先通過6抽頭的濾波器來獲得半像素精度,再用線性濾波器來獲得1/4像素精度。對色差分量,則采用了對應的1/4和1/8像素精度。
對亮度分量,整數像素位置之間的半像素點,可利用一個6階有限沖擊響應濾波器,對6個相鄰整數位置的像素值進行內插來得到,它們所對應的權重向量為(1/32,-5/32,5/8,5/8,-5/32,1/32)。
例如,圖9-21中的半像素點b處的像素值,是由與其相鄰的6個水平整數像素E、F、G、H、I和J的內插得到的:
類似地,半像素點h處的像素值,是由與其相鄰的6個垂直整數像素A、C、G、M、R和T的內插得到的:(9-16)(9-15)在所有的與整數像素在一條(水平或垂直)直線上的半像素都被計算出來后,就可以用同樣的方法來計算位于四個整數像素中央的半像素點的值。例如,圖9-21中的j點的值既可以通過aa、bb、b、s、gg和hh的垂直內插而獲得,也可以通過cc、dd、h、m、ee和ff的水平內插而獲得。這兩個內插結果是一樣的,但是其中的b、s和h、m都必須使用未經舍入的值。圖9-21亮度分量的1/2和1/4像素精度的內插對色差分量,與亮度的1/2像素精度所對應的是1/4像素精度,可直接使用對應亮度塊的1/4像素運動矢量。與亮度的1/4像素精度所對應的,是色差的1/8像素精度。對1/8像素a的值,可采用四周的整數位置像素A、B、C和D的加權平均來計算(參見圖9-22):
例如,對圖9-22中的a,有dx=2、dy=3,所以,圖9-22色差分量的1/8像素內插9.4.3整數變換
H.264/AVC中對圖像或殘差也采用基于DCT的編碼,但與普通MPEG編碼中的DCT方法有若干不同:
(1)分塊大小不再是8×8,而是4×4;
(2)采用的不是浮點數DCT,而是整數DCT。
進行整數DCT的好處有:
(1)所有操作都使用整數算法;
(2)不丟失解碼精度;
(3)可實現編解碼端的零匹配;
(4)變換的核心部分可僅用加法和移位操作來實現;
(5)變換中的部分尺度乘法運算可與量化器結合,減少了乘法次數;
(6)反量化和反變換一般可用16位乘法實現。二維DCT的公式為(9-17)其中,Xij是圖像或殘差塊X中第i行第j列的值,Ymn是DCT結果矩陣Y中第i行第j列的頻率系數。
為了獲得整數DCT的公式,我們將上述變換用下列矩陣乘法表示:
Y=AXAT
X=ATYA
其中,
為N×N的
DCT變換矩陣。
對4×4的塊,對應的DCT矩陣為(9-18)(9-19)令
則
A=BC
代入矩陣變換式,得(注意BT=B):
Y=AXAT=(BC)X(BC)T=B(CXCT)BT
=B(CXCT)B
(9-20)
兩邊同時左右乘 ,得
B-1YB-1=CXCT
其中,(9-21)式中
運算符號表示兩個矩陣每個對應位置上的元素相乘,也稱為矩陣的尺度乘法(scalingmultiplication)。
在Y
Ei=B-1YB-1=CXCT兩邊同時右乘以(9-22)
為了使變換矩陣C整數化,可將
簡化為 。代入式(9-23),得
其中,為了保持變換矩陣A的標準正交性(AAT=I),必須同步修改b值。原來
現在A的第二行的各元素平方和為1,即
1=b2+c2+(-c)2+(-b)2=2b2(1+d2)
可得為了去掉矩陣C中第2與第4行和CT中第2與4列中元素d=1/2的分母2,可以將對應行列中的分母2提出到矩陣E中,得 ,其中(9-23)這是4×4DCT的一種近似。實際編碼過程中,通常將尺度乘法“Ef”融合到后面的量化過程中,所以實際的變換為整數型DCT(Y=W
Ef)為
該整數DCT時只需用到整數的加減運算(乘2可以用加法實現),而且只要輸入|Xij|≤255,則運算結果就肯定不會超過16位整數。
對應的反變換為
X=ATYA=(BC)TY(BC)=CT(BTYB)C(9-25)
(9-24)因為BT=B,所以類似于B-1YB-1=Y
Ei,可得BYB=Y E,代入上式得
令 及 ,可得
其中,和Ci中的除2運算,可以用右移1位的操作來實現。
(9-26)(9-27)9.4.4量化
1.變換系數量化
在AVC中,對變換系數采用無擴展的分級量化量來進行標量量化,其基本公式為
其中,Z為Y的量化值,Y為輸入系數值,Qstep為量化步長,round()為舍入取整函數。量化步長Qstep的取值與量化參數QP有關,QP每增加6,Qstep就增加一倍。共有52種量化步長,對應的QP取值為0~51,參見表9-5。(9-28)表9-5量化步長表實際的計算公式為(包含尺度乘法“Ef”)
其中,Wij是矩陣W中的元素(i≥0,j<4),預引尺度因子PF(PrescalingFactor)是矩陣Ef中的元素,其取值為(9-29)利用量化步長Qstep隨量化參數QP每增加6而增加一倍的特性,可進一步簡化計算。設
其中,floor()為下取整函數。令乘法因子
表9-6為取整后的MF取值表。表9-6乘法因子MF值由上述可知,量化式變成
量化的具體計算過程式為(9-30)(9-31)反量化的基本操作是
結合尺度參數PF,并引入避免舍入誤差的常數尺度因子64(在反變換輸出時再將其除去),則上式變成
對0≤QP≤5定義尺度因子V=Qstep·PF·64,則
其中,尺度因子V的取值見表9-7。(9-32)(9-33)(9-34)表9-7尺度因子V
2.DC系數的Hadamard變換和量化
對圖像宏塊是色度塊或幀內16×16預測模式的亮度塊,可以將其4×4整數DCT系數矩陣W中的直流(DC)系數W00,按其在原宏塊中的排列順序組成DC系數矩陣WD。16×16的亮度宏塊中,有4×4個4×4變換塊,所以對應的WD為4×4矩陣。因為AVC采用4∶2∶0的子采樣,故16×16的圖像宏塊中,有2×2個4×4的Cr和Cb色度變換塊,所以對應的WD為2×2矩陣。
由于DC系數是圖像塊的平均能量,相鄰塊的DC系數具有較大的相關性,可采用對稱正交的Hadamard矩陣Hn對其進行Hadamard(哈達瑪)變換,以消除這種相關性,從而提高編碼的壓縮比。其中,4階和2階的Hadamard矩陣Hn定義為
對4×4亮度塊和2×2色度塊的DC系數矩陣WD的Hadamard變換為(9-35)然后再對YD進行量化,輸出結果為ZD(i,j):(9-36)9.4.5
CAVLC
1.思路與特點
VLC(VariableLengthCoding,變長編碼)的基本思想就是對出現頻率大的符號使用較短的碼字,而出現頻率小的符號采用較長的碼字。這樣可以使得平均碼長最小。在CAVLC中,H.264采用若干VLC碼表,不同的碼表對應不同的概率模型。編碼器能夠根據上下文,如周圍塊的非零系數數目或系數的絕對值大小,在這些碼表中自動地選擇,最大可能地與當前數據的概率模型匹配,從而實現了上下文自適應的功能。
一維變換量化系數具有如下特點:
(1)大部分系數為0,CAVLC用游程編碼來緊湊地表示0串。
(2)高頻區的非零系數通常是±1,CAVLC用一種緊湊方式表示高頻±1的個數。
(3)相鄰塊非零系數的個數是相關的,CAVLC對它的編碼使用查找表(表項的選擇依賴于相鄰塊非零系數的個數)。
(4)系數開頭(接近DC系數)的非零系數的幅度相對較大,在高頻區則相對較小。CAVLC利用這一點,根據最近編碼的幅度來選擇參數的VLC查找表。
針對這些特點,H.264/AVC設計了CAVLC算法,其變字長編碼器可根據已經傳輸的變換系數的統計規律,在幾個不同的既定碼表之間進行自適應切換,使其能夠更好地適應其后傳輸的變換系數的統計規律,從而提高了變字長編碼的壓縮效率。
2.編碼過程
下面結合一個簡單的例子來描述CAVLC算法的全過程。設有一個經變換和量化后的4×4系數塊,如表9-8,經Z字形掃描編碼后形成一維系數序列:
0,3,0,1,-1,-1,0,1,0,0,0,0,0,0,0,0表9-8
4×4系數塊具體的編碼過程如下:
(1)編碼非零系數總數(TotalCoeffs)和拖尾±1(TrailingOnes,T1s)的個數T1s。
首先編碼4×4系數塊所對應的系數序列中的非零系數總數和拖尾±1的個數,非零系數數目的范圍是0~16,拖尾系數數目的范圍是0~3。如果±1的個數大于3,只有最后3個被視為拖尾系數,其余的被視為普通的非零系數。對非零系數數目和拖尾系數數目的編碼可通過查表方式,共有4個變長表格和1個定長表格可供選擇。其中的定長表格的碼字是6個比特長,高4位表示非零系數的個數(TotalCoeffs),最低兩位表示拖尾系數的個數(TrailingOnes)。表格的選擇是根據變量nC的值來選擇的,在求變量nC值的過程中,體現了基于上下文的思想。除了色度的直流系數外,其他系數類型的nC值是根據當前塊左邊4×4塊的非零系數數目(nL)和當前塊上面4×4塊的非零系數數目(nU)求得的。當輸入的系數是色度的直流系數時,nC=-1。nC的計算過程見下式:(9-37)計算出nC后,可以根據nC值利用表9-9選擇非零系數數目和拖尾系數數目的編碼表格。其中有4個變長編碼(VariableLengthCoding,VLC)表VLC0~3和1個定長編碼(FixLengthCoding,FLC)表FLC,參見表9-9和表9-10。表9-9選擇非零系數數目和拖尾系數數目的編碼表格對coeff_token編碼時,可依據已編碼塊的非零系數個數nL和nU來預測當前塊的非零系數個數nC,再由nC的取值范圍來選擇5個查找表中的一個,其中有4個變長編碼(VariableLengthCoding,VLC)表VLC0~3和1個定長編碼(FixLengthCoding,FLC)表FLC,參見表9-10。表9-10
coeff_token表VLC0
(2)編碼每個T1s的符號。對coeff_token中的每個TrailingOne的符號,按Z字形掃描的反序(即從高頻到低頻)進行編碼,用0表示+1,1表示-1。對本例(+1,-1,-1)的輸出為011。
(3)編碼剩余非零系數的電平。非零系數的電平(level,幅度值)編碼levelCode,由前綴(level_prefix)和后綴(level_suffix)兩部分組成。前綴level_prefix為(非零系數值-1)個0后跟一個1的二進制位串“0…01”;后綴level_suffix則為長度為levelSuffixSize位的0串“0…0”。若levelSuffixSize=0,則無后綴。一般levelSuffixSize=suffixLength,但是有如下兩種例外:①當level=14時,suffixLength=0,而levelSuffixSize=4;
②當level=15時,levelSuffixSize=12。
變量suffixLength是基于上下文模式自適應更新的:
①suffixLength一般被初始化為0,只有當TotalCoeffs>10且T1s<3時,才被初始化為1;
②按反向掃描順序編碼非零系數;
③若已編碼的非零系數值>預定義好的閾值(threshold)(參見表9-11),則執行suffixLength++。表9-11決定增加suffixLength的閾值這種方法主要是根據變換系數塊內,越接近DC系數的非零系數的(絕對)值越大的特點而設計的。如本例中,對+1編碼:此時非零系數=1,故前綴level_prefix被編碼為1;而suffixLength被初始化為0,此時為一般情形,故levelSuffixSize=suffixLength=0,所以后綴level_suffix的位數被置為0(無后綴),故對應的電平輸出碼字levelCode=1(前綴)=1。再對+3進行編碼:因為這時非零系數=3,故level_prefix被編碼為001,又因為1大于當前閾值0,故suffixLength=1,level_suffix被編碼為0,所以對應的電平輸出碼字為levelCode=001(前綴)0(后綴)=0010。
(4)編碼最后一個非零系數前零的總數。計算(按正序的)最后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有機肥料在提升土壤微生物對作物生長調節物質產生中的作用考核試卷
- 簡易呼吸器的使用 2
- 靜脈血液標本采集指南
- 遼寧輕工職業學院《大學生創新創業與就業指導》2023-2024學年第一學期期末試卷
- 洛陽職業技術學院《計算機網絡管理與安全》2023-2024學年第二學期期末試卷
- 江蘇省啟東市2024-2025學年高三下學期第二次模擬考試(期中)數學試題含解析
- 江蘇電子信息職業學院《大學生職業生涯規劃與就業指導(二)》2023-2024學年第二學期期末試卷
- 期貴州省畢節市重點中學2025屆初三第一次質量檢測試題物理試題含解析
- 遼寧省丹東33中學2024-2025學年初三下學期模擬(二)測試英語試題含答案
- XX學校課程改革與校本課程開發實施匯報范文
- 抗滑樁施工危險源辨識與評價及應對措施
- 語文園地五(識字加油站、我的發現)
- 身體紅綠燈課件
- Pentacam白內障應用(第二版)
- 建設單位業主方工程項目管理流程圖
- 發展心理學第四節-智力發展
- 壓力管道檢驗計算案例
- 碎石擠密樁復合地基施工工法解讀
- 包裝廠質量管理體系
- 初中花城版八年級下冊音樂4.狂歡之歌(15張)ppt課件
- 常用標準波導和法蘭尺寸
評論
0/150
提交評論