高吞吐量JPEG 2000(HTJ2K):新的算法和機會

摘要:

本文參考D. S. Taubman等人發表在SMPTE Motion Imaging Journal上的文章High Throughput JPEG 2000 (HTJ2K): New Algorithms and Opportunities,描述了一種聯合圖像專家組(JPEG)2000(J2K)塊編碼器的直接替代品,它提供了極高的吞吐量,編碼效率略有降低,但同時保留了除質量可拓展性之外J2K的所有功能。相對於J2K,它可以實現大約10倍或更多的吞吐量。我們使用優化截取FAST碼塊編碼(FBCOT)的術語來表示本文提出的算法。而由於J2K和FBCOT比特流之間的真正可逆轉碼在逐塊的基礎上得到支持,使得J2K的效率和可擴展性與FBCOT的高吞吐量優勢相結合的系統成爲可能。該算法構成了新標準的基礎,該標準將是J2K Part-15(也稱爲高吞吐量J2K),目前處於國際標準化組織(ISO)工作組(稱爲JPEG)的委員會草案狀態。

引言

聯合圖像專家組(JPEG)2000(J2K)圖像壓縮標準提供了高壓縮效率以及一組獨特的功能,即可直接從編碼表示中提取感興趣的分辨率和空間區域,同時還可享受免版稅 IP許可情況。J2K Part-1目前用於全球D-Cinema分發以及以IMF家庭視頻分發服務。J2K在娛樂行業中更廣泛採用的一個障礙是J2K相對較高的計算複雜度,對於許多高分辨率和幀速率而言,它需要功能強大的工作站計算機或專用硬件來實現實時編碼或回放性能。J2K的高複雜性是由於其底層塊編碼算法的相對高的計算複雜性。本文介紹了J2K塊編碼算法的直接替代方法,該算法能夠提高10倍或更高的吞吐量,並且僅僅略微降低編碼效率。此外,新的編碼算法在逐塊的基礎上支持對任何J2K碼流的真正可逆轉碼,這爲新的媒體壓縮解決方案和系統創造了一系列機會。

基於本文所述算法的早期證據激發了ISO / IEC JTC1 / SC29技術工作組(WG)1(也稱爲JPEG)中創新的想法。經過徵集建議書和仔細評估過程之後,在選擇和改進的過程中產生了算法的改進體,成爲J2K系列的第15部分(也稱爲HTJ2K,或簡稱爲JPH)標準。委員會草案(CD)已發佈以徵詢公衆意見,最終的國際標準(IS)預計將於2019年7月發佈。爲避免混淆,在本文中,J2K一詞指的是現有的J2K標準(特別是Part-1)和塊編碼器,區別於HTJ2K(Part-15)及其FAST塊編碼算法。

JPEG 2000塊編碼算法的關鍵概念

J2K基於稱爲優化截取內嵌碼塊編碼(EBCOT)的算法. 在多分量去相關變換之後,離散小波變換將源圖像數據分解爲子帶圖像,這些子帶圖像被單獨編碼;這提供了有效壓縮所需的能量壓縮,以及分辨率可擴展的編碼內容訪問。每個子帶圖像被進一步劃分爲代碼塊,通常尺寸爲64×64或32×32,並且每個代碼塊經歷分數位平面編碼處理(fractional bitplane coding process)。此階段賦予壓縮表示(compressed representation)以質量可擴展和基於興趣區域的可訪問性屬性,這對於具有高效性且響應式互動訪問的大型媒體源尤其重要;它還爲算法提供了高水平的宏觀並行性,因爲其可以並行地對塊進行編碼/解碼。每個塊比特流可以在一組豐富的截斷點(每個位平面3個)上獨立截斷,允許在編碼後做出率失真(rate-distortion)優化決策,即所謂的後壓縮率-失真優化(PCRD-opt)階段。一組稱爲Tier-2的編碼和打包工具將塊比特流片段和相關的輔助信息封裝在形成最終碼流的J2K數據包流中。

爲了理解本文中描述的創新,簡要回顧一下J2K塊編碼算法是有必要的。令X [n]表示代碼塊內的樣本,由位置n =(n1,n2)索引,其中

表示水平位置,

表示垂直位置,W和H是代碼塊的寬度和高度。令

是採用量化步長Δ評估的關於幅度位平面p的樣本幅度,即,在死區量化(deadzone quantization)之後丟棄p最低有效位(LSB)。我們說如果

,那麼X [n]相對於位平面p是“重要地”。J2K塊編碼器逐步編碼

的值,從

開始並向下工作到最精細的位平面P=0,其中最粗略的位平面

在J2K分組構造期間被明確地傳送作爲輔助信息的第2層編碼的一部分。通常,

