1 引言
目前,用于數字視頻監控的圖像壓縮標準主要是H.261 和MPEG-1,他們在實際應用中有一定的局限性。第一,他們的適應性差,不能根據網絡情況自適應的調節傳輸率,使得網絡發生擁塞時性能急劇下降;第二,他們不具備較強的用戶交互性。MPEG-4 能彌補以上不足,還具有在監控應用中的獨特優勢:由于壓縮比是同質量的MPEG-1 的十倍多,所以可大大節約存儲空間和網絡帶寬;錯誤恢復能力強:當網絡傳輸有誤碼或丟包現象時,MPEG4 受的影響很小并且能夠迅速恢復;圖像質量高:可以達到接近DVD 的效果。
2 設計思路
根據視頻監控的圖像特點及其實時性要求,考慮到實際中網絡的不穩定性,進行了編碼軟件的設計。視頻監控的原始圖像有一個顯著的特點,即有大量的背景對象是靜止不動的或極少運動的。MPEG-4 最基本的思想是基于對象的編碼,編解碼的基本單元是對象。所以可以把圖像分割為運動物體對象和背景對象。背景對象采用壓縮比較高、損失較大的方法進行編碼,運動物體對象采用壓縮比較低、損失較小的方法編碼。基于此,我們采用MPEG-4 中Sprite 編碼的思想來對背景對象編碼。這是軟件實現的一個重點所在。針對視頻監控的實時性要求,算法的設計與選擇上,除盡可能提高壓縮比外,還要考慮到算法的復雜性,使其盡量滿足實時性要求。這一思想貫穿于編碼的整個過程,具體的,如VOP 的定義與生成,Sprite 編碼等。另外考慮到網絡的不穩定性,采用了MPEG-4 的可分級編碼思想。
3 MPEG-4 的軟件實現過程
現在,基于MPEG-4 標準的應用大多為硬件方案,采用專門的MPEG-4 編碼芯片,難以實現升級,靈活性也較差,而本文中使用軟件方案,可按實際應用要求進行編碼,易于以后的升級,具有很好的靈活性。本文中,實現的是自然視頻編碼,不涉及音頻編碼。軟件設計的總體步驟是首先利用圖像分割技術生VOP,接下來是Sprite 生成,最后是對各VOP 的編碼。軟件實現流程如圖1 所示。下面對其中的關鍵技術作介紹,重點是以前的標準中所沒有的:視頻對象平面VOP(video object plane)的定義與生成,Sprite 生成與編碼,形狀、運動、紋理編碼,可擴展編碼。MPEG-4 中,VOP 分四種,I-VOP、P-VOP、B-VOP、S-VOP,對于普通視頻對象,只涉及到前三種,S-VOP 指SpriteVOP。

3.1 VOP 的定義與生成
MPEG-4 的編碼單位是VOP,但標準并未規定生成VOP 的具體算法,而將其列入公開研究的內容。VOP 的生成是通過視頻分割實現的。視頻分割是實現基于對象的視頻編碼系統的基礎,也是MPEG-4 編碼的一個難點。圖像分割技術根據分割所利用的信息,分為基于紋理的分割、基于運動的分割和基于時空的分割三類。按照人工參與的程度,圖像分割分為自動分割和半自動分割。自動分割不需要用戶的參與,只需要設置一些基本的參數,就可以由分割算法自動將視頻對象分割出來,但是結果不很準確,主要用于實時編碼;半自動分割需要用戶的參與,因此可以得到準確的語義對象和邊界,主要用于基于內容的操縱和交互式訪問。基于編碼對圖像分割的要求不是很高,主要在于實時性上,這里,選用了一種時空聯合自動視頻對象分割算法。該算法首先對時域分割采用基于F-假設檢驗的方法來得到初始的變化檢測模板,然后通過與基于形態學的空域分割融合來獲得最終的運動對象。此算法計算比較簡單,能較好的將前景運動對象從背景中分離出來,算法詳見。
3.2 Sprite 編碼
Sprite 編碼是新一代的編碼技術,它利用全局運動估計生成視頻段背景的Sprite 圖像(全景圖),然后將這個Sprite 圖像編碼,以后各幀的背景編碼都只是對該幀相對于Sprite 圖像的運動參數進行編碼。基于背景的平滑和紋理相關性大的特點,對Sprite 全景圖的編碼采用一種直接空間預測方法,基于篇幅限制,這里不作介紹,可參考[2]。Sprite 編碼包括兩部分,一是Sprite 的生成,使用全局運動估計來生成;二是Sprite 編碼。Sprite 在最初的VOP 編碼之前建立, MPEG-4標準中定義了兩種類型的Sprite:靜態Sprite 和動態Sprite。在這里選用動態Sprite,因此我們僅討論動態Sprite 的生成與編碼。
動態Sprite 的編碼如圖2 所示:視頻序列的第一幀采用I-VOP 方法編碼,而第一幀的重構圖像在編碼端和解碼端建立相同的初始Sprite 圖像;第二幀用全局運動估計算法估計當前VOP 與前一幀VOP 之間的全局運動,用參考點的軌跡描述兩個VOP 之間的運動。采用P-VOP 方法編碼第二幀的紋理,不同的是編碼該VOP 各個宏塊時,運動補償的方式除了宏塊和塊運動補償外,還可以用Sprite圖像為參考進行運動補償,此時宏塊的運動補償為全局運動補償。解碼器的解碼參考點的軌跡得到全局運動參數,然后解碼紋理信息得到第二幀的重構圖像,根據全局運動參數和第二幀重構圖像更新Sprite 圖像。同樣的方法用來編碼序列后面的VOP。

