董紅
摘要:針對IP網絡丟包條件下的H.264高清視頻實時解碼問題,本文通過對高清視頻碼流特征的分析,論述了一種實時錯誤的掩蓋算法。此種方法的原理就是利用相應的技術手段收集丟失片的宏塊數(shù)據,在權值的的選擇時根據其垂直距離的平均值得到,然后進行加權矢量計算,實現(xiàn)對錯誤的覆蓋。并以數(shù)學的計算方式,詳細對算法的流程進行了分析,得出此種分析技術和傳統(tǒng)的模型相比,不但節(jié)約了計算時間,而且得到的重構圖像的質量較高,誤差降低,適合在高清實時解碼中推廣。
關鍵字:IP網絡丟包;H.264高清視頻;實時解碼
引言
隨著視頻處理技術以及輸出水平的提高,在實時視頻高清輸出方面,對于720P以及超高清1080P的分辨率需求逐漸增多。想要實現(xiàn)此類高清視頻的實時傳輸,一般需要在IP網絡端提供8兆到10兆左右的高清H.264碼流,但是這種技術的實現(xiàn),通常會因為信道擁擠或者電磁擾動等引發(fā)IP視頻丟包或者誤碼問題,嚴重影響圖像解碼的最終顯示效果。如此以來,為了能夠得到較高質量的輸出視頻就要在解碼端進行掩蓋技術的調整或者重構,盡可能達到人們對視頻清晰度的要求。當前比較常見的錯誤掩蓋算法有空域錯誤掩蓋與時域錯誤掩蓋兩種。兩種錯誤掩蓋算法的主要區(qū)別就是空域錯誤掩蓋利用的數(shù)學算法主要是雙線性插值或者方向插值,時域錯誤掩蓋則重視錯誤宏塊的運動矢量的大小。比如,時域錯誤掩蓋方式要求其運動矢量為零,但是其計算量相對較為有限,計算中也比較容易實現(xiàn),從恢復效果上看,如果算法的矢量運動波動過大或者運動形式過于復雜,就很可能導致視頻測錯位輸出,最終無法達到提高視頻質量的目的。
1.解碼問題分析概述
在以上算法的基礎上,本文主要對高清視頻碼流的特征進行解析,并設計出運算量相對減少了的實時錯誤掩碼算法。H.264高清視頻的碼流承載了高清視頻碼流之間分割的關鍵作用,進而把其中的高清序列通過縮放轉化為較小的分辨率,這樣其對配置的要求就會降低,那么就可以采用與之相對應的編碼加以處理,碼流中的宏塊擁有其獨立的運動分割特征,如圖1.1所示。
從上圖能夠得到,分分辨率越大,碼流中的16×16塊所占的份額也就越多,但是相對應的8×8塊所占的份額會越少。而在高清視頻中,不但包含了運動形式比較復雜的宏塊,還有許多采用8×8塊或者相近的分割模塊,所以,在對視頻作錯誤掩蓋的計算時,為了將實施效率和質量保持一致,需要把最小的錯誤掩蓋單元設置為8×8塊。
除此之外,筆者還對P幀碼流進行了宏塊間隔以及宏塊之間的矢量運動差異做了相應分析,得到分析結果如圖1.2所示。
從圖1.2的分析結果能夠得出,隨著宏塊之間具體的減小,宏塊之間矢量運動的相關程度呈增加趨勢??梢哉f,解碼器能夠根據宏塊的間隔大小得出與之相關的宏塊間距以及進行運算的掩蓋錯誤數(shù)據。若把丟失片之上的非錯誤解碼作為宏塊的上邊緣,那么其下方正確的解碼就會變成對應宏塊的下邊緣。因為其在高清視頻中主要表現(xiàn)為較長的帶狀,那么在其中丟失的IP片的上下邊緣就比較接近,那么左右兩邊基本上很難得到因為距離的差異而產生的矢量相關度?;谏鲜龇治觯P者認為可以直接把帶狀體的上、下邊緣的距離作為數(shù)據估算的錯誤宏塊的矢量,并以此進行錯誤宏塊的重構。
2.高清視頻實時解碼的掩蓋算法
2.1對矢量距離上的加權運動估計
如果出現(xiàn)丟失宏片的上、下兩邊同時出現(xiàn)的情況,那么根據上文筆者對宏塊間隔和宏塊矢量相關程度的分析,那么和錯誤宏塊間隔距離較小的宏塊數(shù)據會對錯誤掩蓋的計算產生較大的輔助作用。本文將充分利用這一點,對矢量的垂直方向進行加權,其中權值通過矢量中數(shù)量平均值的方式進行確定,然后根據宏塊中矢量的運動補償功能,用經過計算之后的新宏塊取代已被確定的錯誤宏塊,如此以來就實現(xiàn)了對錯誤掩蓋的功能。
如圖2.1所示,設其中丟失宏片中正在被算法進行取代計算的錯誤宏塊為X,那么和其相對應的正確解碼就是圖中的A(頂部宏塊)、B(底部宏塊)、C(頂部靠左宏塊)、D(頂部靠右宏塊)、E(底部靠左宏塊)、F(底部考右宏塊)。其中可以用8×8的子塊作為錯誤掩蓋的最小單元,并在各個子塊中設置對應的具有矢量運動特征的錯誤掩蓋。
下面筆者將以的子塊為例,對各個子塊進行矢量運動特征的分析,然后進而得到等。
仍然根據圖2.1中的上邊緣中的A、C、D進行子塊的上邊緣預測(為矢量)。設,如果宏塊A存在垂直方向上的分割,那么;否則,。以上皆為矢量,然后對其進行均值與方差的計算得到:
我們再通過式(3)就能看出,由于方差的大小能夠影響甚至決定到矢量的預測結果。若目前這3個矢量的方差比較小,那么就可以直接根據宏塊A內部的第二個運動矢量,不然就要根據的中值來進行的預測。
同理,若使用圖2.1中的下邊緣B、E、F進行下方預測(矢量),之后在根據錯誤宏塊與頂部宏塊之間的間隔設為與底部宏塊的間隔設為的權值,加以平均值的權值來得到子塊的矢量,則為:
2.2 高清視頻實時錯誤掩蓋算法流程
本文所提出的的高清視頻實時錯誤掩蓋算法,在進行整幀解碼計算停止后,將對其碼流丟失與解碼結果進行檢測,如果錯誤錯誤解碼,就要對相應的錯誤片段進行錯誤掩蓋,知道找回全部丟失片段結束。
在進行P幀丟失的錯誤掩蓋計算前,首先要按照丟失片的兩個邊緣Intra進行現(xiàn)場的對比測試,具體過程如式(5):
如果檢驗得到的P幀出現(xiàn)了場景變換,那么視頻的相鄰幀的時域相關程度就會降低,這時一般選擇空域掩蓋的方式進行計算。在本文采用的空域掩蓋是建立在像素點之上,并根據上、下邊緣的區(qū)域作出線形插值。遇到I幀的片段丟失也采用相同的方式進行解決。
如果檢驗之后沒有得到P幀的場景轉換結果,那么就可以采用加權之后的時域掩蓋進行計算,一般采用自左向右的順序進行計算,并對宏塊進行自上而下的順序進行掩蓋。具體到單個宏塊的處理步驟如下:
(1)從上至下依次檢測幀中的有效宏塊,計算相應的與。檢測上上部的A、C、D三個宏塊。如果上部的這三個宏塊皆不存在,那么將設置為不能用;相對應的,三個宏塊中存在Intra,那么的計算就不存在相應的宏塊。同理進行底部宏塊B、E、F的計算,得到。
(2)對宏塊的子劃分。如果頂部的A宏塊或者是底部的B宏塊,兩者之一或者全部符合:擁有Inter快,在豎直方向上存在分割,那么就可以對此宏塊進行子塊的劃分。如果與皆存在并具有相對較大的差異,那么就可以將宏塊做從上而下的子塊劃分。具體判別算法,如式(6):
式中N表示宏塊A與B之間相隔的宏塊總數(shù),表示閾值。這種處理方式會盡量減少場景轉換之下的子塊數(shù)量,使算法復雜度降低。
(3)子塊的矢量估計。如果與皆有效,那么利用式子(4)中加權平均值預測方式就可以直接進行矢量估計,如果與兩者之后只有一個有效,那么只能根據其中的信息預測進行相鄰宏塊的矢量估計。與兩者皆無效,那么就要以其左右相鄰的矢量進行最終的矢量估計。
(4)在完整矢量估計的結果之上加以運動補償計算,并掩蓋錯誤宏塊。
3.總結
本文只是從理論的角度對IP網絡丟包條件下的H.264高清視頻實時解碼問題進行了分析,為了對本文所分析的算法進行優(yōu)化,采用相應的案例分析方式,會得到更為合理的結果。
參考文獻
[1]張秀麗.基于RS的IP網絡視頻JSCC策略研究[J].電路與系統(tǒng)學報,2011,(03)
[2]林鏡華,雷為民,白松等.支持IPTV高清碼流連續(xù)平滑播放的多級緩沖區(qū)設計與實現(xiàn)[J].小型微型計算機系統(tǒng),2010, (05)
[3]林李松,陳耀武.基于TMS320DM6467的H.264自適應錯誤掩蓋并行解碼算法[J].計算機工程與應用,2012,(08)