視頻編碼本質上是一種有損壓縮,無損的壓縮極限是熵。有損壓縮的極限是人的視覺的差別感知能力 — Weber定理。
現在佔統治地位的編解碼方案都是基於塊的混合編碼架構。利用變換編碼, 預測編碼、熵編碼三類經典技術, 去除視頻信號的空域冗餘、時域冗餘及統計冗餘。在這個技術路線上,從ITU-T的h261/2/3/4/5系列,到ISO/IEC的MPEG1/2/4 都是通過升級這三個部分的技術來達到更大的壓縮效率。是典型的用複雜度來換取壓縮效率。
當前視頻的應用包括,視頻監控,便攜播放器,機頂盒,DVD,網絡視頻等。需要考察和權衡的編解碼的維度包括下面部分。
編碼複雜度-編碼效率-傳輸容錯性-解碼複雜度-編碼質量
H264為代表的主流方案的特點是,編碼複雜度遠遠大於解碼複雜度(5-10倍),編碼效率還是很可觀的SD(1-2Mbps)HD(4Mbps),傳輸容錯性(利用FEC/FMO等可以達到可以接受的程度,但是沒有辦法合理的降級處理錯誤,及按照誤碼的比例同比例的降低質量),解碼複雜度比較底(在主流的手機上可以達到高清解碼),編碼質量高(圖像效果還是很好的。畢竟已經在當前的應用中佔統治地位)。
因此總體上H264的表現還是相當優秀的。但是在後續的發展中面臨一下問題
1. 再通過計算複雜度來換取編碼效率的空間變小了。
2. 大量的低端編碼設備需要使用低複雜度的編碼算法,例如監控,救援,傳感器網絡等。
3. 在無線等高誤碼,高延遲,多經傳播的網絡無法很好的適應。
1.2問題雖然可以隨著晶片技術的發展得到部分解決,但是由於晶片發展也進入了一個平臺,所以新型的計算模型也需要改造編解碼,否則無法跟上編碼複雜度的要求,從H265可以看出來,雖然編碼效率提升了1倍,但是編碼複雜度比H264起碼提升了4倍以上,當前的編碼軟體/晶片還無法實時編碼高清。
由於H265的巨大計算複雜度,因此不適合當前的應用場景,所以不在這裡介紹了,其他值得注意的研究方向有:
H264畢竟是成熟的編碼框架如何充分利用當前的硬體發展來加速H264的編碼也是一個很重要的方向。
加速的思路就是並行:
CPU級別的加速分為細粒度的並行就是用SIMD指令(x86的mmx,sse,sse4,avx,avx2等,arm的NEON)來加速。粗粒度的並行是利用多線程或者多核心來frame或者slice級別的並行。
快速發展的GPU計算技術,讓h264編解碼看到了曙光,可是GPU的並行方式是大規模的SIMD,而H264在編碼過程中依賴了相鄰的數據,因此並行度並不大,所以如何把H264進行改造適合GPU計算也是需要研究的方面,在這方面國防科技大學的張春元教授可以說走在了前沿。
流化H.264編碼的數據並行方法 文梅,任巨,伍楠,蘇華友,荀長慶,張春元
H26x的編碼還是以像素為單位進行壓縮,可以說H265在這方面降低冗餘度的設計是登峰造極了。但是如果以對象為單位進行編碼感覺應該有更高空間,MPEG-4的思路就是這樣,但是由於要基於對象編碼就要進行圖像分割,這樣需要更高的技術,因此進展不大,所以後面又和ITU-T聯合起來搞了h264.
但是這條思路卻是非常有優勢的,由於相比像素為信息單位,視頻對象為單位自然熵值更小。因此極限的壓縮效率更高。當h26x遇到瓶頸的情況下,自然會走到這一步,而且如果能夠降低計算複雜度,那麼可以在較低的複雜度下獲取相當的或者更高的編碼效率。
全面的採用視頻對象的方法還是有技術瓶頸的但是在某個領域確有了突破性的進展,這裡要自豪的宣布一下「AVS-S2標準(2013年6月,包括AVS-S2 監控系統在內的AVS視頻編碼標準由IEEE頒布為編號1857的標準」 是的,就是中國提出的AVS標準系列,AVS-S2是AVS系列裡的監控擋,AVS-S2能夠以h264一般的複雜度,卻提高了編碼效率一倍,主要是利用了監控中背景長期不變,通過背景建模來降低「背景冗餘」。這實際上就是把編碼的層次從像素級提高到了前後景級別,已經是在可視對象級別的編碼了。
所以這個思路還是有巨大的研究空間。
參見:支持監控視頻高效壓縮與識別的IEEE 1857標準
分布式編碼是指對兩個或多個相關的隨機過程進行編碼,每個過程分別使用不同的編碼器,編碼後的碼流送到同一個解碼器後,該解碼器利用信號間的統計相關特性對所有輸入的碼流進行聯合解碼,如圖所示。
若對兩個統計相關的獨立同分布隨機過程X和y,分別進行傳統的熵編碼/解碼,可以得到如下關係:
Rx≥H(X)
Ry≥H(y)
其中,Rx,Ry和H(x),H(y)分別為X,Y的碼率和信息熵。若利用x和y之間的相關性,對x和y,進行獨立編碼、聯合解碼,可以進一步降低碼率.
Wyner和Ziv將Slepian.Wblf理論結果進一步延伸到有失真的分布式編碼。於視頻壓縮編碼中一般使用有失真編碼,這樣Wyner-Ziv理論成為分布式視頻編碼的主要理論依據。
基於20世紀70年代Slapian和Wolf以及Wyner和Ziv提出的信息理論而建立的分布式信源編碼,近些年被應用於視頻壓縮技術中,稱為分布式視頻編碼。分布式視頻編碼算法被廣泛研究,比較典型的分布式視頻編碼系統是史丹福大學Bemd Girod小組提出的Wyner-Ziv視頻編碼系統,以及加州大學伯克利分校Kannan Ramchandran小組提出PRISM(Power-efficient,Robust,hlgh-compression,Syndrome.based Multimedia coding)系統。
史丹福大學的Wyner-Ziv視頻編碼系統
伯克利分校的PRISM
1. 運算複雜度轉移- 把運動預測等複雜度高的操作轉移到了解碼器端,因此編碼器的複雜度轉移到解碼器端。
2. 固有的視頻抗誤碼能力-分布式視頻編碼算法對視頻幀進行獨立編碼,編碼Wyner-Ziv幀時,僅考慮當前幀與預測邊信息之間的相關性統計,只要在解碼端使用符合相關性的邊信息即可正確解碼。因此信道傳輸導致的丟包或誤碼不會影響其它圖像幀的恢復,具有較強的容錯能力,而不像使用預測編碼的傳統視頻壓縮算法,網絡傳輸錯誤容易
造成編碼端和解碼端重構緩存不匹配,從而出現誤碼擴散現象,嚴重影響恢復視頻質量。
3.提高視頻編碼效率困難-分布式視頻編碼算法中,編碼器對各幀圖像進行獨立編碼,沒有考慮視頻序分布式視頻編碼的關鍵技術研究列的時間相關性,雖然大大降低編碼端的複雜度,但卻未能有效去除相鄰圖像的冗餘信息,這將降低分布式視頻編碼系統的編碼效率。
現在網際網路點對點視頻聊天的軟體實際上都有。例如QQ,Skype,Facetime,還有眾多的廠家的系統。但是效率出眾,帶寬消耗少,點對點加密的開源聊天軟體還是有生存的空間。
因此為了本質上提升視頻聊天的競爭力,需要重新考慮編碼器的選擇和改造。需要滿足編碼效率高,編碼複雜度低等,良好的抗誤碼。
基於這樣的考慮。可行的方案為:把AVS-S2的方案合併進x264中,然後在當前的硬體上調優。DVC編碼近期看不到可以實用的可能性,只好暫時放棄。