圖2 動態Sprite 編碼框圖
3.3 可擴展編碼
根據視頻監控的特點,當傳輸圖像的分辨率和幀率不是很高時,仍能達到一般要求下的監控效果。因此我們可以采用MPEG-4 的基于對象的分層傳輸思想,使用空域分級功能調節空間分辨率,使用時域分級功能調節幀率。這樣做一方面可以方便地實現碼率控制,對網絡帶寬的變化具有很好的自適應性,另一方面,用戶可以通過交互功能選擇分辨率和幀率,以得到更好的視頻效果或獲得某一對象局部的細節。MPEG-4 定義了一種通用的可分級擴展框架來實現空間和時間可分級擴展,如圖3 所示。

圖3 MPEG-4 通用的可分級擴展框架圖
當用于空域擴展時,可擴展預處理器對輸入的VOP 下采樣,得到由VOP編碼器處理的基本層VOP。中間處理器處理重建的基本層VOP,并對其進行上采樣,原始VOP 與中間處理器輸出的差作為增強層編碼器的輸入。在增強層中的編碼是以P-VOP 或B-VOP 方式編碼的。通過反復接器可以分別訪問基本層和增強層解碼器對應的基本層和增強層碼流,解碼器端的中間處理器與編碼端執行相同的操作,擴展后處理器執行必要的轉換工作。
當擴展編碼使用時域擴展編碼時,可擴展預處理器在時域上將一個VO 分解成VOP 的兩個子流,其中一個被輸入到基本層編碼器中,另一個輸入到增強層編碼器中。在這種情況下,不需要中間處理器,而是簡單地將解碼的VOP 基本層輸入到VOP 增強層編碼器,增強層編碼器將使用它們進行時域預測。可擴展后處理器只是簡單地輸出基本層的VOP,并不進行任何轉換,但是在時域上混合基本層和增強層VOP,以產生更高時域分辨率的增強輸出。
3.4 普通VOP 的形狀、運動、紋理編碼
形狀編碼是其他的編碼標準中所沒有的,編碼的信息有兩類:二值形狀信息(binary shapeinformation)和灰度級形狀信息(gray scale shape information)。二值形狀信息就是用0、1 的方法表示編碼的VOP 的形狀,0 表示非VOP 區域,1 表示VOP 的區域;灰度級形狀信息可取值0~255,類似于圖形學中的α 平面的概念,0 表示非VOP 區域(即透明區域),1~255 表示VOP 區域透明程度的不同,255 表示完全不透明。灰度級形狀信息的引入主要是為了使前景物體疊加到背景上時不至于界太明顯、太生硬,進行一下模糊處理。這里二值形狀采用基于上下文的算術編碼方法[4],整個編碼過程可分為以下五步:①對于給定VOP 的二值形狀圖重新確定形狀邊界,并將它分為若干個16×16 二值α塊(Binary Alpha Block,縮寫為BAB)。②對即將編碼的BAB 塊進行運動估計,得到運動矢量MVs(MV for shape 縮寫為MVs)。③對該VOP 中待編碼的BAB 塊確定編碼方式。④對待編碼的BAB 塊確定分辨率。⑤對BAB 塊進行編碼。灰度級編碼形狀編碼與此類似。對普通視頻對象,MPEG-4 編碼算法支持三種類型的VOP:I-VOP、P-VOP、B-VOP。在MPEG-4 中運動預測和運動補償可以是基于16×16 宏塊,也可以為8×8 塊。如果宏塊完全位于VOP 內,運動估計使用一般的方法進行;倘若宏塊位于VOP 邊界,則使用圖像填充技術給VOP 外的像素指定值。然后利用這些值計算SAD。對于P-VOP 和B-VOP,運動矢量首先被差分編碼,然后再用可變長編碼運動矢量。
視頻對象的紋理信息用亮度Y 和兩個色差分量Cb、Cr 表示,對于I-VOP,紋理信息直接包含在亮度和色差分量中,在有運動補償的情況下,紋理信息用運動補償后的殘差表示。紋理信息的編碼使用了標準的8*8 的DCT。紋理編碼中,幀內VOP 和運動補償后的殘差數據都用相同的8×8 塊DCT 方案編碼,對亮度和色度分別做DCT。對于VOP 之內的宏塊用與H.263 相同的技術編碼,對位于VOP 形狀邊緣的宏塊,有兩種選擇,一是用圖像填充技術填滿宏塊中VOP 以外的部分,另一種是用形狀自適應DCT 編碼的方法。后者只對VOP 內部的像素編碼,從而在比特率相同的情況下有較高的質量,代價是應用的復雜度稍高,考慮到視頻監控的實時要求,選用了圖像填充技術中的低通外推(Low PassExtrapolotion)方法。接著再做DCT。對DCT 后的數據量化、掃描與可變長編碼操作類似于MPEG- 2 和H.263,在此就不詳述了。
4 小結
本文根據圖像監控系統的特點,吸取MPEG-4 編碼標準的思想,提出了用軟件實現MPEG-4 在視頻監控應用中的編碼的主要框架,相較目前使用較多的硬件方案,更能貼近實際應用的要求,具有很好的靈活性和可升級性,又可降低成本。但由于MPEG-4 的編碼非常復雜,加上其技術上還不是很完善,所以實現上有一定的難度尤其如何保持其實時性能上難度更大。隨著高速處理芯片的不斷出現及MPEG-4 在技術上的發展完善,這些問題將迎刃而解。 