一種逐次更新屏蔽字的圖像壓縮游長(zhǎng)編碼方法
【專(zhuān)利摘要】本發(fā)明涉及一種逐次更新屏蔽字的圖像壓縮游長(zhǎng)編碼方法,本方法根據(jù)JPEG-LS游長(zhǎng)長(zhǎng)度編碼參數(shù)具有累積更新的特點(diǎn),在游長(zhǎng)長(zhǎng)度掃描的過(guò)程中完成游長(zhǎng)長(zhǎng)度第一次編碼的同時(shí),更新編碼操作參數(shù)Runindex,并產(chǎn)生第二次編碼所需要的屏蔽字,從而使用簡(jiǎn)單的邏輯操作完成第二次游長(zhǎng)長(zhǎng)度編碼。本發(fā)明采用的圖像壓縮游長(zhǎng)編碼方法,硬件實(shí)現(xiàn)占用資源少,易于采用FPGA或者ASIC實(shí)現(xiàn)。
【專(zhuān)利說(shuō)明】一種逐次更新屏蔽字的圖像壓縮游長(zhǎng)編碼方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種逐次更新屏蔽字的JPEG-LS游長(zhǎng)(Joint Photographic Expert Group-Lossless and near lossless run mode)編碼方法,屬于圖像壓縮【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]JPEG-LS是聯(lián)合圖像專(zhuān)家組(Joint Photographic Experts Group)制定的一種圖 像無(wú)損、近無(wú)損壓縮的國(guó)際標(biāo)準(zhǔn),是當(dāng)今無(wú)損、近無(wú)損壓縮領(lǐng)域性能最優(yōu)的算法。將其運(yùn)用 到遙感衛(wèi)星圖像的無(wú)損、近無(wú)損壓縮取得了良好的效果,無(wú)損壓縮比高于一般性能較強(qiáng)的 自適應(yīng)算術(shù)編碼算法。JPEG-LS核心算法是采納自HP實(shí)驗(yàn)室提供的L0C0-1壓縮方案,主要 使用了預(yù)測(cè)、游長(zhǎng)長(zhǎng)度編碼和預(yù)測(cè)誤差Golomb熵編碼等技術(shù)。由于其結(jié)構(gòu)簡(jiǎn)單,復(fù)雜性低, 易于硬件實(shí)現(xiàn),低倍率壓縮性能優(yōu)良等特點(diǎn),而十分適合于星載遙感圖像壓縮。
[0003]在衛(wèi)星遙感應(yīng)用中,JPEG-LS算法雖然能夠?qū)崿F(xiàn)在同等復(fù)雜度下幾乎最優(yōu)的壓縮 性能,但是由于其游長(zhǎng)編碼過(guò)程需要循環(huán)判定像素是否滿(mǎn)足游長(zhǎng)掃描條件。根據(jù)JPEG-LS 標(biāo)準(zhǔn)建議的處理流程,游長(zhǎng)模式下的壓縮碼流輸出分為游長(zhǎng)長(zhǎng)度編碼和游長(zhǎng)結(jié)束編碼。其 中游長(zhǎng)長(zhǎng)度編碼又分為根據(jù)分段碼表的逐次分段編碼和分段后的剩余比特編碼。JPEG-LS 標(biāo)準(zhǔn)僅僅提供了相關(guān)算法模塊的實(shí)現(xiàn)的思想,且實(shí)現(xiàn)方法是基于軟件設(shè)計(jì)的思想。有些關(guān) 鍵的算法和思想并沒(méi)有提供詳細(xì)的設(shè)計(jì)方法。
[0004]JPEG-LS標(biāo)準(zhǔn)中給出了完成游長(zhǎng)長(zhǎng)度編碼所需要的處理流程。首先根據(jù)游長(zhǎng)掃描 處理?xiàng)l件統(tǒng)計(jì)出滿(mǎn)足相關(guān)掃描條件的長(zhǎng)度Runcnt。并通過(guò)循環(huán)比對(duì),完成游長(zhǎng)長(zhǎng)度的第一 次編碼,然后取剩余游長(zhǎng)長(zhǎng)度Runcnt的J[Runindex]比特輸出到壓縮碼流。
[0005]因?yàn)镴PEG-LS標(biāo)準(zhǔn)建議先進(jìn)行長(zhǎng)度統(tǒng)計(jì),然后再進(jìn)行長(zhǎng)度編碼,將在很大程度上 增加處理延遲。雖然標(biāo)準(zhǔn)建議函數(shù)AppendToBitStream(X,Num)的功能是將數(shù)據(jù)X的Num 比特添加到壓縮碼流中,但是并沒(méi)有給出具體的實(shí)現(xiàn)方式。為了降低處理延遲,有效提高 JPEG-LS游長(zhǎng)長(zhǎng)度編碼的處理速度,對(duì)實(shí)現(xiàn)高速實(shí)時(shí)JPEG-LS壓縮系統(tǒng)具有非常重要的現(xiàn) 實(shí)意義。
[0006]國(guó)內(nèi)外關(guān)于JPEG-LS壓縮碼率的非專(zhuān)利文獻(xiàn)很多,但是都沒(méi)有涉及使用逐次更新 屏蔽字的實(shí)現(xiàn)游程編碼的方法。例如,中國(guó)科學(xué)院劉嘉晗等論文《高性能全流水線(xiàn)可控參數(shù) JPEG-LS編碼器實(shí)現(xiàn)》一文提出了一種使用信號(hào)量集機(jī)制避免流水線(xiàn)的等待,保證編碼器具 有較高的吞吐率。
[0007]專(zhuān)利申請(qǐng)?zhí)朇N201010120398.4名稱(chēng)為《JPEG-LS游程編碼實(shí)現(xiàn)方法》的中國(guó)專(zhuān)利 公開(kāi)了一種對(duì)JPEG-LS游程編碼的標(biāo)準(zhǔn)流程進(jìn)行了改進(jìn)和優(yōu)化的方法。該方法引入編碼映 射操作,通過(guò)比較查表操作流水線(xiàn)實(shí)現(xiàn)編碼,解決原算法中多個(gè)時(shí)鐘周期循環(huán)編碼的問(wèn)題。 另外,根據(jù)游長(zhǎng)長(zhǎng)度殘差編碼采用索引值Runindex單周期更新操作,同時(shí)游長(zhǎng)編碼和殘差 編碼采用索引值Runindex雙周期更新操作,提高了編碼的速度一種通過(guò)實(shí)際碼率。該方法 與本專(zhuān)利描述的方法相異。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的技術(shù)解決的問(wèn)題是:克服現(xiàn)有技術(shù)的不足,提供了一種采用逐次更新屏 蔽字的游長(zhǎng)編碼方法,本發(fā)明有效地減少了循環(huán)迭代的次數(shù),提高圖像處理速度。
[0009]本發(fā)明的技術(shù)解決方案是:
[0010]一種逐次更新屏蔽字的圖像壓縮游長(zhǎng)編碼方法,包括步驟如下:
[0011](I)參數(shù)初始化設(shè)置,所述參數(shù)包括游長(zhǎng)編碼屏蔽字MASKWORD,游長(zhǎng)長(zhǎng)度Runcnt, 游長(zhǎng)長(zhǎng)度分段編碼輸出比特‘I’的個(gè)數(shù)OneNum;當(dāng)前分段碼表J的地址Runindex,分段碼 表J對(duì)應(yīng)地址Runindex的值CurValue,并初始化pValue=CurValue ;游長(zhǎng)剩余長(zhǎng)度碼流輸 出 Runbit,其中 MASKWORD、Runcnt、OneNum、Runindex、PValue 和 Runbit 均初始化為 0,進(jìn) 入步驟(2);
[0012](2)讀取待處理圖像中一行像素中的一個(gè)像素IX,根據(jù)該像素對(duì)應(yīng)的上下文模型 值 Ra、Rb、Re 和 Rd 計(jì)算 Dl= | Rd-Rb |、D2= | Rb-Rc | 和 D3= | Rc-Ra |,并進(jìn)入步驟(3);
[0013](3)游長(zhǎng)長(zhǎng)度Runcnt初始化為0,并判定Dl < 0,D2 < 0,D3 < 0是否同時(shí)成立, 若不成立則步驟(2)中的像素樣點(diǎn)的處理模式為正常模式,進(jìn)入步驟(11);否則步驟(2)中 的像素樣點(diǎn)的處理模式為游長(zhǎng)模式,進(jìn)入步驟(4);
[0014](4)判斷I IX-RaI ( NEAR是否成立,若成立則進(jìn)行游長(zhǎng)掃描處理進(jìn)入步驟(5),否 則進(jìn)入步驟(10);
[0015](5 )游長(zhǎng)長(zhǎng)度加I,即Runcnt=Runcnt+l,更新當(dāng)前像素樣點(diǎn)的重建值Rx=Ra 并將該重建值寫(xiě)入重建值存儲(chǔ)空間,更新下一個(gè)像素樣點(diǎn)的上下文模型重建值,即 Rc=Rb, Rb=Rd, Ra保持不變,進(jìn)入步驟(6);
[0016](6)若游長(zhǎng)長(zhǎng)度Runcnt=2T[Kunindex],則OneNum累加1,同時(shí)更新游長(zhǎng)長(zhǎng) 度Runcnt=Runcnt-2J[Eunmdex],并判定Runindex是否等于31,若不等于31,則更新 Runindex=Runindex+l并進(jìn)入步驟(7),否則直接進(jìn)入步驟(7);
[0017](7)讀取當(dāng)前分段碼表J中對(duì)應(yīng)地址為Runindex的值為CurValue,即 CurValue=J[Runidex];若CurValuee不等于PValue則更新屏蔽字并進(jìn)入步驟(8),否則直 接進(jìn)入步驟(8),更新后的屏蔽字為:MASKW0RD=MASKW0RDX2+1 ;
[0018](8)更新像素PValue的值為CurValue的值,若當(dāng)前像素樣點(diǎn)為一行圖像的最后 一個(gè)樣點(diǎn),則一行圖像處理完成,游長(zhǎng)掃描終止,則進(jìn)入步驟(9);否則一行圖像沒(méi)有處理完 成,讀取本行圖像中的一個(gè)新的像素樣點(diǎn),并進(jìn)入步驟(4);
[0019](9)游長(zhǎng)掃描終止,一行圖像處理結(jié)束,并進(jìn)入步驟(11),同時(shí)若游長(zhǎng)長(zhǎng)度 Runcnt>0, OneNum 累加 1,否則 OneNum 不變;
[0020](10)像素IX不滿(mǎn)足游長(zhǎng)掃描條件,游長(zhǎng)掃描終止;若RunindexX),更新索引地 址Runindex=Runindex-1,否則Runindex=O,然后輸出剩余游長(zhǎng)長(zhǎng)度編碼輸出的壓縮比特 Runbit=MASKWORD&&Runcnt,并進(jìn)入步驟轉(zhuǎn)入(2);
[0021](11)判斷一幅圖像中的像素是否處理完畢,若一幅圖像中像素處理完畢,則進(jìn)入 步驟(I),否則進(jìn)行新一行圖像處理并進(jìn)入步驟(2)。
[0022]本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
[0023](I)本發(fā)明充分利用了 CCD相機(jī)按行輸出像素的特點(diǎn),在遍歷圖像像素的同時(shí),完 成了游長(zhǎng)掃描操作和游長(zhǎng)長(zhǎng)度以碼表J為分段的編碼輸出,與傳統(tǒng)的JPEG-LS標(biāo)準(zhǔn)建議的先進(jìn)行游長(zhǎng)長(zhǎng)度統(tǒng)計(jì),后進(jìn)行編碼輸出相比,有效的減少了循環(huán)迭代的次數(shù),提高圖像處理速度。
[0024](2)本發(fā)明采用的使用逐次更新的屏蔽字,通過(guò)簡(jiǎn)單的邏輯與操作完成剩余游長(zhǎng)長(zhǎng)度編碼的方法,與現(xiàn)有的采用查找表方法相比,可以有效的節(jié)省硬件資源,并可以實(shí)現(xiàn)實(shí)時(shí)處理。
[0025](3)本發(fā)明算法簡(jiǎn)單,硬件實(shí)現(xiàn)占用資源少,易于采用FPGA或ASIC實(shí)現(xiàn)。
【專(zhuān)利附圖】
【附圖說(shuō)明】[0026]圖1為本發(fā)明方法流程圖;
[0027]圖2為本發(fā)明涉及到的JPEG-LS算法的原理組成框圖;
[0028]圖3為本發(fā)明的剩余游長(zhǎng)長(zhǎng)度編碼算法原理組成框圖。
【具體實(shí)施方式】
[0029]下面就結(jié)合附圖對(duì)本發(fā)明【具體實(shí)施方式】作進(jìn)一步介紹。
[0030]如圖1所示,本發(fā)明一種逐次更新屏蔽字的圖像壓縮游長(zhǎng)編碼方法,本發(fā)明充分利用星載CCD相機(jī)像素按行輸出的特點(diǎn),當(dāng)根據(jù)上下文模型判定輸入像素為游長(zhǎng)處理模式時(shí),隨著像素的輸入迭代更新游長(zhǎng)長(zhǎng)度的同時(shí)迭代輸出與分段碼表J比較后的比特‘1’,同時(shí)逐次更新用以進(jìn)行剩余游長(zhǎng)長(zhǎng)度編碼的屏蔽字,使用生成的屏蔽字,并通過(guò)簡(jiǎn)單的邏輯與操作完成剩余游長(zhǎng)長(zhǎng)度編碼,本發(fā)明步驟如下:
[0031 ] (I)參數(shù)初始化設(shè)置,所述參數(shù)包括游長(zhǎng)編碼屏蔽字MASKWORD,游長(zhǎng)長(zhǎng)度Runcnt, 游長(zhǎng)長(zhǎng)度分段編碼輸出比特‘I’的個(gè)數(shù)OneNum;當(dāng)前分段碼表J的地址Runindex,分段石馬表 J(32variables indicating order of run-length codes)對(duì)應(yīng)地址 Runindex 的值CurValue,并初始化pValue=CurValue ;游長(zhǎng)剩余長(zhǎng)度碼流輸出Runbit,其中MASKWORD、 Runcnt、OneNum、Runindex、PValue 和 Runbit 均初始化為 0,進(jìn)入步驟(2);
[0032](2)讀取待處理圖像中一行像素中的一個(gè)像素IX,根據(jù)該像素對(duì)應(yīng)的上下文模型值 Ra、Rb、Re 和 Rd 計(jì)算 Dl= | Rd-Rb |、D2= | Rb-Rc | 和 D3= | Rc-Ra |,并進(jìn)入步驟(3);
[0033](3)游長(zhǎng)長(zhǎng)度Runcnt初始化為0,并判定Dl≤0,D2≤0,D3≤0是否同時(shí)成立, 若不成立則步驟(2)中的像素樣點(diǎn)的處理模式為正常模式,進(jìn)入步驟(11);否則步驟(2)中的像素樣點(diǎn)的處理模式為游長(zhǎng)模式,進(jìn)入步驟(4);
[0034](4)判斷I IX-Ra ≤ NEAR是否成立,若成立則進(jìn)行游長(zhǎng)掃描處理進(jìn)入步驟(5),否則進(jìn)入步驟(10);
[0035](5)游長(zhǎng)長(zhǎng)度加I,即Runcnt=Runcnt+1,更新當(dāng)前像素樣點(diǎn)的重建值Rx=Ra 并將該重建值寫(xiě)入重建值存儲(chǔ)空間,更新下一個(gè)像素樣點(diǎn)的上下文模型重建值,即 Rc=Rb, Rb=Rd, Ra保持不變,進(jìn)入步驟(6);
[0036](6)若游長(zhǎng)長(zhǎng)度Runcnt=2J[Eunindex],則OneNum累加1,同時(shí)更新游長(zhǎng)長(zhǎng)度Runcnt=Runcnt-2J[Eunmdex],并判定Runindex是否等于31,若不等于31,則更新 Runindex=Runindex+l并進(jìn)入步驟(7),否則直接進(jìn)入步驟(7);
[0037](7)讀取當(dāng)前分段碼表J中對(duì)應(yīng)地址為Runindex的值為CurValue,即 CurValue=J[Runidex];若CurValuee不等于PValue則更新屏蔽字并進(jìn)入步驟(8),否則直接進(jìn)入步驟(8),更新后的屏蔽字為:MASKW0RD=MASKW0RDX2+1 ;
[0038](8)更新像素PValue的值為CurValue的值,若當(dāng)前像素樣點(diǎn)為一行圖像的最后一 個(gè)樣點(diǎn),則一行圖像處理完成,游長(zhǎng)掃描終止,則進(jìn)入步驟(9);否則一行圖像沒(méi)有處理完 成,讀取本行圖像中的一個(gè)新的像素樣點(diǎn),并進(jìn)入步驟(4);
[0039](9)游長(zhǎng)掃描終止,一行圖像處理結(jié)束,并進(jìn)入步驟(11),同時(shí)若游長(zhǎng)長(zhǎng)度 Runcnt>0, OneNum 累加 1,否則 OneNum 不變。
[0040](10)像素IX不滿(mǎn)足游長(zhǎng)掃描條件,游長(zhǎng)掃描終止;若RunindexX),更新索引地 址Runindex=Runindex-1,否則Runindex=O,然后輸出剩余游長(zhǎng)長(zhǎng)度編碼輸出的壓縮比特 Runbit=MASKWORD&&Runcnt,并進(jìn)入步驟轉(zhuǎn)入(2);
[0041](11)判斷一幅圖像中的像素是否處理完畢,若一幅圖像中像素處理完畢,則進(jìn)入 步驟(1),否則進(jìn)行新一行圖像處理并進(jìn)入步驟(2)。
[0042]游長(zhǎng)長(zhǎng)度分段編碼的處理流程與逐次更新屏蔽字的剩余游長(zhǎng)長(zhǎng)度編碼相同。在 JPEG-LS標(biāo)準(zhǔn)中游長(zhǎng)長(zhǎng)度編碼分為基于分段碼表J的分段編碼(Encoding of run segments of length rm)和剩余游長(zhǎng)長(zhǎng)度編碼(Encoding of run segments of length less than rm)0
[0043]本發(fā)明基于JPEG-LS算法的結(jié)構(gòu)將像素輸入與游長(zhǎng)掃描循環(huán)迭代處理過(guò)程合并, 使用逐次更新屏蔽字的方法實(shí)現(xiàn)剩余游長(zhǎng)編碼。
[0044]使用逐次更新屏蔽字的剩余游長(zhǎng)編碼需要結(jié)合逐次迭代游長(zhǎng)長(zhǎng)度分段編碼處理 流程來(lái)實(shí)現(xiàn)。逐次迭代的游長(zhǎng)長(zhǎng)度分段編碼通過(guò)循環(huán)遍歷的游長(zhǎng)掃描處理過(guò)程實(shí)現(xiàn)壓縮碼 流的迭代輸出。
[0045]本發(fā)明未詳細(xì)說(shuō)明部分屬本領(lǐng)域技術(shù)人員公知常識(shí)。
【權(quán)利要求】
1.一種逐次更新屏蔽字的圖像壓縮游長(zhǎng)編碼方法,其特征在于步驟如下:(1)參數(shù)初始化設(shè)置,所述參數(shù)包括游長(zhǎng)編碼屏蔽字MASKWORD,游長(zhǎng)長(zhǎng)度分段編碼輸出比特‘I’的個(gè)數(shù)OneNum ;當(dāng)前分段碼表J的地址Runindex,分段碼表J對(duì)應(yīng)地址 Runindex的值CurValue,并初始化pValue=CurValue ;游長(zhǎng)剩余長(zhǎng)度碼流輸出Runbit,其中 MASKWORD> Runcnt> OneNum、Runindex、PValue 和 Runbit 均初始化為 0,進(jìn)入步驟(2); (2)讀取待處理圖像中一行像素中的一個(gè)像素IX,根據(jù)該像素對(duì)應(yīng)的上下文模型值 Ra、Rb、Re 和 Rd 計(jì)算 Dl= | Rd-Rb |、D2= | Rb-Rc | 和 D3= | Rc-Ra |,并進(jìn)入步驟(3);(3)初始化游長(zhǎng)長(zhǎng)度Runcnt=O,并判定Dl^ 0, D2 ^ 0, D3 < 0是否同時(shí)成立,若不成立則步驟(2)中的像素樣點(diǎn)的處理模式為正常模式,進(jìn)入步驟(11);否則步驟(2)中的像素樣點(diǎn)的處理模式為游長(zhǎng)模式,進(jìn)入步驟(4);(4)判斷IlX-RaISNEAR是否成立,若成立則進(jìn)行游長(zhǎng)掃描處理進(jìn)入步驟(5),否則進(jìn)入步驟(10);(5)游長(zhǎng)長(zhǎng)度加I,即Runcnt=Runcnt+l,更新當(dāng)前像素樣點(diǎn)的重建值Rx=Ra并將該重建值寫(xiě)入重建值存儲(chǔ)空間,更新下一個(gè)像素樣點(diǎn)的上下文模型重建值,即Rc=Rb, Rb=Rd, Ra保持不變,進(jìn)入步驟(6);(6)若游長(zhǎng)長(zhǎng)度RUncnt=2T[Kunindex],則OneNum累加1,同時(shí)更新游長(zhǎng)長(zhǎng)度 Runcnt=Runcnt-2J[Eunmdex],并判定Runindex是否等于31,若不等于31,則更新 Runindex=Runindex+l并進(jìn)入步驟(7),否則直接進(jìn)入步驟(7);(7)讀取當(dāng)前分段碼表J中對(duì)應(yīng)地址為Runindex的值為CurValue,即 CurValue=J[Runidex];若CurValuee不等于PValue則更新屏蔽字并進(jìn)入步驟(8),否則直接進(jìn)入步驟(8),更新后的屏蔽字為:MASKW0RD=MASKW0RDX2+1 ;(8)更新像素PValue的值為CurValue的值,若當(dāng)前像素樣點(diǎn)為一行圖像的最后一個(gè)樣點(diǎn),則一行圖像處理完成,游長(zhǎng)掃描終止,則進(jìn)入步驟(9);否則一行圖像沒(méi)有處理完成,讀取本行圖像中的一個(gè)新的像素樣點(diǎn),并進(jìn)入步驟(4);(9)游長(zhǎng)掃描終止,一行圖像處理結(jié)束,并進(jìn)入步驟(11),同時(shí)若游長(zhǎng)長(zhǎng)度RuncntX), OneNum累加1,否則OneNum不變。(10)像素IX不滿(mǎn)足游長(zhǎng)掃描條件,游長(zhǎng)掃描終止;若RunindexX),更新索引地址 Runindex=Runindex-1,否則Runindex=O,然后輸出剩余游長(zhǎng)長(zhǎng)度編碼輸出的壓縮比特 Runbit=MASKWORD&&Runcnt,并進(jìn)入步驟轉(zhuǎn)入(2);(11)判斷一幅圖像中的像素是否處理完畢,若一幅圖像中像素處理完畢,則進(jìn)入步驟(1),否則進(jìn)行新一行圖像處理并進(jìn)入步驟(2)。
【文檔編號(hào)】H04N19/93GK103581666SQ201310467715
【公開(kāi)日】2014年2月12日 申請(qǐng)日期:2013年9月30日 優(yōu)先權(quán)日:2013年9月30日
【發(fā)明者】張海濤, 雷珺琳, 王元樂(lè) 申請(qǐng)人:西安空間無(wú)線(xiàn)電技術(shù)研究所