摘要:討論了數字電影行業對圖像處理技術的要求,分析了提高數字電影圖像處理性能的幾個關鍵技術點#65377;首先實現了符合數字電影規范的JPEG2000圖像編碼;然后通過優化小波變換的cache命中率#65380;采用MPI并行計算#65380;優化文件系統以及優化編譯等方法,對數字電影中的圖像處理技術進行了全面的研究和實現,大幅度提高了圖像的處理效率#65377;
關鍵詞:JPEG2000; 數字電影; 消息傳遞接口; 優化
中圖分類號:TP391文獻標志碼:A
文章編號:1001-3695(2007)10-0185-03
2004年,數字電影組織(digital cinema initiatives,DCI)選擇使用JPEG2000作為未來數字電影圖像的壓縮格式#65377;JPEG2000是最新的靜態圖像壓縮國際標準,由聯合攝影專家組(Joint Photographic Experts Group)于2000年制定#65377;作為JPEG的后繼者,JPEG2000采用小波變換和位平面熵編碼器,可獲得當今最先進的壓縮性能#65377;在數字電影處理過程中,每一幀圖像通過JPEG2000壓縮算法獨立壓縮編碼后,按照DCI規范對每幀JPEG2000碼流進行加密#65380;封裝,與音頻流#65380;字幕流統一封裝成為DCP(digital cinema package),傳輸到影院進行放映#65377;圖像壓縮階段是數字電影制作過程中十分重要且最耗時的部分#65377;
1JPEG2000編碼結構
1.1JPEG2000編碼結構
從圖1可以看出,將JPEG2000分為以下編碼階段:a)完成RGB圖像顏色分量至YCbCr色度空間的轉換;b)小波變換(wavelet transform)過程,它將每個分量分解到多個分辨率級別中,每個分辨率級別又包含一系列子帶;c)小波變換之后就是量化(quantization)階段,每個小波子帶系數被量化,然后被劃分到一系列的分區(precincts)和編碼塊(code blocks)中;d)熵編碼(entropy coding)由三個編碼過程(coding pass)#65380;上下文選擇及算數編碼組成;e)每個編碼塊中被選擇的編碼過程在最后的打包(packetization)階段被打包,所有的數據包被匯集在最終的碼流中#65377;
1.2DCI對碼流的規范
在DCI規范中對JPEG2000的碼流進行了一些條件約束#65377;以下列舉出部分2K圖像碼流的約束[1]#65377;a)2K(2 048×1 080)圖像的漸進性順序必須是分量—位置—分辨率—層(CPRL);b)所有分辨率下的分區尺寸為256×256,除了最低頻率子帶的分區尺寸為128×128;c)編碼塊大小必須是32×32;d)默認9/7雙正交濾波,五級小波變換;e)原始圖像是12bpp的RGB彩色圖像#65377;
2JPEG2000運行時分析
JPEG2000標準Part5提供了兩個參考執行程序Jasper和jj2000#65377;Jasper基于C語言編寫;jj2000是用面向對象語言Java來編寫#65377;由后面的運行時分析可以看出,60%的編碼時間耗費在分量內變換,即小波變換過程中#65377;如果想改進執行速度,必須重點對小波變換部分進行優化#65377;JPEG2000提供了兩種操作模式,即有損和無損編碼#65377;在無損編碼模式下使用的是可逆5/3整數變換;而在有損編碼模式下使用的是不可逆9/7實數變換#65377;在有損編碼模式下的壓縮效果會更好#65377;
本文的目標代碼是JPEG2000的參考程序之一——Jasper[2]#65377;所有實驗測試結果均在Intel XeonTM 2.8 GHz(512 KB cache)處理器上執行#65377;
圖2顯示了Jasper的主要處理階段耗時#65377;使用DCI規范規定的2K(2 048×1 080)與4K(4 096×2 160)兩種分辨率大小#65380;深度為8 bpp和12 bpp的RGB彩色圖像,采用無損(5/3整數變換)和有損(9/7實數變換)兩種小波變換模式進行測試#65377;
根據分析結果可以很明顯地看出,對于各種變換,二維小波變換和編碼塊的位平面編碼是最耗時的兩個部分#65377;編碼塊部分由實際的數據#65380;控制獨立性#65380;不規則的內存讀取模式等各種因素決定,所以編碼塊部分暫時不考慮#65377;
3JPEG2000編碼在數字電影應用中的優化
3.1離散小波變換
離散小波變換(DWT)在JPEG2000的編碼執行時間中占有相當大的百分比#65377;近些年,國際上對JPEG2000的離散小波變換作了大量的研究,尤其是liftingbased 2D離散余弦變換的優化,大部分優化工作均針對改進cache的利用率[3,4]#65377;
每一個分辨率級別圖像的二維小波分解可以看做是沿著每行和每列的一維變換#65377;每個級別的小波變換首先進行水平變換,然后再進行垂直變換#65377;在Jasper的測試結果中顯示,垂直過濾的執行時間是同等條件下水平過濾執行時間的近10倍#65377;文獻[3]中分析到,對于寬度是2的冪的大圖像且過濾器長度大于4時,圖像的一整行均會映射到一個單獨的緩沖區,導致在垂直小波過濾的過程中會產生大量的cache不命中這些cache的不命中,會帶來內存的反復讀寫,致使執行時間激增#65377;針對這種cache不命中的情況,文獻[3]提出了兩種方案:a)對圖像列數擴展(row extension),使得圖像寬度不是2的冪;b)聚合(aggregation)方法,即同時過濾相鄰的數行,而不是按順序逐行過濾#65377;在導入圖像一行的像素進入cache中時,相應的相鄰行數據也會被導入到cache中,這樣可以降低cache不命中率#65377;根據數字電影圖像的圖像定義,參考第二種提高cache利用率的方案對JPEG2000編碼進行了優化#65377;優化之后,使得對于2K圖像的小波變換部分速度提高了四倍以上#65377;DWT的加速同時也極大地影響了整個編碼速度#65377;
圖3是對小波變換部分優化后的運行時圖#65377;從圖3中可以分析出,2K圖像的提速使得整體編碼加速比約為2;4K圖像加速比約為2#65377;
3.2MPI并行優化
MPI是基于消息傳遞編寫并行程序的一種用戶界面#65377;MPI是目前應用最廣的并行程序設計平臺,幾乎被所有并行計算環境(共享和分布式存儲并行機#65380;MPP#65380;機群系統等)和流行的多進程操作系統(UNIX#65380;Windows NT)所支持,基于它開發的應用程序具有最佳的可移植性[5]#65377;
使用并行機處理數據時,首先要解決的是工作負載的平衡問題#65377;合理劃分工作任務,使得各個運行節點平均分擔運算任務,才能近似同時運算#65380;同時完成任務,最大地發揮并行機的性能#65377;合理劃分任務粒度是另一個需要解決的重要問題#65377;通常用R/C的比值作為衡量任務粒度的尺度#65377;其中:R代表程序的執行時間;C代表用于通信的開銷#65377;在粗粒度(coarse grain)的并行情況下,R/C的比值較大,每個單位計算只需要少量的通信#65377;在細粒度(fine grain)并行情況下,R/C比值較小,每個單位計算有很大的通信量和其他開銷#65377;在粗粒度的并行情況下,并行節點之間額外的通信開銷較小,并行程序能夠獲得較大的加速性能#65377;但是由于任務粒度較大,無法完全發掘程序的并行性;在細粒度的并行情況下,每個并行節點可以將一個程序盡可能地分解成能并行執行的小任務,充分發掘程序的并行性#65377;但是由于并行執行的任務數量較多,并行節點之間的通信開銷大大增加,降低了并行程序的加速性能#65377;
數字電影應用中,系統連續處理圖像視頻流#65377;根據這個特性放棄了單幀圖像的幀內多線程并行處理,而采用了粗粒度的幀間并行處理,即每個進程獨立處理一整幀原始視頻圖像#65377;這樣可以減少進程間的互相通信,帶來最大效率的整體加速比#65377;如圖4所示,進程0負責讀取每幀圖像,按順序分發給進程1~n-1#65377;每個進程接收到圖像數據后,調用encode函數獨立編碼每幀圖像#65377;處理完畢后,將壓縮后的JPEG2000碼流按照幀順序返回給進程0#65377;
在本研究中,使用曙光并行刀片機平臺#65377;曙光刀片機是一臺基于消息傳遞機制的大規模并行計算機系統(MPP),它由八個SMP超節點組成,每個SMP超節點具有兩個超線程技術(HT)的Intel XeonTM 2.8 GHz CPU及512 KB二級緩存,這兩個CPU共享2 GB內存#65380;40 GB硬盤#65377;八個SMP超節點之間通過千兆以太網連接,對外部網絡通過百兆以太網連接#65377;每個節點上安裝Red hat 9.0 Linux操作系統, GCC 4.1編譯器,基于消息的編程模型MPI 2.0版#65377;
圖5顯示了2 K分辨率圖像在并行環境下的執行時間#65377;被測圖為36 bit深度的RGB彩色圖像,采取9/7的有損小波變換模式#65377;測試過程共開啟六個CPU,每個CPU為Intel XeonTM 2.8 GHz處理器#65377;
3.3其他優化手段
1)Intel MMXTM技術由于目前的處理平臺是Intel IA32系列,采用指令集優化時,可以考慮使用Intel的MMXTM技術#65377;該技術是對Intel體系結構指令集的擴展,使用了單指令多數據技術,以并行方式處理多個數據元素,從而提高多媒體軟件的運行速度[6]#65377;
2)通過編譯手段優化隨著編譯技術的成熟,很多編譯器都實現了較強的代碼優化功能,可在編譯過程中自動對應用程序進行優化#65377;如在研究中使用Intel compiler C++[7]代替GCC,也可以使編碼器在執行效率上得到一定程度的提高#65377;另外在計算機體系結構上,還有使用了如IA32系列的Intel SSE/SSE2/SSE3[8]指令集結構擴展技術來進一步提高性能#65377;
4結束語
本研究在JPEG2000現有的實現Jasper上,根據DCI規范的特性對JPEG2000的編碼處理進行了改進和優化,大大縮短了數字電影的圖像編碼時間,在數字電影制作過程中具有舉足輕重的作用#65377;表1是對原始Jasper代碼的小波變換部分進行優化后的執行時間情況#65377;被測圖像包括24 bit深度和36 bit深度的2K及4K RGB彩色圖像,包括有損(9/7)和無損(5/3)兩種小波變換模式#65377;
表2是2K分辨率圖像在并行環境下的執行時間#65377;被測圖為36 bit深度的RGB彩色圖像,采取9/7的有損小波變換模式#65377;環境為MPP并行計算環境,共開啟六個CPU,每個CPU為Intel XeonTM 2.8 GHz處理器#65377;
可以看出經過優化之后,與原始編碼執行時間相比,2K圖像的平均每幀執行時間加速比speedup約為15倍#65377;
參考文獻:
[1]Digital Cinema Initiatives, LLC member representatives committee. Digital cinema system specification v1.0[S]. 2005.
[2]ADAMS M, WARD R. Jasper: a portable flexible opensource software tool kit for image coding/processing[C]//Proc of IEEE Int Conf on Acoustics,Speech,and Signal Processing.Montreal:[s.n.],2004.
[3]MEERWALD P, NORCEN R, UHL A. Cache issues with JPEG2000 wavelet lifting[C]//Proc of Visual Communications and Image Processing. San Jose:[s.n.], 2002:626-634.
[4]MEERWALD P, NORCEN R, UHL A. Parallel JPEG2000 image coding on multiprocessors[C]//Proc of the 16th Int Parallel and Distributed Processing Symp. Washington, DC: IEEE Computer Society, 2002.
[5]MICHAEL J Q. Parallel programming in C with MPI and openMP[M].[S.l.]: The McGrawHill Companies, Inc, 2004.
[6]MITTAL M, PELEG A, WEISER U. MMX technology architecture overview[J]. Intel Technology Journal, 1997(Q3):12.
[7]Intel. Intel C/C++ compilers for Linux[EB/OL].[2006-09-01].http://www.intel.com/software/products/compilers.
[8]SWELENS W. The lifting scheme: a construction of second generation wavelets[J]. SIAM J on Mathematical Analysis, 1998,29(2):511-546.
[9]MICHAEL W M, BILGIN A. JPEG2000 for digital cinema[J]. SMPTE Motion Imaging Journal, 2005,114(5-6):202-209.
[10]TAUBMAN S, MARCELLIN M W. JPEG2000: image compression fundamentals, standards, and practice[M].[S.l.]: Kluwer Academic Publishers, 2002.
[11]GARCIA C, TENLLADO C, PINUEL L, et al. JPEG2000 optimization in general purpose microprocessors[C]//Proc of Int Conf on Parallel Computing.[S.l.]: ArTeCS Group, 2005.
[12]YU Wei, FRITTS J, SUN F. An efficient packetization algorithm for JPEG2000[C]//Proc of Int Conf on Image Processing. 2002.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”