是最粗糙的位平面,塊中的任何樣本都是重要的。塊編碼器每個位平面構造三個編碼通道,分別爲Cleanup,SigProp和MagRef,每個通道最多可傳輸一個新的幅度位,對於新的重要採樣,則傳輸一個符號位。

這種多通道編碼策略提供了豐富的截斷點集,爲表示賦予了卓越質量的可擴展性屬性。雖然可以使用優化技巧來避免在每個編碼通道中觸及所有樣本,但J2K塊編碼器的吞吐量不可避免地還是會隨着質量的提高而下降(即,隨着位平面數量的增加)。

優化截取Fast碼塊編碼(FBCOT)

這裏描述的FAST塊編碼算法通過在單個通道內編碼多個位平面,犧牲質量可擴展性來提升吞吐量。爲了在J2K和FAST塊比特流之間實現真正的可逆轉碼,FAST塊編碼器仍採用具有Cleanup,SigProp和MagRef編碼通道的結構,其相對於位平面p定義。然而,重要的是,與位平面p相關的Cleanup通道完全編碼了

; 相比之下,J2K Cleanup通道僅編碼對於位平面p + 1中不重要的樣本的重要性。

同時,快速SigProp和MagRef編碼通道與J2K對應的編碼具有相同的增量改進信息,但使用的方法更適合軟件中的高吞吐量實現。圖1比較了快速和J2K編碼通道結構。在轉碼應用中,需要細化通道來精確複製J2K的自適應量化屬性。對於使用FAST塊編碼器直接編碼的內容,改進的通道提供了額外的截斷點,可提高速率控制性能,當然這並不是嚴格需求的。

圖一. 快速碼字段和字節流

FAST塊編碼器對J2K中與J2K數據包構造相關的語法或Tier-2編碼工具沒有任何影響。從解碼器的角度來看,每個代碼塊最多可以恢復三個編碼通道。第一個是Cleanup通道,其特徵取決於上面解釋的Pmax值,但在快速變型中,Pmax通常變得較小,因爲單個Cleanup通道包含來自較粗糙(coarser)位平面的信息。

在編碼器內,可以在每個代碼塊中處理多個位平面,產生一系列編碼通道,隨後可以以速率-失真最優方式截斷,如在原始EBCOT算法中那樣。但是,一旦找到最佳截斷點,只有最精細的Cleanup通道以及任何後續的細化通道實際上包含在碼流中,因爲最精細的快速Cleanup通道會包含所有之前的編碼通道。然而J2K塊編碼器必須按順序生成所有編碼通道,甚至一些在PCRD-opt階段可能會被丟棄的通道也是如此,智能FAST塊編碼器可以從稍後的位平面開始編碼,生成更小的一系列(有用的)通道作爲PCRD-opt階段的輸入。以上,就是優化截取FAST碼塊編碼(FBCOT),其中有涉及FAST塊編碼器和優化的編碼通道選擇。

圖二. 快速碼字段和字節流

代碼字段和字節流

快速Cleanup通道中產生一個字節流,其長度會明確地用信號通知解碼器,在J2K中稱之爲碼字段。FAST塊編碼器使用兩種類型的段。快速Cleanup通道將三個字節流打包到單個Cleanup碼字段中,而SigProp和MagRef編碼通道分別將前向和後向增長的字節流分組打包到單個細化碼字段中,如圖2所示。所有五個字節流對應於可以並行運行的單獨編碼過程。這有利於軟件和硬件實現,增加併發性並減少臨時狀態變量的數量。Cleanup段的最後兩個字節流以相反的方向增長,因此不需要單獨傳達它們的長度。MagSgn字節流在先驗長度上難以綁定,因此我們將其放在第一位,通過12位接口定位器字在兩個正向增長流之間傳遞接口。每個字節流分別進行位填充過程,保證FFh字節後面不會跟隨90h-FFh範圍內的字節–這是一個J2K的要求,也可用於視頻傳輸應用中的重新同步。快速Cleanup通道的三個字節流攜帶的信息如下。

  • 使用自適應MELCODE和上下文自適應可變長度代碼(CxtVLC)的組合來識別重要樣本。 MELCODE最初由Mitsubishi Electric Labs(MEL)開發,使用小型狀態機將符號轉換爲二進制數字,具有與算術編碼類似的特性。這些數字構成正向增長的MEL字節流。同時,VLC碼位有助於向後增長的VLC字節流。
  • 對於每個重要樣本,符號位,0以及其他更多的

的LSBs,在MagSgn字節流中作爲原始位打包,僅位填充。

  • 每個重要樣本出現的幅度位數由單獨的VLC(稱爲U-VLC)傳送。U-VLC位與VLC字節流中的CxtVLC位交錯。

幅度指數

在位平面p中,爲每個樣本分配“幅度指數”

,其定義爲:

對於無效的樣本,

; 否則,

並且

是來自

的LSBs的數量,它們可以是非零的。

