王雅雪
摘 要:視頻碼流在3G無線網絡的傳輸過程中經常會引入一些誤碼。傳統基于視頻語義的誤碼檢測方法,只能檢測出不符合碼流標準的語義誤碼,而不能檢測符合碼流標準但實際數據改變的內容誤碼。針對內容誤碼,提出了一種基于色度空間相關性的H.263誤碼檢測算法。
關鍵詞:3G無線網絡;H.263;空間相關;誤碼檢測
隨著3G時代的到來,無線視頻通信的應用越來越廣泛。3G無線網絡中,多徑衰減和噪聲等因素導致其具有帶寬有限、高誤碼率、信道質量隨時間動態變化等特點,在有限帶寬和時變易錯的無線信道上傳輸高質量的視頻圖像,需要引入有效的容錯技術[2]。
1 H.263句法和語義
H.263編碼句法層從上到下可以分為四層[8]:圖像、塊組、宏塊、塊。
塊組起始碼(GBSC)為17比特長度的碼流,標志一個塊組的開始。塊組編號(GOB Num,GN)為5比特長度的碼流,標志當前塊組在一幀所有塊組中的序號。每個塊組包含一行或多行宏塊。
宏塊層句法包括了當前宏塊的編碼模式、運動矢量、以及VLC系數等數據。解碼器從碼流中讀取這些數據后,進行運動矢量解析和紋理數據解析,得到重建圖像。
H.263解碼器讀取圖像頭后,循環進行塊組解碼至一幀結束。塊組起始碼的存在,為H.263解碼提供了重同步標志。需要注意的是,塊組頭是允許不存在的,在一個塊組解碼完成后,若后續17比特碼流非塊組同步頭,則解碼器默認其未被編碼。
誤碼存在的碼流部位主要為塊組層頭部和宏塊數據。當塊組頭發生誤碼,將造成塊組編號讀取錯誤或同步頭被破壞。
2 基于語義的誤碼檢測算法
H.263解碼器中,設置有塊組計數器:無論當前塊組編號是否可讀取,計數器皆加1以標識已解碼塊組數。因此,當讀取到的塊組編號與計數器不一致,誤碼存在。塊組編號語義出錯的情況可分兩種:第一個塊組編號出錯和后續塊組編號出錯。
對第一個塊組,幀頭起始碼即塊組起始碼。解碼器進入一幀解碼,首先尋找17比特幀頭起始碼,并順序讀取5比特塊組編號。正常情況下,首個塊組編號為0。當幀頭碼流發生誤碼導致首個塊組編號非0時,解碼器進行誤碼檢測和容錯。圖3所示為幀頭誤碼時,基于語義的誤碼檢測算法流程圖。
視頻解碼器的第一個I幀幀頭是不容缺損的,否則將無法獲取正確的解碼器配置參數,導致后續解碼圖像質量嚴重損壞。因此,第一幀幀頭發生誤碼時,解碼器直接返回解碼失敗信息。后續幀幀頭發生誤碼則可以復用前一幀幀頭信息進行解碼。
根據圖像幀頭部中解析到的視頻圖像分辨率及每個塊組所包含的宏塊數,可以計算出一幀所包含的塊組數,從而得出一幀內塊組編號的范圍。以此為依據,對非幀頭所在的塊組,根據其塊組編號是否越界,來判定是否發生語義誤碼。
3 基于色度空間相關性的誤碼檢測算法
在宏塊紋理數據解析過程中,各個系數都有其范圍,當解碼器解析到的系數越界時,即判定系數不符合碼流標準,碼流出現語義誤碼。基于語義的誤碼檢測算法僅能夠檢測到這種不符合碼流標準的語義誤碼。當誤碼符合標準,如某個塊組同步頭被損壞或出錯的紋理數據并未越界時,解碼器誤判為碼流正確繼續進行解碼重建。由于僅依靠基于語義的誤碼解析不能檢測到誤碼位置,因此解碼圖像質量無法得到保證。另外,多次實驗數據表明,在解碼器自身檢測到語義誤碼時,往往出錯宏塊之前的某些宏塊系數內容已經異常,而由此導致解碼圖像中出現與周圍宏塊色度差異明顯的彩塊和馬賽克現象,嚴重影響了圖像的視覺效果。
本文結合語義誤碼檢測,提出了一種基于色度空間相關性的誤碼檢測算法,準確地檢測碼流中的內容誤碼。
由于宏塊與宏塊之間不存在同步標識,當解碼器檢測到某個宏塊系數越界時,首先使用基于語義的誤碼檢測,搜索后續碼流中的塊組同步頭,對丟失的碼流進行錯誤隱藏。然后,對出錯宏塊前的碼流進行基于色度空間相關性的內容誤碼檢測。
由于一幀圖像相鄰宏塊的色度相近,色度塊的紋理數據值相差較小,相鄰宏塊的色度DC系數具有很強的相關性。因此可以利用相鄰宏塊的色度DC系數,來檢測當前宏塊是否存在內容誤碼。
在解碼過程中,分別保存每個宏塊兩個色度塊(Cb塊和Cr塊)的DC系數,并進行基于語義的誤碼檢測。
在檢測到宏塊語義誤碼后,根據語義誤碼位置計算需要進行內容誤碼檢測的宏塊行數。本文算法對從第二行宏塊開始到出錯行宏塊,依次進行誤碼檢測。單個宏塊的空間相關性誤碼檢測誤流程是:對當前宏塊兩個色度塊的DC系數,分別計算該DC系數與上方宏塊相應系數的差值絕對值,當差值絕對值超過特定閾值時,判定該宏塊紋理數據發生了內容誤碼。
在檢測到內容誤碼時,對從誤碼宏塊開始到宏塊所在行結束的碼流進行錯誤隱藏。然后從下一行第一個宏塊開始,繼續進行DC系數誤碼檢測。
本文算法采用兩個色度塊的DC系數,在每個宏塊解碼過程中只需保存色度塊DC系數,使得解碼器在增加內容誤碼檢測功能后,幾乎不影響解碼器的運行效率。
4 結束語
本文針對3G無線視頻通信中存在的碼流內容誤碼現象,提出了一種基于色度空間相關性的H.263視頻誤碼檢測算法。該算法利用空間相鄰宏塊的色度DC系數來進行誤碼檢測,有效地定位傳統語義碼流解析無法檢測到的內容誤碼。本文提出的誤碼檢測算法可以同各種錯誤隱藏算法[7]相結合,以提高解碼器的容錯效果。
[參考文獻]
[1]Chunbo Zhu,ye-Kui Wang, Miska M.Hannuksela.Error Resilient Video Coding Using Redundant Pictures[J].IEEE Transactions on Circuits and Systems For Video technology,2009,19(1):3-31.
[2]Zhang X C,Huang M.Error resilient transcoding for wireless video transmission[C].Proceeding of International Conference on Wireless Networks and Information Systems,2009:286-289.
[3]韓鎮,胡瑞敏,陳皓.一種基于分層率失真優化的容錯性視頻轉碼算法[J].計算機學報, 2009,23(6):1152-1160.
[4]Zhu C B,Wang Y K,Hannuksela M M,et al..Error resilient video coding using redundant pictures[J].IEEE Transactions on Circuits and Systems For Video technology,2009,19(1):3-14.
[5]Bai-Lin Yang,Frederick W.B.Li,Zhi-Geng Pan.An Effective Error Resilient Packetization Scheme for Progressive Mesh Transmission over Unreliable Networks[J].Journal of Computer Science and Technology,2008,23(6):1015-1025.
[6]Vijay A Suryavanshi, Aria Nosratinia.Error-Resilient Packet Header Compression[J].IEEE Transactions on Communications, 2008, 56(11):1836-1843.
[7]Wiegand T,Farber N,Stuhlmuller K. Error-resilient video transmission using long-term memory motion-compensated prediction[J].IEEE Journal on Selected Areas in Communications, 2000,18(6):1050-1062.
[8]ITU-T.Video coding for low bit rate communication (Recommendation H.263)[S].Telecommunication standardization sector of ITU,2005,1.