H.264/AVC 國際視頻編碼標準的逐漸成熟和推廣,越來越多的視頻應用已經或即將采用H.264/AVC標準。由于存在不同的網絡和不同的終端,因此對于視頻編碼的可伸縮性方面的要求也越來越迫切。所謂的可伸縮視頻編碼(scalable video coding:SVC)技術要求視頻編解碼器在比特流級別具有以下可伸縮特性:通過簡單的丟包或截斷碼流等操作提取出的子碼流具有較低的空間-時間分辨率和/或較低的碼率(對應于較低的視頻質量),同時任何可能子碼流的編碼效率應該與相應非可伸縮視頻編解碼器相當。
當前國際上對于視頻編碼技術的研究熱點逐漸集中于在H.264/AVC 基礎上實現可伸縮視頻編碼(Scalable Video Coding, SVC)。2005年1月,ISO的MPEG和ITU-T的VCEG,同意聯合起來將SVC作為H.264/AVC的擴展集并由聯合視頻組(JVT)提出了草案,收錄為H.264/AVC的Annex G。此后,每次JVT的會議都圍繞著SVC技術對草案進行修訂和完善。在2006年10月的JVT會議上,提出了H.264/AVC可伸縮擴展集的第8版草案。
2 基于H.264/AVC的SVC
H.264/AVC可伸縮擴展集的一大特點是,擴展集中所采用的H.264/AVC中的大部分技術都與AVC標準中的定義一致(例如,運動補償預測,intra預測,變換編碼,熵編碼,去塊濾波器等),只加入或修改了很少一部分內容。H.264/AVC的可伸縮擴展的技術要點為:(1)時域分級預測結構;(2)用于空域可伸縮性的層間預測機制;(3)基本層與H.264/AVC兼容;(4)用漸進細化片(progressive refinement slices)實現精細顆粒的質量可伸縮性;(5)NAL單元概念的使用和擴展。
H.264/AVC的SVC擴展集以不同的空間尺寸的圖像為基礎形成分層結構,并且在此叢礎上,用等級B圖像來實現時域的可伸縮性,用漸進細化(progressive refinement)的紋理編碼來實現質量可伸縮性。一個降低的時/空分辨率序列所對應的比特流可以簡單的通過丟棄NAL單元(或網絡包)來得到,該完整的流對于獲得所需的時-空分辨率是沒有必要的。對應漸進精細片的NAL單元也可以被任意截斷以進一步降低比特率和相應的重建質量。
實際應用的SVC編碼器結構取決于要實現的可伸縮性的維度。圖1所示為一個具有三個空域層的編碼器。
基于圖像空間尺寸的空域可伸縮性是通過使用金字塔形的空域分辨率概念來實現的。將原始尺寸的輸入視頻序列進行下采樣,得到所需的較低的空域分辨率,每個空域分辨率都用一個新的層進行編碼,并且在各空域分辨率層的基礎上進一步實現時域和質量的可伸縮性。由于低層是由高層通過下采樣得到的,因此在相同的時域分辨率情況下,每一個高層幀都有與之相對應的低層幀,兩者之間存在著顯而易見的相關性,我們稱之為層間冗余。顯然,為了獲得更高的壓縮效率,有必要通過各種層間預測技術來消除層間冗余,這也是空域可伸縮性技術的關鍵所在。 SVC允許編碼器自由選擇哪些空域分辨率層間的相關性需要被消除。在具體實現時采用以下三種方式:
(1)Intra宏塊的預測使用上采樣的基本層incra塊;(2)運動信息的預測使用上采樣后的基本層運動數據;(3)殘差信息的預測使用上采樣后的基本層殘差塊。同樣的技術可以用于基本層與當前層具有相同的空間分辨率的情況。此時,就不用進行上采樣了。
4 擴展的空域可伸縮性
在基本的空域可伸縮編碼中,對于高低層之間的空間關系有較嚴格的限定,即,低層必須對高層的完整圖像進行以2為倍數的尺寸縮小。但是在實際應用中,由于網絡狀況、終端能力和用戶需求多樣,因此以上的限制使得應用中的需求無法得到充分滿足。例如,當網絡帶寬減小時,用戶可能更希望對感興趣區域保留原始的空間分辨率的同時玄除其他區域(切割),而非對整個圖像進行整體縮小;又如,為了適合終端顯示尺寸,可能要對原圖像進行非2倍的尺寸縮小。為了滿足類似上述需求,JVT提出了擴展空域可伸縮件(ESS:extended spatial scalability)的概念。
ESS使得相鄰的空域層之間具有了一般化的關系。這包含了兩方面的意義:低空域層的圖像可以來自于高分辨率圖像中任意位置剪切出的矩形區域,并且相鄰層分辨率的比例關系不再限制于2倍。
相應的,為實現以上功能,ESS 中新定義了以下兩種技術: (1)剪切; (2)一般化的上采樣(任意的水平和豎直層間尺寸比例)。
考慮兩個連續的空域層,基本層(Base layer)和增強層(Enhancement laver),幾何關系如圖2所示。增強層圖像的寬度和高度分別表示為wenh和henh。基本層圖像的寬度和高度分別表示為wbase和hbase。基本層圖像是從增強層圖像中位置(xorig,yorig)起,寬高尺寸分別為wextract和hextract,部分或全部在增強層圖像中的矩形區域,通過下采樣得到的。增強層和基本層圖像被劃分為宏塊。wextract/wbase和hextract/hbase對應了基本層圖像和增強層提取圖像之間實際的下采樣比率。因此,參數集(xorig,yorig,wextract,hextract)完整的定義了基本層和增強層圖像之間的幾何關系。作為特例,在基本的2倍空域伸縮關系的配置中,這些參數為(0,0,2*wbase,2*hbase)。
5 ESS層間運動信息的獲取
ESS運動信息上采樣通過以下步驟完成:
(1) 獲取幾何參數
如圖3所示,是圖2中的基本層經上采樣后與增強層重疊所表現出的兩層宏塊的對應關系,虛線表示基本層上采樣后的宏塊,實線表示增強層的宏塊。
(2) 確定層間宏塊對應關系類型
根據獲得的幾何參數,一個高層的宏塊可能分屬以下4個類型:
Comer:高層宏塊有1個對應的基木層宏塊;
Hori:高層宏塊有2個對應的上下排列的基本層宏塊;
Vert:高層宏塊有2個對應的左右排列的基本層宏塊;
Center:高層宏塊有4個對應的基本層宏塊。
(3) 獲取宏塊類型和分割類型
通過層間宏塊對應關系,從相應的基本層宏塊獲取分割和子分割信息。使用這些變量來判斷高層宏塊是否(有可能)被分割。
例如,考慮一個高層宏塊,如圖4所示。如果對應的基本層宏塊分別按照8×8和16×16分割,因為左邊的8×8塊由一個宏塊邊界獲得,則獲得的宏塊分割為8×8。此外,子分割的類型也直接由對應的摹本層8×8塊獲得。
在得到了宏塊分割和子分割的信息之后,一步就是從每個(子)分割繼承運動信息(例如,參考幀索引和運動矢量)。首先,確定考慮的高層(子)分割的左上方的4×4塊,計算確定對應的基本層4×4塊,繼承覆蓋了基本層4×4塊的(子)分割的參考幀索引和運動矢量,對運動矢量進行相應的伸縮。
當使剛的剪切窗口與宏塊邊界對齊,且上采樣比率為1或2時,運動和紋理信息的上采樣過程與基本的空域可伸縮編碼相同。臺則,必須使用一般化的上采樣工具。根據當前SVC草案中的規定,只有當宏塊完全在基本層內的時候,才進行層間預測。
6 ESS的層間紋理預測
層間紋理預測過程由對基本層紋理進行基于直接內插的上采樣來完成。對于intra紋理,使用一組6抽頭的濾波器,同時內插會跨越塊邊界,所使用的基于整數的6抽頭濾波器,由Lanczos3濾波器變化而來;對于殘差紋理,使用雙線性濾波器,同時內插不跨越塊邊界。
考慮到基本層和增強層之間存在潛在的色度相移,因此對于亮度和色度的處理存住細微的差別。
對于亮度樣點,增強層中在位置(X,Y)的實際的預測點pred[X,Y]由以下式子得到:
對于色度樣點,增強層中在位置(X Y)的實際的預測點predC[X,Y]由以下式子得到:
predC[X,Y]=interpC[xI,yI]
其中
7 結論和展望
作為當前JVT工作的中心任務,圍繞SVC的研究還在不斷深化,更多細節和新技術被添加到草案中。
作為一項新技術,ESS能解決實際應用中對于空域伸縮的一般化的要求,但是對這一技術的具體實現還存存一些問題。
在H.264 SVC實現的軟件參考模型JSVM中,采用了自適應的層問預測方式選擇,以實現更高的編碼效率。但目前只實現了圖像級的自適應,即對于整幅圖像的所有宏塊決定是否進行層問預測。因此在ESS中采用圖像剪切的情況下,部分高層宏塊將沒有對應的基本層宏塊。此時在圖像級判斷自適應的結果只能不進行層間預測,這使得ESS的編碼效率大受影響。為了充分消除幀間冗余,必須要引入宏塊級的自適應層間預測。