圖3. 重要性前後關係

組結構和編碼工具

重要性以2×2組編碼。 每個組g具有一個4比特位重要性模式,

,其根據相鄰樣本的重要性的上下文進行編碼,如圖3所示。根據這些鄰近樣本的重要性形成八個不同的編碼上下文

; 此外,

=1對應於特殊的全零上下文(AZC),其與該組相鄰的所有樣本都是無關緊要的。對於AZC組(

=0的那些),首先對二進制組重要性符號

進行編碼,指示整個組是否無關緊要(

=0)或該組具有至少一個重要樣本(

=1)。該組重要性符號使用類似於JPEG-LS標準所採用的自適應MELCODE進行編碼,但使用僅具有13種狀態的自定義狀態機。實驗表明

這種自適應編碼引擎與J2K中的“MQ”算術編碼器具有基本相同的效率,但由於小狀態機和簡單的狀態轉換映射,編碼/解碼吞吐量可以高得多。

對於非AZC組和重要性AZC組,使用八個CxtVLC表編碼重要性模式,每個上下文

一個。 碼字長度被限制爲最多6位以最小化複雜性。

對於有意義的2×2組,使用另外的VLC來對組中的每個位置n的

的值傳遞上限

。回想一下,

是來自

的LSBs的數量,它們可以是非零的,因此對於g組中的每個重要樣本,

都是包含在MagSgn字節流中一個足夠數量級的比特。如果該組只有一個重要樣本,則該邊界必須是嚴格的,因此這些

位中最重要的一個肯定是1並且不包含在MagSgn字節流中。

的值表示爲

,其中

是單個幅度指數導出的預測器,而

是U-VLC編碼的主體的非負偏移。

HTJ2K標準的改進

上一節中描述的算法與JPEG WG開發的HTJ2K標準(J2K Part-15)的早期提議相對應。最終算法包括若干改進,導致編碼效率提高約2%,在某些特定條件下甚至能高達4%,且其對吞吐量沒有任何顯著影響。第一個改進是將CxtVLC代碼擴展爲variable-to-variable編碼方案,該方案編碼關於每組中各個樣本的幅度指數Ep [n]的一系列信息,在碼字長度上受到7位的約束。第二個改進是自適應MEL編碼程序的擴展,以促進編碼塊中第一行組內的幅度邊界Ug的有效編碼,在這其中是不能形成有意義的預測器kg的;這種改進對於超低延遲配置及其有利,其中推薦使用尺寸爲4×1024的短代碼編碼塊。

是什麼使他如此高效

FAST塊編碼器中的所有元素都經過精心選擇和參數化,以優化軟件和硬件部署中的吞吐量性能權衡。該算法在編碼器和解碼器中都可以廣泛地進行矢量化,能夠充分利用AVX512,AVX2,NEON,BMI2等現代指令集的優點,達到預期的程度。快速Cleanup通道的三字節流結構解耦了編碼和解碼過程的不同階段,即使對於軟件部署也會產生實質性的好處。另外可變長度編碼技術也經過仔細挑選,使得基於查找的實現在軟件中變得有利。與J2K塊編碼器一樣,每個塊都可以並行編碼或解碼,但FAST塊編碼器可以同時處理多個位平面,從而編碼塊樣本中的多個順序通道也可被避免;此外,Cleanup,SigProp和MagRef通道都可以在編碼器和解碼器中並行處理。

轉碼應用程序和性能

我們在此提供了有關壓縮效率和FAST塊編碼算法在轉碼環境中的高吞吐量的證據。原始J2K塊比特流被壓縮爲1,2和4 bpp,然後可逆地轉碼爲FBCOT格式。圖4顯示了與轉碼後的FBCOT格式相關的壓縮大小的平均增長,大多數圖像來自原始J2K測試庫(Aerial2,Bike,Café,Cats,Cmp2,Finger,Goldhill,Hotel, Mat,Seismic,Texture1,Texture2,Tools,Ultrasound,Water,Woman和Xray),我們添加了兩個高分辨率彩色圖像(Waltham1和Waltham2),這些圖像後來爲評估J2K做出了貢獻。作爲參考,我們還報告了轉碼對J2K塊編碼器的全旁路模式的影響,在此表示爲“BYP”-這是J2K塊編碼器提供的最快可用模式,其中在所有SigProp和MagRef通道中算術編碼被繞過。

圖4. 可逆轉碼的相對大小增加

圖5. 解碼吞吐量,千兆樣本/秒

