(中國(guó)電影科學(xué)技術(shù)研究所,北京 100086)
JPEG 2000標(biāo)準(zhǔn)作為新一代的圖像壓縮標(biāo)準(zhǔn)自2000年正式出臺(tái)以來,憑借其優(yōu)異的壓縮比、新加入的對(duì)于感興趣區(qū)域 (ROI)的支持、以及其支持漸進(jìn)傳輸?shù)葍?yōu)點(diǎn),使得JPEG 2000標(biāo)準(zhǔn)在圖像壓縮領(lǐng)域取得了一定突破,在電影、互聯(lián)網(wǎng)、數(shù)字相機(jī)、醫(yī)療影像、數(shù)字圖書館等領(lǐng)域得到廣泛應(yīng)用。時(shí)光荏苒、歲月如梭,JPEG 2000標(biāo)準(zhǔn)發(fā)展至今已經(jīng)經(jīng)歷了20個(gè)春秋。隨著用戶需求的與時(shí)俱進(jìn)和視聽產(chǎn)品的規(guī)格標(biāo)準(zhǔn)不斷提升,JPEG 2000標(biāo)準(zhǔn)對(duì)編解碼硬件要求較高,無法在廣泛的應(yīng)用領(lǐng)域得到推廣,發(fā)展受到限制。2020 年前后,JPEG 委員會(huì)在JPEG 2000國(guó)際標(biāo)準(zhǔn)系列 (ISO/IEC JTC 1/SC 29/WG 1)新增加了一個(gè)標(biāo)準(zhǔn)——“高吞吐量JPEG 2000”。
高吞吐量JPEG 2000 英文全稱是 High Throughput JPEG 2000,簡(jiǎn)稱HTJ2K。該標(biāo)準(zhǔn)是JPEG 委員會(huì)在JPEG 2000 國(guó)際標(biāo)準(zhǔn)系列 (ISO/IEC JTC 1/SC 29/WG 1)新增加的一個(gè)標(biāo)準(zhǔn)。
HTJ2K 標(biāo)準(zhǔn)能夠?yàn)镴PEG 2000 帶來巨大的數(shù)據(jù)量吞吐。同JPEG 2000標(biāo)準(zhǔn)相比,在采用中等壓縮比率時(shí),HTJ2K 標(biāo)準(zhǔn)能夠提高大約10倍的數(shù)據(jù)吞吐量;而在采用無損編碼時(shí),HTJ2K 標(biāo)準(zhǔn)可以提供超過原來30倍的數(shù)據(jù)吞吐量。HTJ2K 標(biāo)準(zhǔn)在略微降低編解碼效率的情況下,大大降低了計(jì)算的復(fù)雜程度,因此其能夠采用低成本的硬件實(shí)現(xiàn)。例如:4096×2160 分辨率的4K 4∶4∶4 12 比特/通道(bit/channel)即36 比特/像素 (bits/pixel)的視頻采用3.4GHz 4核Skylake桌面處理器,以2比特/像素 (bits/pixel)進(jìn)行編碼時(shí),編碼速度可超過90fps,且同一硬件對(duì)該片還可以實(shí)現(xiàn)超過140fps的解碼。如果相同規(guī)格的視頻內(nèi)容采用目前性能處于中等水平GTX1080芯片的GPU 進(jìn)行解碼,可以達(dá)到500fps。
HTJ2K 通過引入一種新的HT 塊編碼器來實(shí)現(xiàn)數(shù)據(jù)的高吞吐量,對(duì)原始JPEG 2000 第1 部分(以下簡(jiǎn)稱為J2K-1)塊編碼器進(jìn)行替換,該模塊能夠轉(zhuǎn)碼到J2K-1格式,也可以從J2K-1格式轉(zhuǎn)碼還原,實(shí)現(xiàn)了真正可逆的轉(zhuǎn)碼。
除質(zhì)量可擴(kuò)展性之外,HTJ2K 保留了JPEG 2000第1部分的所有特性。它與JPEG 2000第2部分定義的擴(kuò)展、JPEG 2000第9部分定義的交互式通信協(xié)議以及JPEG 2000 系列的其他部分兼容。HTJ2K 完全支持分辨率可擴(kuò)展性,有效的空間隨機(jī)訪問,多光譜和高光譜內(nèi)容(multi-spectral and hyper-spectral content),以及高吞吐量非迭代精確速率控制。與J2K-1編碼器不同,HT 編碼器并未完全嵌入,并且HTJ2K 碼流可以保留質(zhì)量層邊界,從而在HT 和J2K-1之間實(shí)現(xiàn)真正的可逆轉(zhuǎn)碼。
HTJ2K 解決了專業(yè)視頻采集、編輯、流媒體和分發(fā)市場(chǎng)的需求,包括高精度和半浮點(diǎn) (half-float)內(nèi)容的高吞吐量無損編碼。HTJ2K 同時(shí)能夠廣泛應(yīng)用于各種程序,從點(diǎn)對(duì)點(diǎn)視頻流到圖像捕獲、預(yù)覽和瀏覽等功能。同時(shí),超高的電能利用率使其充分勝任移動(dòng)設(shè)備和衛(wèi)星成像應(yīng)用。
最后,HTJ2K 標(biāo)準(zhǔn)中定義了一種稱為JPH 的包裝文件格式,用最新的顏色空間更新了JPEG 2000格式,幾乎支持無限精度的HDR 內(nèi)容。其擴(kuò)展了JP2文件格式,支持現(xiàn)代可參數(shù)化的顏色空間、沒有任何顏色空間的圖像以及適合原始傳感器壓縮的自定義顏色映射。
JPEG 2000第16部分規(guī)定了ISO/IEC 23008-12中JPEG 2000 碼流的封裝,通常稱為HEIF。JPEG 委員會(huì)正在對(duì)其進(jìn)行修訂,以支持封裝HTJ2K 標(biāo)準(zhǔn)的碼流。目前Kakadu、OpenJPH、ICT-Link都已經(jīng)支持HTJ2K 標(biāo)準(zhǔn)。與J2K-1 標(biāo)準(zhǔn)一樣,HTJ2K 標(biāo)準(zhǔn)也是免費(fèi)的。
圖1顯示了HTJ2K 壓縮和解壓所涉及的元素。HTJ2K 在很大程度上保留了JPEG 2000 的現(xiàn)有體系結(jié)構(gòu)和代碼流語法。圖像首先完成JPEG 2000第1部分或第2部分定義的多分量變換、非線性點(diǎn)變換,變換后的圖像分量由可逆或不可逆的離散小波變換 (DWT)處理,生成詳細(xì)子帶和一個(gè)基本(LL)子帶的層次結(jié)構(gòu)。
圖1 HTJ2K 整體架構(gòu)
所有子帶被劃分為不超過4096個(gè)樣本的塊,典型尺寸為64×64或32×32,也可以是非常寬和短的塊,如1024×4,該種塊對(duì)于低延遲應(yīng)用程序也很重要。每個(gè)塊被單獨(dú)量化 (如果是不可逆的)并編碼,產(chǎn)生一個(gè)包含零或更多編碼參數(shù)的比特流。
在編碼器中,可選的壓縮后失真率優(yōu)化(PCRD-opt)階段用于丟棄部分產(chǎn)生的編碼參數(shù)。最后,把來自每個(gè)代碼塊的比特流組合為JPEG 2000數(shù)據(jù)包,以形成最終的代碼流。
HT 塊編碼器具有并發(fā)處理能力。所有JPEG 2000碼流都由碼塊組成,每個(gè)碼塊最多有4096 個(gè)樣本,所有樣本都可并行處理。使HT 塊編碼器如此之快的原因是每個(gè)HT 塊位流由3到5個(gè)字節(jié)流組成,這些流是松散耦合的,可并發(fā)處理。
圖2 HTJ2K 系統(tǒng)圖
HTJ2K 標(biāo)準(zhǔn)引入了全新的HT 塊編碼器,該編碼器替換了J2K-1 中定義的J2K-1 塊編碼算法,從而相對(duì)于JPEG 2000數(shù)據(jù)吞吐量有著巨大的提升。
目前,JPEG 2000在用于數(shù)字電影發(fā)行放映以外,被廣泛用作數(shù)字電影和視頻資產(chǎn)的中間發(fā)行格式,這主要借助于電影電視工程師協(xié)會(huì) (SMPTE)定義的互操作母版格式 (IMF)規(guī)范。在這種應(yīng)用場(chǎng)景也可以采用HTJ2K 標(biāo)準(zhǔn),相對(duì)于JPEG 2000標(biāo)準(zhǔn)會(huì)更加提高效率。
針對(duì)目前已經(jīng)有大量JPEG 2000的視頻內(nèi)容的存檔管理,HTJ2K 標(biāo)準(zhǔn)也提出了相應(yīng)的解決辦法,由于HTJ2K 標(biāo)準(zhǔn)僅僅是替換了JPEG 2000編解碼器,所以可以在不影響原來工作流程的情形下,在處理流程中直接加入HTJ2K 轉(zhuǎn)碼器來完成轉(zhuǎn)碼工作,不僅如此HTJ2K 標(biāo)準(zhǔn)還有將HTJ2K 改為J2K-1的可逆轉(zhuǎn)碼器,能夠幫助將已經(jīng)編碼的文件還原回J2K-1狀態(tài)。
按照?qǐng)D2的HTJ2K 系統(tǒng)圖中的路徑C-D-F-I-K,現(xiàn)有的存檔JPEG 2000媒體可以被轉(zhuǎn)換、存儲(chǔ)、分發(fā)和播映,大大降低了計(jì)算復(fù)雜度。
首先,原來被存儲(chǔ)在J2K 媒體庫中的J2K 媒體將使用HTJ2K 可逆轉(zhuǎn)碼器將J2K-1格式文件轉(zhuǎn)碼成為HTJ2K 文件格式,該轉(zhuǎn)碼器為可逆轉(zhuǎn)碼器,確保用戶可以根據(jù)需要能夠還原成J2K-1 格式文件;接下來被轉(zhuǎn)碼成HTJ2K 格式的文件將被存儲(chǔ)在HTJ2K 儲(chǔ)存庫中方便進(jìn)行存儲(chǔ)和分發(fā);當(dāng)媒體文件需要呈現(xiàn)時(shí),HTJ2K 文件將通過HTJ2K 解碼器進(jìn)行解碼,然后顯示給用戶觀看。
當(dāng)用戶需要將HTJ2K 格式文件恢復(fù)成JPEG 2000格式時(shí),可以通過路徑F-H-G (見圖2)完成原始JPEG 2000 無損恢復(fù)。HTJ2K 格式文件通過HTJ2K 可逆轉(zhuǎn)碼器,將HTJ2K 格式文件還原成JPEG 2000文件J2K-1格式文件,并將J2K-1格式文件存儲(chǔ)到J2K 儲(chǔ)存庫中。
SMPTE在最近修訂的SMPTE ST 422標(biāo)準(zhǔn)中增加了對(duì)MXF 文件中HTJ2K 的支持,這使得HTJ2K 更容易使用在數(shù)字電影、IMF 和其他使用以MXF文件為基礎(chǔ)的應(yīng)用中。
HTJ2K 標(biāo)準(zhǔn)及其相關(guān)的JPH 文件格式還可以應(yīng)用在數(shù)碼相機(jī)、手機(jī)和更先進(jìn)的多傳感器成像設(shè)備上,可以幫助這些設(shè)備保存捕獲的圖像更多的細(xì)節(jié)特性。使用軟件和硬件將圖像直接編碼成HTJ2K所需的能耗非常低,這個(gè)特性對(duì)于使用電池供電的設(shè)備大有裨益。HTJ2K 支持非常高的樣本精度,允許用HLG 和PQ 等非線性傳遞函數(shù)編碼高動(dòng)態(tài)范圍內(nèi)容。更重要的是,HTJ2K 具有分辨率可伸縮性和區(qū)域可訪問的特性,它允許JPH 文件以極低的能耗預(yù)覽圖片或者是查看圖片某一個(gè)部分。這個(gè)功能所需要的能耗遠(yuǎn)遠(yuǎn)低于使用JPEG 文件格式預(yù)覽所需的能量。
整個(gè)工作流程如圖2的路徑B-E-F-I-K。視頻源或者圖片源首先進(jìn)入HTJ2K 編碼器,編碼成為HTJ2K 格式文件,然后存儲(chǔ)在HTJ2K 儲(chǔ)存庫中,需要使用的時(shí)候從HTJ2K 儲(chǔ)存庫中提取出來由HTJ2K 解碼器解碼,然后展示給用戶。
此外,HTJ2K 與JPIP 標(biāo)準(zhǔn)無縫工作,可以用于JPEG 2000圖像的交互式遠(yuǎn)程瀏覽。這提供了一種高效的機(jī)制來支持從特定網(wǎng)絡(luò)中的設(shè)備遠(yuǎn)程預(yù)覽捕獲的內(nèi)容,行使路徑B-E-F-L (見圖2)。首先視頻源或者圖片源通過HTJ2K 編碼器編碼后生成HTJ2K 格式文件,然后HTJ2K 格式文件存儲(chǔ)到HTJ2K 儲(chǔ)存庫中,JPIP服務(wù)器可直接從HTJ2K儲(chǔ)存庫中提取HTJ2K 格式文件。如果在過程中需使用J2K-1標(biāo)準(zhǔn),可將HTJ2K 可逆轉(zhuǎn)碼器完全嵌入流程中,在HTJ2K 系統(tǒng)圖中行使路徑B-E-F-H-J(見圖2),即在需使用的時(shí)候?qū)腍TJ2K儲(chǔ)存庫中提取出來由HTJ2K 格式文件進(jìn)行HTJ2K到J2K-1的可逆轉(zhuǎn)碼,轉(zhuǎn)成J2K-1格式文件后再交由JPIP服務(wù)器處理,以實(shí)現(xiàn)對(duì)遠(yuǎn)程內(nèi)容的高效瀏覽。
HTJ2K 也可以應(yīng)用在遠(yuǎn)程直播、廣播、視圖查找等方面,工作流程在圖2的HTJ2K 系統(tǒng)圖中執(zhí)行路徑B-E-I-K,利用HTJ2K 極高的編碼和解碼吞吐量,即使在較低的傳輸速率下也具有較高的編碼效率,且視頻流從一端到另外一端具有較低延遲。這些特性允許高質(zhì)量4K 內(nèi)容在傳統(tǒng)IP或本地?zé)o線鏈路上傳輸,節(jié)省了原有傳輸路線的擴(kuò)容問題,降低了投資規(guī)模。
以往使用J2K-1塊編碼算法,大多數(shù)移動(dòng)設(shè)備沒有足夠的CPU 功率來直接壓縮其圖像傳感器能夠產(chǎn)生的高分辨率視頻流。HTJ2K 使用圖2中的路徑B-E-F,通過實(shí)時(shí)產(chǎn)生壓縮流來解決這個(gè)問題。如果后期有需要,之前采集的HTJ2K 格式文件可以被轉(zhuǎn)碼為J2K-1格式,執(zhí)行圖2中路徑FH-G 或F-H-J來完成。
在查看大型圖像時(shí),通常會(huì)按照需要通過改變分辨率來縮放圖片進(jìn)行瀏覽,也會(huì)通過放大某一塊感興趣的區(qū)域進(jìn)行仔細(xì)查看,因此連續(xù)呈現(xiàn)的視圖包含許多共同的代碼塊。每次以某種分辨率呈現(xiàn)感興趣的區(qū)域時(shí),相關(guān)的代碼塊通常都是按需解碼的,可從本地文件或客戶端緩存中動(dòng)態(tài)訪問。
HTJ2K 標(biāo)準(zhǔn)也可以應(yīng)用在大型圖像緩存管理方面。目前有兩種方式,一種是如果源內(nèi)容已經(jīng)使用HTJ2K 編碼器,那么在交互渲染過程中重復(fù)解碼常見的碼塊將比使用J2K-1 編碼算法速度快得多,將大大降低這些應(yīng)用使用的電量。另外一種,如果原始媒體使用J2K-1塊編碼器,則被重復(fù)訪問的代碼塊可以被轉(zhuǎn)換為等效的HT 塊表示并存儲(chǔ)在智能內(nèi)容緩存中,從該緩存中重新呈現(xiàn)將會(huì)變得更加高效。HTJ2K 和J2K-1 都使用了類似的緩存內(nèi)存,并且保留了圖片或者視頻的所有信息。這種類型的應(yīng)用在圖2的HTJ2K 系統(tǒng)圖中執(zhí)行路徑部分或全部路徑為A-D-F-I-K。首先,JPIP 客戶端將生成的J2K-1格式文件經(jīng)由HTJ2K 可逆轉(zhuǎn)碼器轉(zhuǎn)換成為HTJ2K 文件格式,并儲(chǔ)存在HTJ2K 儲(chǔ)存庫中,在使用的過程中HTJ2K 文件經(jīng)HTJ2K 解碼器解碼后,顯示給用戶。
如今,通過各種各樣設(shè)備可實(shí)現(xiàn)Internet瀏覽,這些設(shè)備有多種屏幕尺寸和分辨率。為適應(yīng)不同設(shè)備屏幕,為用戶提供更優(yōu)體驗(yàn),需要調(diào)整適配不同分辨率圖像,甚至要做一定的裁剪來更好地匹配不同設(shè)備屏幕,以便減少所需的帶寬和渲染時(shí)間。這是“響應(yīng)圖像 (Responsive Images)”倡議的動(dòng)機(jī)。
響應(yīng)圖像倡議已經(jīng)存在了好多年,目前得到了所有廣泛使用瀏覽器廠商的支持:例如Firefox 和Chrome從第38版開始支持該倡議;Edge從第18版也開始支持。現(xiàn)有方法是在服務(wù)器端存儲(chǔ)不同分辨率的圖片,當(dāng)設(shè)備用web瀏覽器訪問服務(wù)器時(shí),web瀏覽器加載顯示設(shè)備最匹配的圖像。這要求web服務(wù)器存儲(chǔ)非常大量的不同的但相關(guān)的圖片映像。這種方式增加了服務(wù)器的工作負(fù)載,而且需要增加服務(wù)器的硬盤、內(nèi)存等硬件的投入。
HTJ2K 獨(dú)有的機(jī)制可以更好地實(shí)現(xiàn)響應(yīng)圖像倡議的目標(biāo)。HTJ2K 利用分辨率可伸縮性和隨機(jī)訪問能力,單個(gè)JPH 文件就可以有效地提供圖像所有所需的不同分辨率和圖像裁剪組合,從而減少web服務(wù)器的工作量和對(duì)硬件資源的消耗。
2005年7月,數(shù)字影院倡導(dǎo)組織 (Digital Cinema Initiatives,簡(jiǎn)稱DCI)發(fā)布了 《數(shù)字影院技術(shù)規(guī)范》(V1.0)將JPEG 2000作為數(shù)字電影的編碼格式。在過去的這些日子里,JPEG 2000標(biāo)準(zhǔn)憑借其高壓縮率、高圖像質(zhì)量一直在電影行業(yè)中發(fā)揮著巨大作用。隨著高幀率 (HFR)、高動(dòng)態(tài)范圍(HDR)、大色域、8K、VR 等高新技術(shù)格式電影和媒體產(chǎn)品的發(fā)展驅(qū)動(dòng),JPEG 2000標(biāo)準(zhǔn)的一個(gè)重要缺點(diǎn)——“計(jì)算復(fù)雜”越來越突出,這個(gè)缺點(diǎn)進(jìn)一步限制了其在電影中的應(yīng)用。HTJ2K 標(biāo)準(zhǔn)的出現(xiàn)很大程度上解決了這一問題。
HTJ2K 在整個(gè)JPEG 2000 系列標(biāo)準(zhǔn)加入的內(nèi)容相對(duì)較少,但是卻給JPEG 2000系列標(biāo)準(zhǔn)帶來了全面的改進(jìn)。與原始JPEG 算法相比,HTJ2K 提供了更高的編碼效率、可伸縮性的分辨率、區(qū)域資源的可訪問性和更強(qiáng)大的并行計(jì)算能力,同時(shí)與現(xiàn)有的JPEG 2000 算法相比,實(shí)現(xiàn)了更高的數(shù)據(jù)吞吐量。
HTJ2K 保留了JPEG 2000幾乎所有豐富的特征集外,還額外增加了質(zhì)量可伸縮性,在大大降低計(jì)算復(fù)雜度的同時(shí)大幅提高了數(shù)據(jù)吞吐量 (代價(jià)是編碼效率降低5%~10%)。
HTJ2K 和原來的J2K-1 格式是完全可互換的,允許在捕獲、分發(fā)、存檔、緩存或呈現(xiàn)系統(tǒng)中的任意點(diǎn)合并和可逆轉(zhuǎn)碼,以在不犧牲數(shù)據(jù)完整性的情況下獲得這兩種算法的最佳特性。在轉(zhuǎn)碼過程中,HTJ2K 甚至可以保留非HTJ2K 碼流的所有質(zhì)量分層、配置文件等信息。?
注釋
①Skylake是英特爾第六代微處理器架構(gòu),采用14 納米制程,是Intel Haswell微架構(gòu)及其制程改進(jìn)版Intel Broadwell微架構(gòu)的繼任者。
②JPEG 2000第9部分,也稱為JPIP標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了對(duì)圖像 (包括視頻和動(dòng)畫)如何進(jìn)行高效和響應(yīng)的遠(yuǎn)程交互瀏覽。