周小黎++王媛
摘要:文中闡述了基于OpenCV運動對象跟蹤的 FGS 視頻編碼方案,利用OpenCV強大的庫文件和開放的源代碼自適應地跟蹤視頻圖像中所有運動的對象,并將其定義為感興趣的區(qū)域優(yōu)先編碼,在一定程度上改善了視頻圖像的質(zhì)量且計算復雜度低,提高了視頻圖像的主觀視覺效果。
關(guān)鍵詞:FGS;編碼效率;運動跟蹤
中圖分類號:TN914.2 文獻標識碼:A 文章編號:1009-3044(2015)29-0157-04
FGS Video Coding Algorithms based on the Moving Object Tracking
ZHOU Xiao-li, WANG Yuan
(Fujian Nomal University MinNan Science and Technology Institute, Quanzhou 362332,China)
Abstract:This paper describes the FGS video coding scheme based on OpenCV motion object tracking,which uses the OpenCV library file and opening source code for the adaptive tracking all the movement object in video image,and defines it as the region of interest for the preferred encoding.It improves the quality of the video image to a certain extent and has low computing complexity and improves the video image subjective visual effect.
Key words: FGS; code efficiency; motion tracking
1 引言
隨著網(wǎng)絡(luò)多媒體技術(shù)的不斷發(fā)展,人們對于視頻傳輸?shù)乃俣群唾|(zhì)量也有了更多的關(guān)注, 所以流媒體技術(shù)也有了很大的發(fā)展,用戶無需等到下載完整的視頻文件,而只要用很短的啟動時延就可以邊接收數(shù)據(jù)邊播放,這樣,降低了緩存的同時還可以實時的傳輸,但不同用戶對視頻的時延要求是不同的,而且網(wǎng)絡(luò)存在異構(gòu)性、帶寬的波動性以及不可避免的傳輸錯誤。足夠大的視頻信息碼率可以解決網(wǎng)絡(luò)異構(gòu)性的問題,良好的視頻碼流可伸縮性可以解決網(wǎng)絡(luò)帶寬的波動性,而針對視頻信息傳輸過程中出現(xiàn)錯誤的問題,則要求編碼后的視頻碼流具有一定的抗錯能力。因此,除了追求高編碼效率的同時,也希望能夠很好地滿足不同用戶的服務(wù)要求,可分級視頻編碼技術(shù)就成了當下研究的重要技術(shù)。
2 可分級編碼技術(shù)
視頻編碼的可分級性[1](Scalability)指的是碼率大小的可調(diào)整性,也就是視頻數(shù)據(jù)只需要編碼一次,就可以以多個空間分辨率,幀率或視頻質(zhì)量來進行解碼,從而滿足不同用戶的不同需求。其基本思想是將視頻信息編碼成一個基本層信息和若干個增強層信息,重要性不同,具有基本視頻信息的基本層信息具有傳輸優(yōu)先權(quán)而且有更多的差錯保護,解碼基本層碼流可獲得粗糙但完整的圖像,而增強層則包含了更多的細節(jié)信息,被解碼的增強層信息越多,視頻圖像的質(zhì)量就越好。
1990 年 12 月通過的視頻壓縮標準 ITU-T H.261,1993年8月公布的視頻壓縮標準 ISO/IEC MPEG-1,1994 年推出的 MPEG-2,1996 年 ITU-T 制定的視頻編碼標準 H.263,后面提出的MPEG-4 標準,MPEG-4 AVC標準,也就是聯(lián)合視頻組 JVT 制定的新一代視頻壓縮編碼標準 H.264,除了前面兩種視頻編碼標準沒有提供可分級能力,隨后提出的視頻編碼標準都是對視頻編碼可分級能力要求的提高而逐步提出的。
近幾年來,國內(nèi)外人們都對精細可分級視頻編碼技術(shù)分別從基本層和增強層兩方面進行了大量的研究,如,以提高增強層幀間的預測精度為目的的精細可分級編碼方案,采用 H.264 編碼器作為 MPEG-4 FGS 的基本層,而增強層仍采用位平面編碼技術(shù)的精細可分級編碼方案,基于小波變換的視頻編碼技術(shù),以提高主觀視覺效果為目的的視頻編碼技術(shù)等。
3 精細可分級編碼技術(shù)
精細粒度可分級視頻編碼[2]是將一個視頻序列編碼成一個基本層碼流和一個增強層碼流?;緦拥拇a率應不大于網(wǎng)絡(luò)的最小可用帶寬,也就是說首先要保證基本層的碼流能被解碼端完全解碼,而增強層則是對原始的圖像和基本層重構(gòu)圖像的殘差進行DCT 變換、位平面編碼以及 VLC 編碼來獲得增強層的碼流。其優(yōu)點就是可以根據(jù)網(wǎng)絡(luò)實際可用帶寬來任意截斷增強層的碼流,從而得到不同的視頻圖像質(zhì)量。
精細粒度可分級視頻編碼方案最早被MPEG-4 標準所采納的編碼方案,其基本原理是:在編碼視頻時,產(chǎn)生基本層和增強層兩個碼流。其中,基本層所包含的視頻信號質(zhì)量較低的但卻是最重要的,所以基本層的碼率較低,可以完全在信道上進行傳輸和接收。嵌入式的增強層碼流保存基本層的量化差值,可以根據(jù)帶寬的實際情況,在任意位置截斷,但解碼后視頻信號質(zhì)量的改變是漸進的、平滑的。所以 FGS 編碼方案所生成的碼流可以在一定的碼率范圍內(nèi)自適應的調(diào)整,能夠很好地適應帶寬的波動性。另外,要盡量避免基本層碼流數(shù)據(jù)丟失,而增強層碼流數(shù)據(jù)的丟失不會很明顯的影響視頻的質(zhì)量,同時也不會因為傳播誤差而影響到其他的幀,所以精細可分級視頻編碼具有很好的魯棒性,這也是絕大多數(shù) FGS 方案所具有的共性。
4 基于 H.264 FGS 編碼技術(shù)
精細可分級視頻編碼最早是在 MPEG-4 中提出的,其缺點是編碼效率低,針對這一問題,聯(lián)合視頻專家組 JVT 頒布了 H.264 標準,因此精細可分級視頻編碼方案在編碼結(jié)構(gòu)上又有了一個新的突破,即基本層采用的是一個完整的H.264編碼器,而增強層仍采用MPEG-4 FGS 增強層的編碼結(jié)構(gòu),直接利用位平面技術(shù)來實現(xiàn)視頻的可伸縮性,從而降低了設(shè)計的復雜度。H.264 精細可分級視頻編碼結(jié)構(gòu)如同 1所示,從圖中我們可以看出,H.264 FGS 編碼器采用 H.264 整個編碼器作為它的基本層,這一部分包含了整數(shù) DCT 變換,量化,熵編碼,環(huán)路濾波,幀內(nèi)預測和幀間運動估計和運動補償?shù)饶K。
(1)整數(shù) DCT 變換和量化
為了減少空間的相關(guān)性,去除冗余信息,H.261,H.263 和 MPEG-1 和 MPEG-2等視頻編碼國際標準都對殘差數(shù)據(jù)進行了空間域8*8的DCT 變換。這種變換在視頻編碼標準中是最基本也是最常見的變換,而在 H.264 的基本檔次則根據(jù)不同的殘差數(shù)據(jù)類型采用三種不同塊尺寸的整數(shù)變換:在幀內(nèi)宏塊亮度 DC 系數(shù)的變換,色度 DC 系數(shù)的4*4變換和其他所有殘差數(shù)據(jù)變換。如果選擇了“自適應塊尺寸變化”選項,則可以根據(jù)運動補償塊尺寸大小選擇4*8,8*4,8*8,16*8等多種方式。從整體上看 H.264 采用了4*4的整數(shù) DCT 變換,不但沒有損失精確度,而且還避免了反變換的失配問題。H.264 的整數(shù)DCT變換和量化的具體過程如圖 2所示。
整數(shù) DCT 變換的正、反變換矩陣分別為:
公式(1)和(2)中,正、反變換矩陣的系數(shù)只有[±1、±2],因此,只要進行加減和移位操作,大大降低了計算復雜度。
(2)熵編碼
在 H.264 FGS 編碼結(jié)構(gòu)中,在完成 DCT 變換和量化以后,接著就是對所得的數(shù)據(jù)進行熵編碼,最終得到基本層的碼流。熵編碼是一種無損的壓縮編碼方法,也就是說,經(jīng)過熵編碼后得到的碼流可以完全恢復出來。在 H.264 編碼標準中熵編碼主要有兩種,即基于上下文的自適應變長編碼(CAVLC,Context-based Adaptive Variable Length Coding)和基于上下文的自適應二進制算術(shù)編碼(CABAC,Context-based Adaptive Binary Arithmetic Coding)。H.264 FGS 編碼結(jié)構(gòu)增強層中采用的是 VLC,對位平面編碼后經(jīng)常出現(xiàn)的符號賦予較短的碼字,否則給較長的碼字。而 CAVLC 則可以在若干個碼表中自適應地選擇出最適合當前編碼特性的一個碼表來進行編碼。另外,CAVLC 將(RUN,LEVEL)分開編碼,因為量化后的低頻非零系數(shù)一般是不間斷的,因此分開編碼能提高編碼性能。CABAC 編碼過程包括三個步驟,即上下文建模、二進制轉(zhuǎn)換和二進制算術(shù)編碼。其編碼框圖如圖 3所示。
圖 3 CABAC 編碼結(jié)構(gòu)框圖
5 改進的精細可分級視頻編碼技術(shù)
吳楓等人提出的漸進精細粒度可分級(PFGS,Progressive FGS)編碼方案[3],一定程度上提高了編碼效率,但同時也增加了系統(tǒng)的復雜度;Mihaela van der Schaar 等人提出的基于運動補償?shù)木毧煞旨墸∕C-FGS)編碼方案[4],雖然用于幀間預測的是高質(zhì)量的增強層的圖像,但是若增強層沒有正確傳輸?shù)脑捑蜁斐深A測漂移現(xiàn)象,所以抗誤碼性能不好;Won-Sik Jeong 等人提出的基于H.264 的水環(huán)掃描和膚色選擇增強的FGS視頻編碼方案[5],此外,針對感興趣區(qū)域優(yōu)先編碼這個方向,還有后來提出的基于AdaBoost人臉檢測的改進 FGS 視頻編碼方案[6]以及基于Mean Shift算法的運動目標跟蹤的FGS視頻編碼方案[7]等編碼方案。雖然這些方案都能自適應的定位出感興趣的區(qū)域,然后優(yōu)先編碼、傳輸,但始終未能實現(xiàn)將人為定義的感興趣區(qū)域優(yōu)先編碼。本文在前人研究的基礎(chǔ)上,針對上面存在的問題,分別從客觀編碼效率和主觀視覺效果兩個方面進行改善,通過增強基本層來提高客觀編碼效率,通過引入基于OpenCV的運動跟蹤方法,來實現(xiàn)對感興趣區(qū)域優(yōu)先編碼和傳輸?shù)墓δ?,從而提高視頻的主觀視覺效果。
5.1 基于 OpenCV 的運動對象跟蹤算法介紹
運動對象跟蹤的準確性和算法的復雜度是相互制約的,運動對象跟蹤越準確,則算法的復雜度就越高,反之亦然。所以,運動對象跟蹤算法的選擇直接影響著這個 FGS 視頻編碼算法的編碼效率,而對于感興趣的區(qū)域是整個視頻中運動的對象而言,只需定位出運動對象的輪廓,而無需進行精確地跟蹤,本文所采用的基于OpenCV的運動對象跟蹤算法流程圖如圖 4 所示。
圖 4 基于OpenCV運動對象跟蹤算法流程圖
5.2 基于 OpenCV 的運動對象跟蹤效果
實驗測試的平臺為 Visual C++6.0,測試之前先配置好OpenCV,實驗測試了背景單一、運動較平緩的 hall-objects.qcif 序列和背景較復雜、運動劇烈的football.qcif 序列,實驗測試過程中分別截取了 hall-objects.qcif 的第 80 幀和 125幀,football.qcif 的第 30 幀和 90 幀,跟蹤效果圖如圖5和圖6所示。
(a)運動對象跟蹤效果圖(第 80 幀) (b)運動對象跟蹤效果
從圖 5和圖6可以看出,視頻序列hall-objects.qcif 由于背景單一,車的運動速度也相對較慢,跟蹤效果很好,因此,能很準確地定位出運動的區(qū)域,而運動劇烈的football.qcif 序列,運動對象很多,跟蹤的結(jié)果不是單個的運動對象,而是團塊的輪廓,因此,最終定位出的運動區(qū)域幾乎占了整幅圖像,效果并不理想。
4.3 基于運動對象跟蹤的 FGS 編碼原理及框圖
基于運動對象跟蹤的 FGS 視頻編碼算法原理圖如圖 7所示,其基本層是一個完整的 H.264 編碼器,增強層采用 MPEG-4 FGS 編碼器的增強層,同時,引入基于OpenCV的運動對象跟蹤算法,自適應地定位出人們感興趣的運動對象,并將其位平面提升,優(yōu)先編碼和傳輸。
4.4 實驗結(jié)果與分析
本實驗采用 JM8.6 測試平臺,測試了運動較為緩慢的hall-objects.qcif 序列和運動較為劇烈的football.qcif 序列,設(shè)置參數(shù):編碼幀數(shù)為 100 幀,幀率為 30Hz,編碼類型為 IPP…P,允許率失真優(yōu)化宏塊模式判決,基本層的熵編碼采用的是CABAC,量化步長為 35,基本層的碼率設(shè)置為 60Kbit/s 固定不變,增強層的碼率從 80Kbit/s 開始,以 20Kbit/s 的速度遞增,直到 280Kbit/s。本實驗定義的感興趣區(qū)域為所有運動的對象,重建圖像序列亮度分量的平均峰值信噪比(Y-PSNR )為視頻質(zhì)量的客觀評價標準。實驗比較了兩種編碼方案:第一種是EB-FGS 編碼;第二種是改進的算法,即采用基于 OpenCV 運動對象跟蹤的 FGS
編碼方案,實驗結(jié)果如圖8所示。
(a) hall-objects.qcif 序列改進前后PSNR 值隨碼率的變化圖
(b)football.qcif 序列改進前后 PSNR 值隨碼率的變化圖
圖8 各序列使用運動目標跟蹤算法前后的 PSNR 值
隨碼率的變化圖
從圖8可以看出,在整個 80~280Kbit/s 的碼率范圍內(nèi),不管是運動較緩慢的hall-objects.qcif 序列還是運動較為劇烈的 football.qcif 序列,改進后的編碼方案所得到的基本層和增強層的PSNR值比EB-FGS編碼方案得到的PSNR值都有一定程度的下降,這是因為用于基本層做參考的圖像數(shù)據(jù)基本上是運動對象,也就是感興趣部分的數(shù)據(jù),因此在同樣地碼率條件下,相對于原先傳輸整體區(qū)域數(shù)據(jù),其圖像質(zhì)量下降是合乎理論分析的。對于 hall-objects.qicif 序列,由于運動緩慢,時域相關(guān)性就強,運動補償?shù)男Ч兔黠@,所以感興趣區(qū)域的 PSNR值提高的幅度就大,最多提高了 5.4dB。而對于 football.qicf 序列,運動對象多,采用簡單的基于OpenCV的運動跟蹤的算法跟蹤效果差,大多數(shù)情況下,感興趣的區(qū)域幾乎占了整幅圖像,因此選擇增強的效果并不明顯,而且由于運動劇烈,時域相關(guān)性就差,運動補償?shù)男Ч膊幻黠@,所以該序列感興趣區(qū)域的 PSNR值提高得不多,最多的情況下提高了 0.7dB 左右。在復雜度方面,我們對算法改進前后,兩個序列的平均編碼時間做了統(tǒng)計,每個序列都測試了 100 幀,如表1 所示。
從圖9和圖 10可以看出,運動比較緩慢的hall-objects.qcif和運動比較劇烈的football.qcif 兩個序列采用改進后的算法,其圖像質(zhì)量明顯好于未改進算法得到的圖像質(zhì)量。
參考文獻:
[1] 史士杰,薛凱邵.一種基于噪聲模型寬帶估計的擁塞控制改進算法[J].計算機科學, 2011,38(5):71.
[2] 王相海,叢志環(huán),方玲玲.IPTV 體系結(jié)構(gòu)及其流媒體技術(shù)研究進展[J].通信學報,2012,33(4):6.
[3] GHANBARI M.The Cross-Search Algorithm for Motion Estimation[J].IEEE transactions on communication,1990,38(1):950-953.
[4] 王蒿,薛全, 張穎,等. H.264 視頻編碼新標準及性能分析[J].數(shù)字電視與數(shù)字視頻, 2003(6): 25-26.
[5] 李協(xié).精細粒度可分級編碼技術(shù)和傳輸技術(shù)研究[D].上海:上海交通大學,2007.
[6] Mihaela Van Der Schaar,Hayder Radha.Double-Loopmotion–compensation fine granular scalablity.Sep.2005.
[7] 朱志宇.粒子濾波算法及其引用[M].北京:科學出版社,2010:4.