盧 斌,孫 軍,王興東
(上海交通大學(xué) 電子工程系 圖像通信與信息處理研究所;上海市數(shù)字媒體處理與傳輸重點(diǎn)實(shí)驗(yàn)室,上海 200240)
對(duì)于MPEG-2壓縮碼流來(lái)說(shuō),傳統(tǒng)的臺(tái)標(biāo)或字幕插入方法是將碼流完整地解碼,把視頻信號(hào)恢復(fù)到像素域,然后在像素域上對(duì)臺(tái)標(biāo)進(jìn)行α半透明疊加,再將疊加后的碼流進(jìn)行編碼[1],形成疊加后的壓縮碼流,如圖1所示。
這種方法的缺點(diǎn)是:1)效率低。對(duì)視頻中的每幀都做完全解碼和編碼,運(yùn)算量大,特別是編碼中的運(yùn)動(dòng)矢量重新搜索和IDCT,DCT運(yùn)算是最耗時(shí)的兩個(gè)部分。2)畫(huà)質(zhì)下降。在經(jīng)過(guò)反量化與量化的過(guò)程后,視頻圖像的質(zhì)量會(huì)有所下降。而非臺(tái)標(biāo)區(qū)域的解碼和編碼過(guò)程是不必要的,所以臺(tái)標(biāo)區(qū)以外絕大部分區(qū)域的圖像質(zhì)量下降是不必要的犧牲。
因此,考慮通過(guò)其他更高效的算法來(lái)實(shí)現(xiàn)臺(tái)標(biāo)實(shí)時(shí)插入這一應(yīng)用需求。
現(xiàn)有的非傳統(tǒng)臺(tái)標(biāo)插入方法主要分為局部編解碼和DCT域處理兩大類。
對(duì)于局部編解碼方法,已有潘健、季學(xué)會(huì)等人提出相應(yīng)的算法[2-3],在解碼范圍的確定和宏塊類型處理上,也有較為詳細(xì)的判斷準(zhǔn)則和方法,能夠?qū)Υa流進(jìn)行較完善的處理,但同樣存在著計(jì)算步驟繁復(fù),在一定程度上影響效率等問(wèn)題。Yu提出的反向跟蹤方法[4],能把解碼宏塊范圍進(jìn)一步縮小,但針對(duì)的是臺(tái)標(biāo)完全覆蓋的情況。徐硯劼等人提出的改進(jìn)的反向跟蹤法[5],能處理α半透明疊加的問(wèn)題。但存在一定的時(shí)延問(wèn)題,必須在整個(gè)GoP分析后才能處理相應(yīng)的宏塊,在實(shí)時(shí)性要求較高的場(chǎng)合中不太適用。李植榮等人提出了局部編解碼向DCT域處理的轉(zhuǎn)換[6],嘗試在局部編解碼的框架下引入部分DCT域處理方法,但算法較為復(fù)雜,應(yīng)用不夠廣泛。
對(duì)于DCT域處理這類方法,其優(yōu)勢(shì)主要在于無(wú)需對(duì)宏塊解碼。但該類方法需將臺(tái)標(biāo)信號(hào)也做DCT變換,然后進(jìn)行DCT域疊加。而α半透明疊加是矩陣的點(diǎn)乘運(yùn)算[7],像素域的點(diǎn)乘在DCT域用卷積來(lái)實(shí)現(xiàn)[8],該實(shí)現(xiàn)較為復(fù)雜,但目前已有相應(yīng)的快速算法[9]。陳亮等人提出了對(duì)壓縮碼流的DCT域處理綜合方法[10],疊加臺(tái)標(biāo)作為其中的應(yīng)用之一。林江、程國(guó)華等人提出完整的對(duì)壓縮視頻的DCT域字幕疊加算法[11-12],其中對(duì)于DCT域運(yùn)動(dòng)補(bǔ)償算法有詳細(xì)的描述,但仍存在算法復(fù)雜度較高的問(wèn)題。徐章寧等人提出了相應(yīng)算法在硬件實(shí)現(xiàn)上的優(yōu)化處理[13]。
由于字幕疊加的關(guān)鍵還是在于解碼區(qū)的范圍確定和宏塊類型的判斷處理上,一般來(lái)說(shuō)臺(tái)標(biāo)區(qū)范圍都不會(huì)太大,并且運(yùn)動(dòng)矢量也不會(huì)太大。針對(duì)實(shí)時(shí)性要求較高的場(chǎng)合,從算法效率和實(shí)現(xiàn)難度上綜合考慮,筆者采用了改進(jìn)的局部編解碼臺(tái)標(biāo)快速實(shí)時(shí)插入方案,簡(jiǎn)化算法復(fù)雜度,并允許臺(tái)標(biāo)區(qū)域圖像質(zhì)量的細(xì)微下降,以期在圖像質(zhì)量和算法效率上求得最佳的平衡。
假設(shè)臺(tái)標(biāo)為128×128大小的固定圖片,并且疊加位置在畫(huà)面的左上角。如圖2所示,①區(qū)域是臺(tái)標(biāo)區(qū)。由于MPEG-2碼流的I,P,B幀結(jié)構(gòu)[14],不同的幀之間存在一定的參考關(guān)系,所以對(duì)①區(qū)域的改動(dòng),可能會(huì)影響到外圍若干宏塊的正確解碼。例如,②區(qū)域中的標(biāo)記陰影宏塊參考到①區(qū)域中的標(biāo)記陰影宏塊,則影響到其正確解碼。①區(qū)域中的宏塊所影響到的最大解碼區(qū)域稱為臺(tái)標(biāo)相關(guān)區(qū),即圖中②區(qū)域。而圖中的③,④區(qū)域?qū)ε_(tái)標(biāo)疊加沒(méi)有影響,也不受臺(tái)標(biāo)疊加的影響,稱為無(wú)關(guān)區(qū)。
因此,局部解碼的范圍便是①區(qū)域全部宏塊和②區(qū)域中的部分宏塊。確定解碼區(qū)域的范圍轉(zhuǎn)化為確定②區(qū)域的范圍。
目前一般的方法是根據(jù)MPEG-2編碼中運(yùn)動(dòng)估計(jì)最大搜尋范圍,即臺(tái)標(biāo)邊緣宏塊的最大運(yùn)動(dòng)矢量所指,來(lái)確定②區(qū)域的范圍[2]。這樣做可保證不會(huì)有宏塊遺漏,但也會(huì)造成②區(qū)域的范圍取得過(guò)大。Yu和徐硯劼等人提出的反向跟蹤方法[4-5],能夠把解碼宏塊的范圍盡可能地縮小,但考慮到該方法必須在對(duì)整個(gè)GoP進(jìn)行分析后,再回溯處理每一幀,這對(duì)實(shí)時(shí)性要求較高的場(chǎng)合不太適用,特別是GoP長(zhǎng)度太長(zhǎng)時(shí)更是如此。
在實(shí)際應(yīng)用中,最大運(yùn)動(dòng)矢量的絕對(duì)值,即運(yùn)動(dòng)估計(jì)時(shí)的搜索窗大小,由4< MPEG-2的解碼架構(gòu)是以slice為單位的[14]。由于宏塊采取VLC編碼,無(wú)法實(shí)現(xiàn)字節(jié)對(duì)齊,所以為完整界定并提取宏塊信息,當(dāng)前宏塊信息必須在前面的宏塊都解碼后才能獲得。在判斷宏塊已經(jīng)到②區(qū)域的邊界后,對(duì)于③區(qū)域的宏塊信息,在找到下一個(gè)slice頭之前都可以寫(xiě)回碼流中。而④區(qū)域中整個(gè)slice都與局部編解碼無(wú)關(guān),故在判斷達(dá)到②區(qū)域的最后一個(gè)slice之后,和找到下一個(gè)幀頭之前,碼流中的所有信息都不予改動(dòng),可直接寫(xiě)回。 在3.1節(jié)確定了各個(gè)區(qū)域的范圍后,下面討論不同的幀類型和不同區(qū)域的宏塊如何進(jìn)行不同的判斷處理。 1)對(duì)于I幀,解碼①區(qū)域和②區(qū)域的宏塊,然后對(duì)①區(qū)域的宏塊進(jìn)行臺(tái)標(biāo)的ΔS半透明疊加,同時(shí)將宏塊緩存,供后面的P,B幀參考用。對(duì)宏塊再進(jìn)行幀內(nèi)編碼,與無(wú)關(guān)區(qū)的碼流拼合,這便完成了I幀的處理。這樣一來(lái),后面P,B幀中參考到I幀非臺(tái)標(biāo)區(qū)的宏塊能夠保證按原先的運(yùn)動(dòng)矢量正確解碼,而對(duì)于參考到I幀臺(tái)標(biāo)區(qū)的宏塊,其處理方法將在后面詳述。 2)對(duì)于P幀,同樣要對(duì)①區(qū)域的slice進(jìn)行解碼,對(duì)①區(qū)域的宏塊進(jìn)行臺(tái)標(biāo)的α半透明疊加。由于臺(tái)標(biāo)區(qū)的圖像內(nèi)容大部分為靜止的臺(tái)標(biāo),相似性較大,為提高處理的效率,把P幀臺(tái)標(biāo)區(qū)的宏塊解碼后跟I幀臺(tái)標(biāo)區(qū)的對(duì)應(yīng)宏塊(已緩存)相減,得到殘差ΔP,并把運(yùn)動(dòng)矢量(MV)設(shè)為零,前向參考,同時(shí)對(duì)疊加臺(tái)標(biāo)后的臺(tái)標(biāo)區(qū)宏塊緩存。這樣雖然比重新搜索運(yùn)動(dòng)矢量碼率高,但卻使得宏塊處理變得簡(jiǎn)單,并且由于臺(tái)標(biāo)區(qū)一般面積較小,對(duì)圖像質(zhì)量的影響并不大,而且碼率上升是極有限的。在其后的編碼中多數(shù)此類的宏塊類型變?yōu)閟kipped模式。 為滿足實(shí)時(shí)性的要求,算法的處理應(yīng)該越簡(jiǎn)單越好。筆者采用的方法雖使臺(tái)標(biāo)區(qū)畫(huà)質(zhì)有所下降,碼率有微小上升,但對(duì)人眼的主觀視覺(jué)影響并不大,而算法的處理效率卻能得到較大的提高。 對(duì)于非臺(tái)標(biāo)區(qū),先僅解碼宏塊的運(yùn)動(dòng)矢量,如果運(yùn)動(dòng)矢量指向臺(tái)標(biāo)區(qū),說(shuō)明該宏塊的參考宏塊已被改動(dòng)過(guò),如果不加以處理,在后續(xù)的播放過(guò)程中該宏塊將會(huì)有臺(tái)標(biāo)的“殘留”,從而影響畫(huà)質(zhì)。處理方法就是對(duì)該宏塊進(jìn)一步解碼,找出對(duì)應(yīng)的參考宏塊(已解碼并緩存),相減獲得新的殘差值Δ′P,運(yùn)動(dòng)矢量保持不變,這樣就能保證該宏塊能正常解碼。而對(duì)于運(yùn)動(dòng)矢量沒(méi)有指向臺(tái)標(biāo)區(qū)的②區(qū)域宏塊,無(wú)須解碼。 3)對(duì)于B幀,與P幀的處理方法相似,可參照?qǐng)D3。臺(tái)標(biāo)區(qū)同樣進(jìn)行運(yùn)動(dòng)矢量置零,前向參考的處理。而對(duì)臺(tái)標(biāo)相關(guān)區(qū),不論宏塊的類型是前向參考、后向參考還是雙向參考,只要其運(yùn)動(dòng)矢量指向了臺(tái)標(biāo)區(qū),就應(yīng)解碼,并找出相應(yīng)的參考宏塊(不論I幀還是P幀,都如前所述已緩存),相減得到新的殘差Δ′B,運(yùn)動(dòng)矢量保持不變。運(yùn)動(dòng)矢量沒(méi)有指向臺(tái)標(biāo)區(qū)的宏塊同樣無(wú)須解碼。 由于B幀不作參考幀,故疊加臺(tái)標(biāo)后的臺(tái)標(biāo)區(qū)宏塊無(wú)須緩存。I幀和P幀中的緩存數(shù)據(jù)在所有參考它們的B幀都進(jìn)行處理后失效,緩存區(qū)可重復(fù)使用。 采用這種只解運(yùn)動(dòng)矢量再進(jìn)行判斷的方法,可以盡量減少宏塊的解碼耗時(shí),從而避免處理效率的低下,并且能保證一定的視頻質(zhì)量。算法流程偽代碼如下: 實(shí)驗(yàn)采用stockholm序列,分辨力為720×576(標(biāo)清畫(huà)質(zhì)),設(shè)定播放幀率為 25 f/s(幀/秒),碼率為 5 Mbit/s。GoP結(jié)構(gòu)為N=12,M=3。實(shí)驗(yàn)中,參照組是傳統(tǒng)的全解全編算法,比較指標(biāo)分為算法效率和視頻質(zhì)量: 1)算法效率對(duì)比。在經(jīng)過(guò)200幀的測(cè)試序列運(yùn)算后,算法效率對(duì)比見(jiàn)表1。 表1 傳統(tǒng)方法與本文方法算法效率對(duì)比 由表1可見(jiàn),本文方法比傳統(tǒng)方法效率提高約150%。算法效率提高的主要原因在于解碼范圍的縮小。傳統(tǒng)算法對(duì)占畫(huà)面大部分區(qū)域的非臺(tái)標(biāo)區(qū)也進(jìn)行解碼,并重新搜索運(yùn)動(dòng)矢量,再編碼,效率低下。而本文的算法采用局部編解碼來(lái)縮小解碼范圍,雖然包括臺(tái)標(biāo)相關(guān)區(qū),但總的解碼范圍相對(duì)整個(gè)畫(huà)面來(lái)說(shuō)依然占少部分。再加上宏塊類型判斷處理過(guò)程采用簡(jiǎn)化處理算法,進(jìn)一步提高效率,達(dá)到實(shí)時(shí)處理的要求。 2)視頻質(zhì)量對(duì)比。在視頻質(zhì)量對(duì)比上,采用在同一GoP中的每幀亮度分量作對(duì)比,衡量指標(biāo)是整幅圖像的PSNR。圖4是本文算法中的一幀亮度分量。圖5是兩種算法的PSNR對(duì)比。 由圖5中可見(jiàn),本文方法比傳統(tǒng)的全解全編算法在整體圖像質(zhì)量上有較大的提高。計(jì)算得出,傳統(tǒng)方法的PSNR平均值為35.046 dB,本文方法的PSNR平均值為35.779 dB,比前者提高0.733 dB??梢钥闯?,在本文的算法中,臺(tái)標(biāo)區(qū)的視頻質(zhì)量下降是很有限的,而占畫(huà)面大部分的非臺(tái)標(biāo)區(qū)域的視頻質(zhì)量比傳統(tǒng)方法提高不少,減少了不必要的視頻質(zhì)量下降,故總體畫(huà)面的PSNR指標(biāo)有較大的提升。 筆者采用了經(jīng)過(guò)簡(jiǎn)化改進(jìn)的局部編解碼臺(tái)標(biāo)插入技術(shù),主要針對(duì)實(shí)時(shí)性要求高的MPEG-2臺(tái)標(biāo)插入場(chǎng)合,從算法的高效性出發(fā),在保證視頻質(zhì)量無(wú)明顯下降的情況下,提出的方法實(shí)現(xiàn)了MPEG-2壓縮碼流的快速實(shí)時(shí)臺(tái)標(biāo)疊加。經(jīng)實(shí)驗(yàn)證明,新方法同傳統(tǒng)的“完全解碼-疊加-再編碼”的方法相比,在算法效率和視頻質(zhì)量上都有較大的提升。 [1]MESSERSCHMITT D G,NOGUCHI Y,CHANG S F.MPEG video compositing in the compressed domain[C]//Proc.ISCAS 1996.[S.l.]:IEEE Press,1996:596-599. [2]潘建.數(shù)字視頻編輯及網(wǎng)絡(luò)傳輸中若干問(wèn)題研究[D].上海:上海交通大學(xué),1999. [3]季學(xué)會(huì).MEPG-2編解碼與非線性編輯[D].杭州:浙江大學(xué),2000. [4]YU B,NAHRSTEDT K.A compressed-domain visual information embedding algorithm for MPEG-2 HDTV streams[J].IEEE Int.Conf.Multimedia and Expo,2002, 1:677-680. [5]徐硯劼.基于MEPG-2的數(shù)字電視壓縮碼流處理技術(shù)研究[D].上海:上海交通大學(xué),2009. [6]李植榮.MPEG-2視頻臺(tái)標(biāo)系統(tǒng)及碼率變換的研究與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2002. [7]SMITH B C,ROWE L.Algorithms for manipulating compressed images[J].IEEE Computer Graphics and Applications, 1993, 13(5):34-42. [8]SHEN B, SETHI I K,BHASKARAN V.DCT convolution and its application in compressed domain[J].IEEE Trans.Circuits and Systems for Video Technology, 1998,8(8):947-952. [9]JóNSSON R H.Efficient DCT domain implementation of picture masking and compositing[C]//Proc.International Conference on Image Processing.Santa Barbara, CA, USA:[s.n.],1997:366-369. [10]陳亮.基于壓縮域的數(shù)字視頻處理技術(shù)研究[D].上海:上海交通大學(xué),2003. [11]林江.MPEG-2視頻流壓縮域的字幕迭加及其算法研究[D].上海:上海交通大學(xué),2004. [12]程國(guó)華.基于壓縮域的視頻轉(zhuǎn)碼與視頻編輯技術(shù)的研究[D].上海:上海交通大學(xué),2005. [13]徐章寧.基于DM642平臺(tái)的數(shù)字電視碼流字幕疊加技術(shù)研究[D].上海:上海交通大學(xué),2010. [14]ISO/IEC 13818-2,Generic coding of moving pictures and associated audio information:video[S].1994.3.2 改進(jìn)簡(jiǎn)化后的宏塊判斷處理方法
4 實(shí)驗(yàn)結(jié)果和數(shù)據(jù)對(duì)比
5 小結(jié)