專利名稱:一種jpeg圖像局部解碼方法及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及一種JPEG圖像局部解碼方法。
技術(shù)背景JPEG是Joint Photographic Experts Group (4關(guān)合圖^象專家纟且)的縮 寫,是一種最為常用的圖像編碼格式。JPEG有四種編碼;漠式,分別為順序 (Sequential )、 累進(jìn)(Progressive )、 無(wú)損 (Lossless )、 層次 (Hierarchical )。數(shù)據(jù)壓縮技術(shù)的理論基礎(chǔ)就是信息論。信息論中的信源編碼理論解決 的主要問(wèn)題(1 )數(shù)據(jù)壓縮的理論極限(2 )數(shù)據(jù)壓縮的基本途徑。根據(jù) 信息論的原理,可以找到最佳數(shù)據(jù)壓縮編碼的方法,數(shù)據(jù)壓縮的理論極限 是信息熵。如果要求編碼過(guò)程中不丟失信息量,即要求保存信息熵,這種 信息保持編碼叫熵編碼,是根據(jù)消息出現(xiàn)概率的分布特性而進(jìn)行的,是無(wú) 損數(shù)據(jù)壓縮編碼。而在熵編碼過(guò)程當(dāng)中,又有哈夫曼編碼和算術(shù)編碼兩種。 其中,絕大多數(shù)JPEG都是順序哈夫曼編碼的,特別是數(shù)碼相機(jī)拍出的圖片 中,無(wú)一例外的使用了這種格式。對(duì)于順序哈夫曼編碼的JPEG圖片,其編碼方式是把像素分為Y, Cb, Cr三個(gè)色彩分量,以最小編碼單元(MCU)塊作為基本單位從左到右從上到 下進(jìn)行掃描。MCU塊有8*8, 8*16, 16*8, 16*16等幾種大小。在實(shí)際應(yīng)用中,有時(shí)候需要解碼其中的局部圖像內(nèi)容。但是,在通常 情況下,我們必須對(duì)于全部?jī)?nèi)容進(jìn)行處理才能夠得到部分的內(nèi)容,究其原 因有二首先,JPEG并沒(méi)有標(biāo)注碼流位置和圖像位置的索引,故只能通過(guò) 整個(gè)碼流的尋找得到特定圖像;其次,JPEG在傳輸每一個(gè)MCU的過(guò)程中, 其直流分量傳輸?shù)氖桥c上一 MCU塊之間的差分值。也就是說(shuō),后面的MCU 解碼是有賴于前面解碼的過(guò)程的。如果只是為了得到圖片的一小部分而解 碼整張圖片,速度勢(shì)必較慢。而且,如果JPEG數(shù)據(jù)存儲(chǔ)于外部存儲(chǔ)介質(zhì)之 中,往往還需要很長(zhǎng)的數(shù)據(jù)讀取時(shí)間。發(fā)明內(nèi)容本發(fā)明提供了一種能解決以上問(wèn)題的JPEG圖像局部解碼方法。在第一方面,本發(fā)明提供了一種用于JPEG圖像局部解碼的方法,包括 在對(duì)JPEG圖像進(jìn)行全局解碼時(shí)生成記錄;以及4艮據(jù)所述記錄對(duì)所述JPEG 圖像進(jìn)行局部解碼。在第二方面,本發(fā)明提供了一種JPEG圖像局部解碼設(shè)備,包括用于 在對(duì)JPEG圖像進(jìn)行全局解碼時(shí)生成記錄的模塊;以及用于根據(jù)所述記錄對(duì) 所述JPEG圖像進(jìn)行局部解碼的模塊。在本發(fā)明的一個(gè)實(shí)施例中,在開(kāi)始解碼每個(gè)最左側(cè)最小解碼單元時(shí)進(jìn) 行記錄。在本發(fā)明的另一個(gè)實(shí)施例中,所述記錄包括所述JPEG圖像的碼流位置 和直流分量,所述碼流位置包括字節(jié)位置,比特位置;所述直流分量包括Y 信號(hào)直流分量,Cb信號(hào)直流分量,Cr信號(hào)直流分量。在本發(fā)明的又一個(gè)實(shí)施例中,所述記錄還包括直流信號(hào)歸零計(jì)數(shù)值。 在本發(fā)明的還一個(gè)實(shí)施例中,根據(jù)所述直流信號(hào)歸零計(jì)數(shù)值來(lái)確定直 流信號(hào)歸零計(jì)數(shù)值的初始值。本發(fā)明通過(guò)得到圖片碼流位置和直流分量的索引值,從而實(shí)現(xiàn)了對(duì) JPEG圖像的局部解碼,大大縮短了解碼時(shí)間。
下面將參照附圖對(duì)本發(fā)明的具體實(shí)施方案進(jìn)行更詳細(xì)的說(shuō)明,在附圖中圖l是本發(fā)明解碼方法的第一次解碼的流程圖; 圖2是圖l解碼的示例框圖; 圖3是本發(fā)明解碼方法的部分解碼的流程圖;以及 圖4是圖3解碼的示例框圖。
具體實(shí)施方式
本方法適用于需要多次部分解碼的情況(如圖片的放大瀏覽),首先 需要全部解碼一次生成索引,然后根據(jù)索引即可快速部分解碼圖片。圖l是本發(fā)明解碼方法的第一次解碼的流程圖。如圖1所示,第一次解碼時(shí)首先按照正常的方式解碼文件頭,并將Y 信號(hào)直流分量(Ycoff ) , Cb信號(hào)直流分量(Cbcoff ) , Cr信號(hào)直流分量 (Crcoff ),以及直流信號(hào)歸零計(jì)數(shù)值(Interval)置為0。然后依次開(kāi)始 解碼MCU。當(dāng)不涉及換行時(shí),所有操作均與正常模式一致;只有當(dāng)換行出現(xiàn) 時(shí),需要將此時(shí)解碼的碼流位置(包括字節(jié)位置與比特位置),Y信號(hào)直流 分量,Cb信號(hào)直流分量,Cr信號(hào)直流分量,直流信號(hào)歸零計(jì)數(shù)值輸出并記 錄下來(lái)。應(yīng)當(dāng)指出,也可以不記錄直流信號(hào)歸零計(jì)數(shù)值,而在后邊的局部 解碼時(shí)通過(guò)計(jì)算得出。比如,直流信號(hào)歸零計(jì)數(shù)值的初始值等于起始的MCU 號(hào)% (取余數(shù))從文件頭中提取得到的JPEG間隔長(zhǎng)度。圖2是圖1解碼的示例框圖。如圖2所示,圖2代表了一張128*128的圖片,其每一個(gè)MCU的大小 為16*16,故其擁有64個(gè)MCU,在編碼或解碼的過(guò)程中,按照0-63的順序 進(jìn)行掃描。當(dāng)解碼0-7的MCU時(shí),由于不進(jìn)行換行,處理結(jié)果與正常方式 一致,當(dāng)解碼第7個(gè)MCU之后,由于換行,則輸出當(dāng)前碼流位置(包括字 節(jié)位置與比特位置),Y信號(hào)直流分量,Cb信號(hào)直流分量,Cr信號(hào)直流分 量,直流信號(hào)歸零計(jì)數(shù)值,這個(gè)狀態(tài)也是第8個(gè)MCU起始時(shí)的狀態(tài)。同理, 當(dāng)?shù)?5、 23、 31、 39、 47、 55、 63個(gè)MCU解碼完成后,也需要輸出相應(yīng)的 值,這些值分別代表第16、 24、 32、 40、 48、 56、 64 (已結(jié)束)個(gè)MCU起 始時(shí)的狀態(tài)。圖3是本發(fā)明解碼方法的部分解碼的流程圖。如圖3所示,局部解碼的流程如下首先根據(jù)部分解碼的圖片位置計(jì) 算需要解碼的MCU區(qū)間。計(jì)算方法是起始MCU=(圖像左上角縱坐標(biāo)/ MCU 高度)* ((圖像寬度+ MCU寬度-1) / MCU寬度),結(jié)束MCU =((圖像 右下角縱坐標(biāo)+ MCU高度-1 ) / MCU高度)* ((圖像寬度+ MCU寬度-1) / MCU 寬度)-1。故使用起始MCU到結(jié)束MCU+1之間的數(shù)據(jù),數(shù)據(jù)的起始點(diǎn)是起 始MCU處輸出的碼流位置(包括字節(jié)位置與比特位置),終止點(diǎn)是結(jié)束MCU+1 處的輸出的碼流位置(包括字節(jié)位置與比特位置)。同時(shí)起始MCU處輸出 的Y信號(hào)直流分量,Cb信號(hào)直流分量,Cr信號(hào)直流分量,以及直流信號(hào)歸 零計(jì)數(shù)器輸入給解碼器作為解碼時(shí)的初值,開(kāi)始解碼,直到解碼完成。圖4是圖3解碼的示例框圖。如圖4所示,如果圖2的圖片需要解碼(40, 24 )到(103, 71)這個(gè) 矩形區(qū)域,則計(jì)算的起始MCU = ( 24 / 16 ) * ( ( 128 + 16 — 1 ) / 16 )= 8,終止MCU = ( ( 71+16-1 ) /16 ) * ( ( 128 + 16 - 1 ) / 16 ) - 1= 39。 故解碼需要的數(shù)據(jù)就是記錄8的碼流位置到記錄40的碼流位置之間的數(shù) 據(jù)。同時(shí),將記錄8的信號(hào)直流分量,Cb信號(hào)直流分量,Cr信號(hào)直流分量, 以及直流信號(hào)歸零計(jì)數(shù)器輸入給解碼器作為解碼時(shí)的初值,開(kāi)始解碼,解 碼第8到39個(gè)MCU,并輸出相關(guān)的部分,直到解碼完成。通過(guò)這樣的運(yùn)算, 我們共解碼32個(gè)MCU模塊,比直接解碼節(jié)省了 一半。顯而易見(jiàn),在不偏離本發(fā)明的真實(shí)精神和范圍的前提下,在此描述的 本發(fā)明可以有許多變化。因此,所有對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)顯而易見(jiàn)的 改變,都應(yīng)包括在本權(quán)利要求書所涵蓋的范圍之內(nèi)。本發(fā)明所要求保護(hù)的 范圍僅由所述的權(quán)利要求書進(jìn)行限定。
權(quán)利要求
1.一種用于JPEG圖像局部解碼的方法,包括在對(duì)JPEG圖像進(jìn)行全局解碼時(shí)生成記錄;以及根據(jù)所述記錄對(duì)所述JPEG圖像進(jìn)行局部解碼。
2. 根據(jù)權(quán)利要求1的方法,其中 在開(kāi)始解碼每個(gè)最左側(cè)最小解碼單元時(shí)進(jìn)行記錄。
3. 根據(jù)權(quán)利要求1的方法,其中 所述記錄包括所述JPEG圖像的碼流位置和直流分量, 所述碼流位置包括字節(jié)位置,比特位置;所述直流分量包括Y信號(hào)直流分量,Cb信號(hào)直流分量,Cr信號(hào)直流 分量。
4. 根據(jù)權(quán)利要求1的方法,其中,所述局部解碼包括 根據(jù)需要解碼的局部圖像的位置來(lái)計(jì)算需要解碼的最小解碼單元區(qū)間;根據(jù)所述區(qū)間和所述記錄進(jìn)行解碼。
5. 根據(jù)權(quán)利要求4的方法,其中,所述計(jì)算是 起始最小解碼單元=(局部圖像左上角縱坐標(biāo)/最小解碼單元高度)* ((圖像寬度+最小解碼單元寬度-1)/最小解碼單元寬度);結(jié)束最小解碼單元=((局部圖像右下角縱坐標(biāo)+最小解碼單元高度-1) /最小解碼單元高度)* ((圖像寬度+最小解碼單元寬度-1)/ 最小解碼單元寬度)-1。
6. 根據(jù)權(quán)利要求1的方法,其中,所述記錄還包括直流信號(hào)歸零計(jì) 數(shù)值。
7. 根據(jù)權(quán)利要求6的方法,其中,所述局部解碼還包括根據(jù)所述直流信號(hào)歸零計(jì)數(shù)值來(lái)確定直流信號(hào)歸零計(jì)數(shù)值的初始值。
8. —種JPEG圖像局部解碼設(shè)備,包括用于在對(duì)JPEG圖像進(jìn)行全局解碼時(shí)生成記錄的模塊;以及 用于根據(jù)所述記錄對(duì)所述JPEG圖像進(jìn)行局部解碼的模塊。
全文摘要
本發(fā)明涉及一種用于JPEG圖像局部解碼的方法及設(shè)備,所述方法包括在對(duì)JPEG圖像進(jìn)行全局解碼時(shí)生成記錄;以及根據(jù)所述記錄對(duì)所述JPEG圖像進(jìn)行局部解碼。所述記錄包括所述JPEG圖像的碼流位置和直流分量,所述碼流位置包括字節(jié)位置,比特位置;所述直流分量包括Y信號(hào)直流分量,Cb信號(hào)直流分量,Cr信號(hào)直流分量。本發(fā)明通過(guò)得到圖片碼流位置和直流分量的索引值,從而實(shí)現(xiàn)了對(duì)JPEG圖像的局部解碼,大大縮短了解碼時(shí)間。
文檔編號(hào)H04N11/04GK101321291SQ20081011689
公開(kāi)日2008年12月10日 申請(qǐng)日期2008年7月21日 優(yōu)先權(quán)日2008年7月21日
發(fā)明者巖 史 申請(qǐng)人:北京海爾集成電路設(shè)計(jì)有限公司