專利名稱:一種高速jpeg解碼的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及應(yīng)用于多媒體領(lǐng)域中對JPEG文件進行快速、高效解碼的方法,尤 其涉及一種高速JPEG解碼的方法。
背景技術(shù):
為了滿足多媒體領(lǐng)域中對JPEG文件進行快速、高效解碼的要求,同時滿足高 清視頻的解碼計算速度的要求,流暢的支持高清解碼,有效利用顯卡GPU的計算 資源,減少對CPU資源的耗費。JPEG算法瓶頸在完全串行的哈夫曼解碼過程和 IDCT的計算復雜性高,現(xiàn)有的算法經(jīng)過長時間的優(yōu)化已經(jīng)很難在得到性能上的突 破。
發(fā)明內(nèi)容
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷,提供一種經(jīng)過簡單的改 造,實現(xiàn)支持高清視頻的解碼高速JPEG解碼的方法。
本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn) 一種高速JPEG解碼的方法,其 特征在于,該方法包括
(1) 并行哈夫曼解碼算法設(shè)計與實現(xiàn)
a. 從編碼塊中提取實際局部編碼的數(shù)據(jù);
b. 根據(jù)提取的局部編碼數(shù)據(jù)通過全局檢查恢復為原始的編碼數(shù)據(jù);
(2) 并行IDCT算法設(shè)計與實現(xiàn)
a. 將每個處理單元用到的操作數(shù)據(jù)復制到共享內(nèi)存中;
b. 每個處理單元計算IDCT兩個步驟,中間需要進行一次同步操作,確定 所有處理單元完成上一步驟;
c. 每個處理單元將計算完成后的結(jié)果經(jīng)過量化恢復為實際的圖像數(shù)據(jù)。
所述的步驟(1)中的從編碼塊中提取實際局部編碼的數(shù)據(jù)包括-(1) 動態(tài)檢測,直接從JPEG編碼數(shù)據(jù)流中掃描編碼塊的結(jié)束編碼符;
(2) 靜態(tài)索引,在JPEG編碼的過程中,保存每個編碼塊的地址位置,建立 整個圖像編碼塊的索引結(jié)構(gòu)。
與現(xiàn)有技術(shù)相比,本發(fā)明在普通配置有當前主流顯卡的PC機上,可以實現(xiàn)分 辨率為(1024*768) JPEG圖像的實時解碼每秒60FPS以上,CPU占有率小于10%, 可以經(jīng)過簡單的改造,實現(xiàn)支持高清視頻的解碼。
圖1是本發(fā)明一種高速JPEG解碼的方法的效果圖; 圖2是原始JPEG解碼方法效果圖3是本發(fā)明一種高速JPEG解碼的方法的動態(tài)檢測解碼方法示意圖; 圖4是本發(fā)明 一種高速JPEG解碼的方法的靜態(tài)索引解碼方法示意圖; 圖5是本發(fā)明一種高速JPEG解碼的方法的通用CPU解碼計算示意圖; 圖6是本發(fā)明一種高速JPEG解碼的方法的并行處理器解碼計算示意圖; 圖7是本發(fā)明一種高速JPEG解碼的方法的并行哈夫曼解碼過程示意圖; 圖8是本發(fā)明一種高速JPEG解碼的方法的并行IDCT計算過程示意圖。
具體實施例方式
為了滿足多媒體領(lǐng)域中對JPEG文件進行快速、高效解碼的要求,同時滿足高 清視頻的解碼計算速度的要求,流暢的支持高清解碼,有效利用顯卡GPU的計算 資源,減少對CPU資源的耗費。JPEG算法瓶頸在完全串行的哈夫曼解碼過程和 IDCT的計算復雜性高,本發(fā)明針對哈夫曼解碼過程的改進提供兩種技術(shù)解決方案 一是在編碼過程中記錄編碼塊的地址,建立整個數(shù)據(jù)流的索引結(jié)構(gòu);二是動態(tài) 進行數(shù)據(jù)流掃描,檢測編碼塊的位置。通過以上兩種方案可以消除JPEG算法解碼 過程中串行化的問題;本發(fā)明對IDCT算法進行并行化改進,完全可以利用并行計 算處理器的計算能力,達到50到100倍加速比。
并行哈夫曼解碼算法。哈夫曼解碼算法由于其固有的性質(zhì),要求完全串行化地 從數(shù)據(jù)流中提出壓縮數(shù)據(jù)。不利于在并行計算機處理器上進行并行解碼。因此本發(fā) 明需要對哈夫曼解碼算法進行并行化改造。有兩種改造方法 一是在編碼過程中記 錄每個編碼塊的位置,建立整個壓縮結(jié)構(gòu)的索引,從而在解壓過程中消除每個塊之間的相關(guān)性,實現(xiàn)并行化解碼;二是并行動態(tài)檢測編碼結(jié)尾標志,并通過檢査全局 一致性,可以最終確定JPEG壓縮結(jié)構(gòu),實現(xiàn)正確的并行化解碼。
JPEG核心算法的GPU算法實現(xiàn)?,F(xiàn)在主流的顯卡上都有一個可編程圖像處理 器,其計算速度相當于普通CPU的50到100倍。將JPEG解碼過程在GPU上實 現(xiàn)可以達到很高的加速比。但是GPU計算結(jié)構(gòu)不同普通CPU,算法實現(xiàn)受到一定 的限制,通過精簡優(yōu)化,本發(fā)明最終實現(xiàn)了 JPEG核心算法從CPU到GPU的移植。
本發(fā)明為了滿足播放高清以及多媒體信息處理中對JPEG圖像解碼速度的要 求,通過提高本算法的并行性,將算法移植到并行計算機上進行加速。實現(xiàn)了很高 的加速比,達到實際應(yīng)用的需求,本發(fā)明還可以為當前多種多媒體應(yīng)用提供強大的 加速支持,比如圖形內(nèi)容的搜索、多媒體信息庫、圖像處理等應(yīng)用。
JPEG解碼算法是一個本質(zhì)上串行的算法,在CPU上實現(xiàn),整個算法的瓶頸主 要存在于以下兩個部分
一、 哈夫曼編碼的整體串行性,哈夫曼編碼整體上是一個嚴格串行的過程,由 于前后編碼塊存在相關(guān)性,即使在雙核的CPU上也難以實現(xiàn)加速。
二、 IDCT變換的計算復雜性,IDCT變換是一個二維矩陣乘法計算,具有很 高的計算復雜性,在CPU上的實現(xiàn)特別是X86結(jié)構(gòu)的CPU上,占用很大的CPU 計算時間,效率比較低下。
本發(fā)明針對JPEG以上兩個解碼瓶頸進行優(yōu)化,實現(xiàn)JPEG解碼加速。主要進 行哈夫曼解碼并行化改進和IDCT并行化改進。 哈夫曼解碼并行化改進
哈夫曼編碼壓縮算法利用信息的統(tǒng)計規(guī)律降低信息的冗余度,由于統(tǒng)計過程利 用到全局的信息,因此哈夫曼編碼的信息是整體相關(guān)的,因此首先要消除整體編碼 信息的相關(guān)性。本發(fā)明利用兩種辦法來消除編碼信息之間的相關(guān)性
一種方法是動態(tài)檢測,就是直接從JPEG編碼數(shù)據(jù)流中掃描編碼塊的結(jié)束編碼 符,由于每個編碼塊包含圖像塊的直流和交流系數(shù),只要確定了圖像塊的直流與交 流系數(shù),就可以單獨計算恢復本塊原始圖像。動態(tài)檢測方法優(yōu)點是不需要額外的數(shù) 據(jù)結(jié)構(gòu),也不需要對原始的JPEG文件進行格式轉(zhuǎn)換;缺點是編碼塊結(jié)束符在哈夫 曼編碼中有二義性,就是有可能出現(xiàn)錯誤,只有通過全局數(shù)據(jù)流檢查來檢測錯誤編 碼塊結(jié)束符。這樣出現(xiàn)浪費計算。
另一種方式靜態(tài)索引,就是在JPEG編碼的過程中,保存每個編碼塊的地址位置,建立整個圖像編碼塊的索引結(jié)構(gòu)。在解碼是,利用索引數(shù)據(jù)結(jié)構(gòu)直接定位每塊 圖像的位置,然后同時進行恢復計算。靜態(tài)索引方法優(yōu)點是計算效率高,解碼速度 更快,因為直接可以定位編碼塊結(jié)束符,不需要掃描,無浪費計算。缺點是需要額 外的數(shù)據(jù)結(jié)構(gòu),增加壓縮數(shù)據(jù)的體積,降低了壓縮率。
IDCT算法并行化改進
IDCT算法是一個矩陣乘法計算,本身具有很高的并行性,在并行計算機上實 現(xiàn)矩陣乘法計算需要計算機本身的數(shù)據(jù)一致性接口來支持。圖形處理器提供大量輕 量級的線程來處理相對簡單的計算過程,并且提供線程之間的共享內(nèi)存以及同步工 具。這樣可以滿足IDCT并行計算,達到解碼的基本要求。
在通用CPU上的實現(xiàn),整個矩陣計算都是串行計算,對于X86架構(gòu)的計算機 來說,計算型指令并不能充分利用整個計算機的資源,但是占用所有的計算時間, 因此計算效率不是很高,不能充分發(fā)揮處理器的效能。
而在并行處理器上實現(xiàn),所有的計算單元很適合處理計算型的指令,雖然每個 計算單元的計算能力趕不上通用CPU的處理能力,但是大量計算單元產(chǎn)生的總體 性能遠遠大于通用CPU的處理能力,因此在具有并行處理器結(jié)構(gòu)的GPU上實現(xiàn) IDCT算法,可以達到很高計算性能。
JPEG算法GPU實現(xiàn)
解決了 JPEG算法主要的計算問題,就可以有效的在并行計算機結(jié)構(gòu)的處理器 上實現(xiàn)JPEG算法。主要實現(xiàn)分為并行哈夫曼解碼算法和并行IDCT算法。
一、 并行哈夫曼解碼算法設(shè)計與實現(xiàn)
并行哈夫曼解碼算法實現(xiàn)可以分為兩個步驟首先從編碼塊中提取實際局部編 碼的數(shù)據(jù);然后根據(jù)提取的局部編碼數(shù)據(jù)通過全局檢査恢復為原始的編碼數(shù)據(jù)。(如 圖5)
二、 并行IDCT算法設(shè)計與實現(xiàn)
JPEG壓縮圖像具有分塊屬性,圖像分塊之間的無相關(guān)性,圖像分塊內(nèi)IDCT 計算有相關(guān)性。每個分塊的計算由并行處理器的處理器塊來進行計算,處理器塊具 有共享內(nèi)存便于塊內(nèi)處理器進行通信,塊內(nèi)處理器可以進行計算同步操作。算法分 為三步首先將每個處理單元用到的操作數(shù)據(jù)復制到共享內(nèi)存中;接著每個處理單 元計算IDCT兩個步驟,中間需要進行一次同步操作,確定所有處理單元完成上一 步驟;最后每個處理單元將計算完成后的結(jié)果經(jīng)過量化恢復為實際的圖像數(shù)據(jù)。如圖1與圖2所示,原始JPEG解碼方法在哈夫曼解碼、數(shù)據(jù)全局性恢復及量 化以及IDCT計算過程中是經(jīng)典的串行處理方法,計算資源利用率低,速度慢。高 速JPEG解碼的方法在哈夫曼解碼、數(shù)據(jù)全局性恢復及量化以及IDCT計算過程中 是并行處理方法,計算資源利用率高,速度快。
如圖3所示,動態(tài)檢測解碼過程中,并行處理器從頭掃描編碼數(shù)據(jù),知道檢測 到對應(yīng)的編碼塊結(jié)束符,然后開始哈夫曼解碼,編碼塊結(jié)束符在哈夫曼編碼中有二 義性,有可能出現(xiàn)定位錯誤,最后通過全局數(shù)據(jù)流檢査來檢測錯誤編碼塊結(jié)束符。 將正確的解碼數(shù)據(jù)合并起來得到本圖像編碼塊的局部系數(shù)矩陣。
如圖4所示,靜態(tài)索引解碼過程中,并行處理器通過索引直接計算得到對應(yīng)的 編碼塊結(jié)束符,然后進行哈夫曼解碼,得到本圖像編碼塊的局部系數(shù)矩陣。
如圖5所示,通用CPU解碼計算過程,為了計算結(jié)果矩陣,CPU需要依次計 算結(jié)果矩陣的每個元素,整個計算過程耗費CPU時間多,計算效率低。
如圖6所示,并行處理器解碼計算過程,為了計算結(jié)果矩陣,每個處理單元同 時計算對應(yīng)結(jié)果矩陣的元素,計算效率高。
如圖7所示,并行哈夫曼解碼過程
(1) 每個處理單元定位對應(yīng)的編碼塊。
(2) 每個處理單元進行哈夫曼解碼,計算對應(yīng)圖像編碼塊的DC和AC系數(shù)。
(3) 進行整體一致性檢查,恢復所有圖像編碼塊實際的DC和AC系數(shù)。 如圖8所示,并行IDCT計算過程
(1) 每個處理器塊將對應(yīng)圖像編碼塊的系數(shù)復制到共享內(nèi)存中;
(2) 進行IDCT列計算;
(3) 進行處理器塊內(nèi)的同步操作,保證所有列計算結(jié)束;
(4) 進行IDCT行計算;
(5) 計算對應(yīng)圖像的實際顏色值。
權(quán)利要求
1.一種高速JPEG解碼的方法,其特征在于,該方法包括(1)并行哈夫曼解碼算法設(shè)計與實現(xiàn)a.從編碼塊中提取實際局部編碼的數(shù)據(jù);b.根據(jù)提取的局部編碼數(shù)據(jù)通過全局檢查恢復為原始的編碼數(shù)據(jù);(2)并行IDCT算法設(shè)計與實現(xiàn)a.將每個處理單元用到的操作數(shù)據(jù)復制到共享內(nèi)存中;b.每個處理單元計算IDCT兩個步驟,中間需要進行一次同步操作,確定所有處理單元完成上一步驟;c.每個處理單元將計算完成后的結(jié)果經(jīng)過量化恢復為實際的圖像數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的一種高速JPEG解碼的方法,其特征在于,所述的步 驟(1)中的從編碼塊中提取實際局部編碼的數(shù)據(jù)包括(1) 動態(tài)檢測,直接從JPEG編碼數(shù)據(jù)流中掃描編碼塊的結(jié)束編碼符;(2) 靜態(tài)索引,在JPEG編碼的過程中,保存每個編碼塊的地址位置,建立 整個圖像編碼塊的索引結(jié)構(gòu)。
全文摘要
本發(fā)明涉及一種高速JPEG解碼的方法,該方法包括并行哈夫曼解碼算法設(shè)計與實現(xiàn),從編碼塊中提取實際局部編碼的數(shù)據(jù);根據(jù)提取的局部編碼數(shù)據(jù)通過全局檢查恢復為原始的編碼數(shù)據(jù);并行IDCT算法設(shè)計與實現(xiàn),將每個處理單元用到的操作數(shù)據(jù)復制到共享內(nèi)存中;每個處理單元計算IDCT兩個步驟,中間需要進行一次同步操作,確定所有處理單元完成上一步驟;每個處理單元將計算完成后的結(jié)果經(jīng)過量化恢復為實際的圖像數(shù)據(jù)。與現(xiàn)有技術(shù)相比,本發(fā)明在普通配置有當前主流顯卡的PC機上,可以實現(xiàn)分辨率為(1024*768)JPEG圖像的實時解碼每秒60FPS以上,CPU占有率小于10%,可以經(jīng)過簡單的改造,實現(xiàn)支持高清視頻的解碼。
文檔編號H04N7/26GK101626504SQ20081004040
公開日2010年1月13日 申請日期2008年7月9日 優(yōu)先權(quán)日2008年7月9日
發(fā)明者秦永進, 飛蘋果 申請人:上海飛來飛去多媒體創(chuàng)意有限公司