曹 強(qiáng),周 存
(景德鎮(zhèn)陶瓷大學(xué),江西景德鎮(zhèn) 333000)
視頻一般是指通過(guò)電信號(hào)捕捉、記錄、處理、存儲(chǔ)、傳輸和再現(xiàn)的一系列靜態(tài)圖像。如果連續(xù)圖像每秒變化超過(guò)24幀,根據(jù)視覺(jué)保持原理,人眼無(wú)法分辨出單一的靜態(tài)圖像。數(shù)字圖像和視頻作為可視化和信息交互的重要媒介,在視頻通話、視頻會(huì)議、視頻廣播、高清電視、網(wǎng)絡(luò)協(xié)議電視、視頻監(jiān)控和視頻點(diǎn)播等領(lǐng)域取得了長(zhǎng)足的發(fā)展。
為了解決圖像和視頻在帶寬有限的信道中傳輸?shù)膯?wèn)題,減少這些圖像和視頻數(shù)據(jù)的存儲(chǔ)空間,提出了圖像和視頻壓縮編碼方法。數(shù)字視頻壓縮的根本是數(shù)字視頻中存在大量的冗余信息[1]。壓縮編碼分為無(wú)損壓縮和無(wú)損壓縮,無(wú)損壓縮為了保證解壓縮后的數(shù)據(jù)與原始數(shù)據(jù)一致,通常壓縮效率不太高,壓縮比一般只有50%左右。有損壓縮雖然可以大大降低壓縮速率,但會(huì)帶來(lái)不同程度的失真。在圖像失真最小的情況下,如何盡可能提高壓縮效率是視頻壓縮編碼優(yōu)化研究的重點(diǎn)。
幀間和幀內(nèi)的高相關(guān)性意味著視頻圖像中存在大量冗余信息。冗余信息可分為空域冗余信息、時(shí)間冗余信息和視覺(jué)冗余信息。視頻壓縮就是在保證視頻解碼質(zhì)量的前提下,最大限度地減少數(shù)據(jù)量,消除各種冗余信息[2]。傳統(tǒng)的視頻壓縮編碼方法包括變換壓縮編碼方法、量化壓縮編碼方法、熵編碼等,然而上述傳統(tǒng)的主要針對(duì)的是離線的視頻,將其應(yīng)用到嵌入式在線視頻的壓縮工作中會(huì)存在壓縮失真率和誤碼率高的問(wèn)題,同時(shí)由于算法輸出的圖像尺寸較大,會(huì)占用大量的存儲(chǔ)空間和網(wǎng)絡(luò)傳輸?shù)脑诰€視頻空間。針對(duì)傳統(tǒng)壓縮方法存在的一系列問(wèn)題,提出了一種基于幀間信號(hào)的嵌入式在線視頻自適應(yīng)壓縮方法,優(yōu)化了壓縮性能和壓縮效率。
嵌入式在線視頻是基于分組傳輸?shù)拈g歇異步傳輸。對(duì)于一個(gè)實(shí)時(shí)視頻源,它在傳輸過(guò)程中被分解成多個(gè)包。由于網(wǎng)絡(luò)是動(dòng)態(tài)變化的,每個(gè)包可能選擇不同的路由,所以到達(dá)客戶端的時(shí)間也不同,甚至第一次發(fā)送的包也可能延遲[3]。為了達(dá)到這一目的,采用緩存系統(tǒng)來(lái)補(bǔ)償時(shí)延和抖動(dòng),保證正確的分組順序,使媒體數(shù)據(jù)能夠不間斷地連續(xù)輸出,不因網(wǎng)絡(luò)的暫時(shí)擁塞而中斷,從而實(shí)現(xiàn)在線視頻的實(shí)時(shí)壓縮。設(shè)計(jì)方法的自適應(yīng)壓縮過(guò)程如圖1所示。
圖1 嵌入式在線視頻幀間信號(hào)壓縮流程圖
H264/AVC視頻編碼標(biāo)準(zhǔn)的設(shè)計(jì)目標(biāo)之一是實(shí)現(xiàn)高收縮性能。AVC的基本功能模塊包括預(yù)測(cè)編碼、變換、量化和編碼。為了提高數(shù)據(jù)壓縮率,H.264編解碼器對(duì)各功能模塊進(jìn)行了改進(jìn)和改進(jìn)。H264/AVC功能可分為兩個(gè)層次:視頻編碼層VCL和網(wǎng)絡(luò)提取層NAL[4]。其中,視頻編碼層主要負(fù)責(zé)視頻內(nèi)容的高效編碼,而網(wǎng)絡(luò)提取層主要負(fù)責(zé)視頻的適當(dāng)映射或封裝。其中,相應(yīng)的信令和封裝屬于網(wǎng)絡(luò)抽取層。在視頻編碼層和網(wǎng)絡(luò)提取層之間定義了基于包的接口。H264/AVC的主要功能層是視頻編碼層和網(wǎng)絡(luò)提取層,分別負(fù)責(zé)高效編碼和網(wǎng)絡(luò)友好性。在H.264視頻編碼標(biāo)準(zhǔn)中,幀間預(yù)測(cè)主要利用視頻幀間的時(shí)間相關(guān)性,通過(guò)運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償來(lái)去除視頻圖像中的冗余信息,支持1/4像素和1/8像素的運(yùn)動(dòng)矢量。6抽頭濾波線的插值類似于1/8像素精度運(yùn)動(dòng)矢量和8抽頭濾波線的插值。在H.264/AVC標(biāo)準(zhǔn)中,增加了大小塊的分割方法。根據(jù)待編碼視頻圖像的特點(diǎn),選擇更合適的塊大小進(jìn)行自適應(yīng)編碼,大大提高了編碼精度和效率[5]。在H.264/AVC標(biāo)準(zhǔn)中,增加了大小塊的分割方法。根據(jù)待編碼視頻圖像的特點(diǎn),選擇更合適的塊大小進(jìn)行自適應(yīng)編碼,大大提高了編碼精度和效率。整數(shù)離散余弦變換的正變換過(guò)程如式(1)所示
(1)
同理可以得到整數(shù)離散余弦變換的反余弦變換。對(duì)于視頻圖像大面積緩慢變化的情況,可以采用直流系數(shù)的二次變換方法來(lái)消除小尺寸引起的灰度差[6]。視頻圖像中對(duì)亮度塊的哈達(dá)碼變換如下
(2)
式中,WD為初始視頻圖像中的亮度塊矩陣。另外視頻圖像中色度快的哈達(dá)碼變換可以表示為
YD=Hj×WD
(3)
式中,Hj表示視頻圖像標(biāo)準(zhǔn)化轉(zhuǎn)化系數(shù)。根據(jù)視頻標(biāo)準(zhǔn)量化過(guò)程中圖像的動(dòng)態(tài)范圍大小,確定量化參數(shù),既能減少碼流,又能保持圖像的必要細(xì)節(jié)[7]。具體量化原理如下式所示
(4)
式中,F(xiàn)Q為y的量化值,y為輸入樣本點(diǎn)編碼,QP為量化步長(zhǎng),round()表示的是取整函數(shù)。定量步驟Qstep定義了52個(gè)不同大小的值,這些值以12.5%的增量變化,由QP索引。如果QP的最大值為51,則為最粗量化;如果最小值為0,則為最精細(xì)量化[8]。每增加6個(gè)QPS,量化步長(zhǎng)的Qstep將加倍。在實(shí)踐中,可以根據(jù)需要選擇寬范圍的量化步長(zhǎng)。顏色編碼和亮度編碼一般采用相同的量化步長(zhǎng)[9]。在現(xiàn)有的H.264標(biāo)準(zhǔn)中,色度的最大QP值通常被限制在亮度的最大QP值的80%,以避免在高量化步長(zhǎng)的情況下進(jìn)行人工顏色量化。綜上所述可以得出嵌入式視頻的距離量化算法為
(5)
式中,Yij代表轉(zhuǎn)換系數(shù),量化計(jì)算結(jié)果為輸出的量化系數(shù)。
從視頻幀中提取視頻的運(yùn)動(dòng)特征,根據(jù)所提取的運(yùn)動(dòng)信息來(lái)獲取關(guān)鍵幀,就是基于運(yùn)動(dòng)特征的關(guān)鍵幀提取算法的基本原理。計(jì)算相鄰兩幀圖像中對(duì)應(yīng)位置像素值變化的平均值,并將相鄰幀之間的差值定義為
(6)
式中Ik(x,y)和Ik+1(x,y)分別表示第k幀和第k+1幀在(x,y)處的亮度值,M和N分別表示該幀的高度和寬度。式(6)計(jì)算出的值小表示幀間差異小,反之則表示幀間發(fā)生了較大的變化。當(dāng)式(6)的計(jì)算結(jié)果大于某一設(shè)定的閾值時(shí),則認(rèn)為此幀為關(guān)鍵幀。
在分析提取的嵌入式在線視頻關(guān)鍵幀數(shù)據(jù)的基礎(chǔ)上,考慮了目標(biāo)幀與前一幀的相關(guān)性和參考幀與下一幀的強(qiáng)相關(guān)性[10]。為此,將第一幀設(shè)置為關(guān)鍵參考幀,第三幀設(shè)置為前向預(yù)測(cè)幀,第二幀設(shè)置為雙向預(yù)測(cè)幀,三個(gè)設(shè)定幀分別記為I幀、P幀和B幀。該算法對(duì)P幀和I幀進(jìn)行相同的非重疊塊處理,并將其分別分為D*D和K塊。P幀Xt+1的第i塊圖像塊的原始數(shù)據(jù)與I幀Xt-1中對(duì)應(yīng)位置的圖像塊之間的差值反映了這兩幀對(duì)應(yīng)圖像塊之間的相關(guān)性。因此,相應(yīng)圖像塊之間的殘差能量值的大小可以作為P幀圖像塊的分類依據(jù),其表達(dá)式如下
(7)
嵌入在線視頻幀間運(yùn)動(dòng)范圍以其亮度值的最大值和最小值之比來(lái)估計(jì)幀間運(yùn)動(dòng)范圍內(nèi)的視頻運(yùn)動(dòng)。幀間運(yùn)動(dòng)估計(jì)對(duì)搜索區(qū)域內(nèi)所有可能的候選位置,從中尋找最小SAD值,其對(duì)應(yīng)的偏移即為運(yùn)動(dòng)矢量,具體的搜索估計(jì)過(guò)程如圖2所示。
圖2 視頻動(dòng)畫幀間運(yùn)動(dòng)搜索估計(jì)圖示
從圖2中的原點(diǎn)開(kāi)始,沿順時(shí)針?lè)较驈慕竭h(yuǎn)計(jì)算每個(gè)像素的SAD值,直到遍歷整個(gè)搜索區(qū)域中的所有點(diǎn)[11]。找出所有SAD中塊誤差最小的MBD點(diǎn),該點(diǎn)對(duì)應(yīng)于最優(yōu)運(yùn)動(dòng)矢量。通過(guò)對(duì)提取的關(guān)鍵幀進(jìn)行合成,可以得到下一幀的運(yùn)動(dòng)估計(jì)結(jié)果。
圖3表示的是視頻幀間信號(hào)壓縮編碼器的基本結(jié)構(gòu)。
圖3 視頻幀間信號(hào)編碼器工作原理圖
該編碼器可以實(shí)現(xiàn)視頻信號(hào)的紋理編碼和運(yùn)動(dòng)編碼。該代碼確定編碼位是0還是1,最終編碼結(jié)果由編碼器規(guī)范化。寄存器的位移位,每個(gè)寄存器的移位數(shù)為1。當(dāng)CT為0時(shí),壓縮后的數(shù)據(jù)將通過(guò)字節(jié)輸出過(guò)程從寄存器C中刪除,并繼續(xù)進(jìn)行規(guī)范化處理,直到A不小于0×8000為止。將關(guān)鍵幀提取和幀間運(yùn)動(dòng)估計(jì)的結(jié)果作為編碼器的輸入,根據(jù)設(shè)定的壓縮編碼規(guī)則得到最終的幀間信號(hào)壓縮結(jié)果。
利用壓縮編碼器可以實(shí)現(xiàn)關(guān)鍵幀之間的壓縮,但在實(shí)際的在線視頻回放或傳輸過(guò)程中,需要設(shè)置一定的自適應(yīng)閾值,對(duì)關(guān)鍵幀進(jìn)行自適應(yīng)提取和量化[12]。不同的在線視頻動(dòng)畫運(yùn)動(dòng)特征參數(shù)σx,可以得到不同的幀間信號(hào)分布函數(shù)范例,因此視頻動(dòng)畫圖像編碼風(fēng)險(xiǎn)最小意義上的最佳門限值為:
(8)
式中r(T)為在線視頻動(dòng)畫圖像運(yùn)動(dòng)的估計(jì)結(jié)果。
為了在H.264標(biāo)準(zhǔn)約束下獲得更高的壓縮比,編碼器將根據(jù)現(xiàn)有的語(yǔ)法元素自適應(yīng)地動(dòng)態(tài)調(diào)整碼表。對(duì)于不同對(duì)象的編碼,可以使用同一碼表進(jìn)行編碼,這樣更有利于編碼的實(shí)現(xiàn)。經(jīng)過(guò)預(yù)測(cè)編碼、變換和量化后,需要對(duì)視頻圖像進(jìn)行掃描和重新排序,為后續(xù)的幀間信號(hào)編碼做準(zhǔn)備。在基本層對(duì)比度壓縮過(guò)程中,引入f(t)并得到視頻幀間信號(hào)對(duì)比度的壓縮結(jié)果,如式(9)所示
I′base(x,y)=lg(2+f(t)×8)×Ibase(x,y)
(9)
其中Ibase(x,y)和I′base(x,y)分別為壓縮對(duì)比度操作前后的圖像亮度分量。為了降低視頻動(dòng)畫圖像編碼壓縮產(chǎn)生的失真情況,對(duì)壓縮結(jié)果的細(xì)節(jié)進(jìn)行補(bǔ)償和色彩保持。經(jīng)過(guò)上述處理后,通過(guò)安裝的壓縮編碼器輸出嵌入式在線視頻幀間信號(hào)自適應(yīng)的壓縮結(jié)果。
為了測(cè)試設(shè)計(jì)的嵌入式在線視頻幀間信號(hào)自適應(yīng)壓縮方法,將其應(yīng)用到實(shí)際的在線視頻播放軟件中進(jìn)行仿真測(cè)試,并觀察設(shè)計(jì)的壓縮方法與傳統(tǒng)壓縮方法相比存在的性能優(yōu)勢(shì)。
實(shí)時(shí)讀取視頻數(shù)據(jù),顯示YUv4:2:0顏色采樣和8位量化4-K序列。幀速30時(shí),讀寫速度要求為373.25MB/s,主測(cè)試計(jì)算機(jī)安裝在仿真環(huán)境中,計(jì)算機(jī)主板型號(hào)為Dell 06 FWOP,處理器為IntelXeonX650@2.67GHZ,圖形卡為GEFORGTX 680,存儲(chǔ)空間為24G。在設(shè)備上安裝MediaPlayerClassic視頻播放器,并調(diào)整播放器與網(wǎng)絡(luò)的比率模式。顯示器的亮度、對(duì)比度、飽和度等參數(shù)應(yīng)根據(jù)試驗(yàn)要求進(jìn)行調(diào)整和校準(zhǔn)。除試驗(yàn)設(shè)備外,還按照ITU-RBT500-13的要求,建立了試驗(yàn)環(huán)境和試驗(yàn)環(huán)境。測(cè)試環(huán)境的亮度和測(cè)試環(huán)境墻的背景亮度都在一定范圍內(nèi)。
網(wǎng)絡(luò)環(huán)境下調(diào)用視頻源6個(gè),局域網(wǎng)調(diào)用9個(gè),網(wǎng)絡(luò)視頻源調(diào)用12個(gè),局域網(wǎng)調(diào)用12個(gè),網(wǎng)絡(luò)視頻源調(diào)用12個(gè)。用兩個(gè)視頻序列訓(xùn)練測(cè)試過(guò)程,用10個(gè)視頻序列測(cè)試樣本。在分辨率為3840x2160和30幀速率的情況下,所有視頻序列具有相同的分辨率和幀速率。三個(gè)基本序列的持續(xù)時(shí)間分別為10、8和8秒,而其它視頻源的持續(xù)時(shí)間僅為10秒。所選視頻源全部采用逐行掃描格式,顏色采樣率為位量化。
為了形成實(shí)驗(yàn)對(duì)比,體現(xiàn)出設(shè)計(jì)自適應(yīng)壓縮方法的運(yùn)行優(yōu)勢(shì),在仿真中還設(shè)置了傳統(tǒng)的壓縮方法和文獻(xiàn)[8]提出的VPx幀內(nèi)壓縮方法作為實(shí)驗(yàn)的兩個(gè)對(duì)比方法。在主測(cè)計(jì)算機(jī)的驅(qū)動(dòng)下,得出壓縮方法的登錄主界面,其中設(shè)計(jì)方法的運(yùn)行界面如圖4所示。
圖4 在線視頻幀間信號(hào)壓縮登錄界面
分別將準(zhǔn)備的仿真視頻樣本序列導(dǎo)入到視頻幀間信號(hào)壓縮登錄運(yùn)行界面中,并通過(guò)壓縮方法的運(yùn)行輸出壓縮結(jié)果。
為測(cè)量設(shè)計(jì)自適應(yīng)壓縮方法的編碼效率,通過(guò)實(shí)驗(yàn)研究了三種組態(tài)下視頻幀間信號(hào)的壓縮性能。統(tǒng)計(jì)視頻壓縮結(jié)果的誤碼率、壓縮體積之間的差別,從而得出仿真的對(duì)比結(jié)果。
3.4.1壓縮誤碼率
綜合不同嵌入式在線視頻的播放速度情況,得出壓縮誤碼率統(tǒng)計(jì)結(jié)果,如圖5所示。
圖5 壓縮誤碼率統(tǒng)計(jì)對(duì)比曲線
壓縮誤碼率指標(biāo)是錯(cuò)誤壓縮編碼與總壓縮編碼之間的比值,由此便可以得出不同樣本在不同播放速度下的誤碼率變化情況。從圖6中的曲線波動(dòng)情況可以看出,相比于兩種對(duì)比壓縮方法,設(shè)計(jì)方法的誤碼率更低。
3.4.2視頻幀間信號(hào)壓縮體積
將所有關(guān)于壓縮體積和壓縮文件占用內(nèi)存空間的相關(guān)數(shù)據(jù)進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果如表1所示。
表1 壓縮體積對(duì)比結(jié)果
綜合表1中的所有數(shù)據(jù),通過(guò)橫向?qū)Ρ瓤梢钥闯?,針?duì)相同的視頻樣本設(shè)計(jì)方法的壓縮結(jié)果占用空間更小。
綜上所述,通過(guò)嵌入式在線視頻幀間信號(hào)自適應(yīng)壓縮方法的設(shè)計(jì)與應(yīng)用,能夠同時(shí)實(shí)現(xiàn)視頻的播放與壓縮,為視頻用戶提供更好的體驗(yàn)。然而此次實(shí)驗(yàn)中主要使用的是與壓縮方法兼容的視頻播放器設(shè)備,然而在實(shí)際的應(yīng)用中會(huì)出現(xiàn)自適應(yīng)壓縮方法與播放器不兼容的情況,針對(duì)這一問(wèn)題還需要進(jìn)一步研究和分析。