圖5顯示了J2K,BYP和FAST塊編碼算法的平均解碼吞吐量,以每秒千兆樣本表示。這些結果是通過在配備2.6 GHz Skylake CPU的2016 15英寸Macbook Pro筆記本電腦上測量塊解碼器的吞吐量而獲得的。測試是單線程的,但是需要將處理每個代碼塊所花費的測量時間除以4,因爲其CPU有四個內核。結果與上述相同的測試圖像基本保持一致。我們注意到,吞吐量計算中未包含的變換和量化步驟可以在這裏使用的CPU的單核上每個樣本執行大約1.5個時間,這至少可以部分地被i7 CPU中的超線程所抵消。相對於J2K的整體加速比在1,2和4pp時分別爲10.5×,15×和21×。所有這些結果都是使用衆所周知的J2K商用Kakadu工具包(版本7.9.2)獲得的,這通常被認爲是一種非常有效的實現。但請注意,Kakadu的高度優化的Speed-Pack版本可以進一步加速J2K塊編碼和解碼約1.5倍。值得注意的是,大多數原始測試圖像都是灰度圖像。爲了更好地瞭解可預期的吞吐量,我們注意到與庫中的五個RGB測試圖像相關的平均解碼吞吐量,以每秒千兆像素表示,在1 bpp時爲2.4 Gp / s,2 bpp時爲1.5 Gp / s和4 bpp時爲0.88 Gp / s。作爲參考,3840×2160 4:4:4 24p視頻對應於大約0.2Gp / s。

實現高性能端到端視頻壓縮

在這裏,我們提出了FBCOT算法的吞吐量和效率,包括FAST塊編碼器和動態估計一系列用於編碼每個代碼塊的編碼通道的有效方案,之後由PCRD-opt算法決定在每個幀的碼流中包括哪些編碼通道。我們每塊最多生成六個編碼通道(2×Cleanup,SigProp和MagRef)。該算法使用統計收集的壓縮早期幀來確定實際編碼的通道。圖6比較了兩個衆所周知的4K 4:4:4 60-Hz視頻序列的平均PSNR(來自所有信道和幀的平均平方誤差)。 比較涉及常規J2K,全旁路變體(BYP)和FBCOT(快速); 結果是使用32×32碼塊(由J2K D-Cinema / IMF配置文件指定)和比特率1,2和4 bpp獲得的。在2 bpp時,整個視頻編碼過程的吞吐量,包括小波和顏色變換,數據轉換,量化,塊編碼和速率控制,在基本時鐘頻率爲3.4 GHz的4核i7 Skylake CPU上約爲70幀/秒。對於相同平臺上相同的4K 4:4:4內容,整個視頻解碼過程的吞吐量約爲108幀/秒。

圖6. FBCOT與K2L及其全旁路(BYP)模式的視頻壓縮效率比較

HTJ2K標準的未來展望

上面給出的所有實驗結果都與HTJ2K標準的早期提案(J2K Part-15)相對應。最終在該標準的CD中採用的算法包含許多改進,如上所述。TABLE 1相對於使用衆所周知的Kakadu工具包實現的完整J2K Part-1塊編碼算法,總結了最終算法在編碼效率和吞吐量改進方面的獨立評估。這些結果均基於從專業視頻內容中獲取的19個標準HTJ2K評估圖像。

這些結果證實,HTJ2K標準將爲吞吐量帶來巨大的好處,使更多的應用程序和系統能夠從J2K的豐富功能集中受益。實際上,除了比JPEG-1(ISO / IEC 10918-1)更高效之外,HTJ2K實現起來也可能更快。

由於FAST塊編碼算法是J2K塊編碼器的直接替代品,因此支持J2K的所有功能,包括從內容中提取和解碼任意分辨率的任意感興趣的區域。因爲8K捕獲將變得更加普遍,這可能在專業視頻處理應用中會變得越來越重要。

目前,J2K的質量可擴展性屬性並未廣泛用於專業視頻應用。然而,質量可擴展性對於通過帶限網絡的J2K媒體的高響應性交互式流傳輸非常重要,這是由J2K第9部分(JPIP)啓用的-請參閱Taubman和Prandolini2以獲得JPIP的概述。儘管FAST塊編碼器一定程度上犧牲了質量可擴展性,但HTJ2K標準提供了保留與質量可擴展J2K碼流相關的所有信息的機制。此外,可以按照需求使用J2K的可逆轉碼來恢復質量可擴展性,即使在逐個編碼塊的基礎上,也可以在任意感興趣的窗口實現高效的圖像/視頻內容交互流。

這種性能和功能的結合爲HTJ2K解決方案在攝像機,服務器,瀏覽器和移動設備中的應用提供了強有力的論據,尤其在高分辨率和VR和360°內容的情況下更甚。

參考文獻

1. D. Taubman, “High Performance Scalable Image Compression with EBCOT,” IEEE Trans. Image Proc., 9(7):1158–1170, 2000.

2. D. Taubman and R. Prandolini, “Architecture, Philosophy and Performance of JPIP: Internet Protocol Standard for JPEG 2000,” Int. Symp. Visual Comm. Image Proc., 5150:649–663, 2003.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章