亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種jpeg圖像的無損壓縮與解壓縮方法

文檔序號:7689034閱讀:369來源:國知局
專利名稱:一種jpeg圖像的無損壓縮與解壓縮方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)的壓縮和解壓縮方法,具體涉及一種JPEG圖像 的無損壓縮與解壓縮方法。
(二)
背景技術(shù)
JPEG格式的圖片具有圖像質(zhì)量高的特點(diǎn),而在計(jì)算機(jī)存儲及計(jì)算機(jī) 網(wǎng)絡(luò)傳輸圖像中廣泛使用,現(xiàn)有的普通數(shù)碼相機(jī)的照片也大都采用JPEG 格式。因JPEG圖片的圖像質(zhì)量較高,因而其占用的空間相對也較大,以 一部800萬像素的數(shù)碼相機(jī)來說,其產(chǎn)生的JPEG圖像可高達(dá)5M字節(jié)。 為了節(jié)省存儲空間,并減少圖像在傳輸過程中所耗費(fèi)的時間,通常將原 JPEG圖像文件進(jìn)行壓縮后再保存或傳輸?,F(xiàn)有的壓縮方法有兩類, 一類 為無損壓縮,這種壓縮方法把數(shù)據(jù)看作是信息和冗余度的結(jié)合,其工作的 機(jī)理是去除或減少數(shù)據(jù)中的冗余度,因而不會導(dǎo)致原數(shù)據(jù)的丟失。另一類 為有損壓縮,這種壓縮不但去掉或減少數(shù)據(jù)中的冗余度,而且還忽略一些 不太重要的細(xì)節(jié),因而擁有可觀的壓縮比,但這種壓縮方法會丟失原文件 的某些信息,導(dǎo)致解壓后的文件和原文件存在一定的差別?,F(xiàn)有的無論是 無損壓縮還是有損壓縮的壓縮方法,都是將原JPEG圖像文件直接進(jìn)行壓 縮,這樣雖然可達(dá)到一定的壓縮比,減少一定的存儲空間和傳輸耗時,但 其實(shí)原JPEG圖像文件中由于其排放的序列的不同而存在一定的冗余度, 這種冗余度在不對原JPEG圖像文件作規(guī)整的前提下是不能去除的,如何 對原JPEG圖像文件作出更有效的規(guī)整便成為提高壓縮比的又一手段。
(三)

發(fā)明內(nèi)容
本發(fā)明為解決上述問題而提供一種在將JPEG圖像文件進(jìn)行壓縮前對 該文件進(jìn)行有效規(guī)整,以去除原文件中本身存在的冗余的JPEG圖像的無 損壓縮與解壓縮方法;這種方法不但可以在原有壓縮比的基礎(chǔ)上再有效去
除3-10%的冗余,同時不影響JPEG圖像文件的壓縮/解壓縮效果,且易于 實(shí)現(xiàn)。
本發(fā)明JPEG圖像的無損壓縮與解壓縮方法中,所述JPEG圖像無損 壓縮的方法,其步驟如下
1) 將JPEG圖像文件按規(guī)整規(guī)則進(jìn)行可逆變換,得到變換后的JPEG
圖像文件;
2) 將變換后的JPEG圖像文件用LZ77編碼或其改進(jìn)算法進(jìn)行壓縮, 壓縮處理結(jié)束。
上述步驟1)中對JPEG圖像文件進(jìn)行可逆變換的規(guī)整規(guī)則,包括以下
b以二進(jìn)制方式讀取JPEG圖像文件,并對其進(jìn)行分組; 所述分組是從二進(jìn)制數(shù)的第一個比特位開始, 一般按每8個比特位為 一組,如果不夠8位的,則在不夠的這組二進(jìn)制數(shù)的前面補(bǔ)0并補(bǔ)夠8位;
② 將每組二進(jìn)制代碼轉(zhuǎn)換成無符號十進(jìn)制數(shù),并將第一組二進(jìn)制代碼 轉(zhuǎn)換成的無符號十進(jìn)制數(shù)保存于新建數(shù)組H中;
由于第一個分組數(shù)據(jù)轉(zhuǎn)換成的無符號十進(jìn)制數(shù)在0-255之間,為了節(jié) 省空間,可將該無符號十進(jìn)制數(shù)設(shè)定為占用l個字節(jié)的空間;
③ 順序建立256個數(shù)組Ei , i=0-255;用于存放與i對應(yīng)的父數(shù)據(jù)之 后的子數(shù)據(jù);對于任意兩個相鄰分組而言,位于前面的分組數(shù)據(jù)設(shè)為父數(shù) 據(jù),位于后面的分組數(shù)據(jù)設(shè)為子數(shù)據(jù);
④ 按由小到大的順序遍歷轉(zhuǎn)換成的無符號十進(jìn)制數(shù),將每個父數(shù)據(jù)后 面出現(xiàn)的子數(shù)據(jù),存放在步驟③所建立的第i個數(shù)組E[i]中,其中i二父 數(shù)據(jù),若不存在與i相同的父數(shù)據(jù),則該數(shù)組E[i]為空;
⑤ 判斷遍歷是否結(jié)束,若是則統(tǒng)計(jì)完成遍歷后每個數(shù)組的長度,并存 放于新建數(shù)組G中;若否則繼續(xù)步驟④;
所述數(shù)組G中記錄每個數(shù)組的長度的元素一般占用4個字節(jié)的空間;
⑥ 將256個Ei數(shù)組中的內(nèi)容依次首尾相連保存于新建數(shù)組I中;
⑦ 將數(shù)組H、數(shù)組G和數(shù)組I中的內(nèi)容依次首尾相連合并,保存于新 建數(shù)組J中,數(shù)組J即為變換后的JPEG圖像文件。
本發(fā)明所述的JPEG圖像的解壓縮方法,包括下列步驟
1) 用LZ77編碼或其改進(jìn)算法對壓縮的JPEG圖像文件進(jìn)行解壓,得 到可逆變換后的JPEG圖像文件;
2) 將經(jīng)可逆變換后的JPEG圖像文件用規(guī)整規(guī)則進(jìn)行反規(guī)整,得到原 始JPEG圖像文件。
上述步驟2)中,所述將可逆變換后的JPEG圖像文件用規(guī)整規(guī)則進(jìn)行 反規(guī)整,包括以下步驟
① 以二進(jìn)制方式讀取該可逆變換后的JPEG圖像文件到新建數(shù)組J中,
并對其進(jìn)行數(shù)據(jù)分組;
所述分組是從第一個比特位開始,前8個比特位作為第一組,第一組 之后的256個組從第9個比特位開始以每32個比特位作為一組,剩余的 二進(jìn)制代碼以每8個比特位作為一組;
② 將每組數(shù)據(jù)轉(zhuǎn)換成無符號十進(jìn)制數(shù),并讀取出第一個無符號十進(jìn)制 數(shù)存放于新建數(shù)組H中;讀取出用于存放子數(shù)據(jù)的數(shù)組的長度元素,并將
該長度元素依次存放于新建數(shù)組G中;
上述讀取的規(guī)則按壓縮時存入數(shù)據(jù)所占用的空間來順序讀取,即讀取
數(shù)組J中占用1個字節(jié)空間的無符號十進(jìn)制數(shù)放入數(shù)組H中;讀取該無符
號十進(jìn)制數(shù)之后的每4個字節(jié)為一個元素的數(shù)組長度于數(shù)組G中;
③ 順序建立256個數(shù)組Ei , i=0-255;用于存放與i對應(yīng)的父數(shù)據(jù)之 后的子數(shù)據(jù);
④ 將數(shù)組J中剩余的數(shù)據(jù),按數(shù)組G中子數(shù)據(jù)數(shù)組的長度分別依次存 放于步驟3)建立的數(shù)組E[i]中;
⑤ 建立A數(shù)組,將H數(shù)組中數(shù)據(jù)存放于A數(shù)組第一個位置; (D順序讀取A數(shù)組的數(shù)據(jù)作為父數(shù)據(jù),在256個數(shù)組群Ei中尋找i=
父數(shù)據(jù)的數(shù)組E[i]中第一個沒有己讀標(biāo)志的數(shù)據(jù)作為子數(shù)據(jù),并將該子數(shù) 據(jù)存于A數(shù)組中繼該父數(shù)據(jù)之后的下一個空位置,同時將對應(yīng)數(shù)組E[i] 中的該子數(shù)據(jù)的標(biāo)志位置為已讀;
⑦掃描256個數(shù)組Ei,并檢査其中所有數(shù)據(jù)的標(biāo)志位是否全部為已 讀,若否則繼續(xù)步驟 ;若是則停止掃描,將數(shù)組A保存為文件,該文件 即為原始JPEG圖像文件。
本發(fā)明與現(xiàn)有的壓縮/解壓縮方法相比,在進(jìn)行壓縮之前首先將要壓 縮的JPEG圖像文件進(jìn)行可逆變換,以去除原文件本身存在的冗余,再用 LZ77編碼或其改進(jìn)算法進(jìn)行壓縮,這樣可在原有的壓縮比的基礎(chǔ)上再去除 3-10%的冗余,還能保證JPEG圖像文件的壓縮/解壓縮質(zhì)量,且易于實(shí)現(xiàn)。


圖l:對JPEG圖像文件進(jìn)行可逆變換處理的流程圖; 圖2:對解壓后的JPEG圖像文件進(jìn)行還原處理的流程圖。 附圖標(biāo)記
101、 圖像數(shù)據(jù)以二進(jìn)制方式讀出,并將二進(jìn)制數(shù)序列從第一個比特
位開始,按每8個比特位為一組的形式進(jìn)行分組;
102、 將每組二進(jìn)制代碼轉(zhuǎn)換成無符號十進(jìn)制數(shù),并將第一組二進(jìn)制
代碼轉(zhuǎn)換成的無符號十進(jìn)制數(shù)保存于新建數(shù)組H中;
103、 順序建立256個數(shù)組Ei;
104、 按由小到大的順序遍歷轉(zhuǎn)換成的無符號十進(jìn)制數(shù),將每個父數(shù) 據(jù)后面出現(xiàn)的子數(shù)據(jù),存放上述步驟所建立的第i個數(shù)組E[i]中,其中 1=父數(shù)據(jù);
105、 遍歷結(jié)束,統(tǒng)計(jì)完成遍歷后每個數(shù)組的長度;
106、 將256個Ei數(shù)組中的內(nèi)容依次首尾相連保存于新建數(shù)組I中;
107、 將數(shù)組H、數(shù)組G和數(shù)組I中的內(nèi)容依次首尾相連合并,保存于 新建數(shù)組J中,數(shù)組J即為變換后的JPEG圖像文件。
201、 以二進(jìn)制方式讀取該可逆變換后的JPEG圖像文件到新建數(shù)組J 中,并對其進(jìn)行數(shù)據(jù)分組;
202、 將每組數(shù)據(jù)轉(zhuǎn)換成無符號十進(jìn)制數(shù),并讀取出第一個無符號十 進(jìn)制數(shù)存放于新建數(shù)組H中;讀取出用于存放子數(shù)據(jù)的數(shù)組的長度元素, 并將該長度元素依次存放于新建數(shù)組G中;203、 順序建立256個數(shù)組Ei;
204、 讀取數(shù)組J中剩余的數(shù)據(jù),按數(shù)組G中子數(shù)據(jù)數(shù)組的長度分別 依次存放于步驟3)建立的數(shù)組E[i]中;
205、 建立A數(shù)組,將H數(shù)組中數(shù)據(jù)存放于A數(shù)組第一個位置;
206、 順序讀取A數(shù)組的數(shù)據(jù)作為父數(shù)據(jù),在256個數(shù)組群Ei中尋找 1=父數(shù)據(jù)的數(shù)組E[i]中第一個沒有已讀標(biāo)志的數(shù)據(jù)作為子數(shù)據(jù),并將該子 數(shù)據(jù)存于A數(shù)組中繼該父數(shù)據(jù)之后的下一個空位置,同時將對應(yīng)數(shù)組E[i] 中的該子數(shù)據(jù)的標(biāo)志位置為已讀;
207、 掃描256個數(shù)組Ei,并檢查其中所有數(shù)據(jù)的標(biāo)志位是否全部為 已讀,若否則繼續(xù)步驟(D;若是則停止掃描,將數(shù)組A保存為文件,該文 件即為原始JPEG圖像文件。
具體實(shí)施例方式
本發(fā)明所述的JPEG圖像的無損壓縮與解壓縮方法,包括對JPEG圖 像文件的壓縮與解壓縮,其中對JPEG圖像的無損壓縮方法是將JPEG圖 像文件中的內(nèi)容進(jìn)行信號重排即可逆變換后再用LZ77或winzip、 gzip、 winrar等軟件進(jìn)行無損壓縮。圖1為將JPEG圖像文件進(jìn)行可逆變換處理 的流程圖,如圖所示,對JPEG圖像文件進(jìn)行可逆變換,首先將JPEG圖像 文件以二進(jìn)制方式讀出,并將二進(jìn)制數(shù)序列從第一個比特位開始,按每8 個比特位為一組的形式進(jìn)行分組(步驟101);然后,將每組二進(jìn)制代碼轉(zhuǎn) 換成無符號十進(jìn)制數(shù),并將第一組二進(jìn)制代碼轉(zhuǎn)換成的無符號十進(jìn)制數(shù)保 存于新建數(shù)組H中(步驟102);該無符號十進(jìn)制數(shù)設(shè)定為占用1個字節(jié)的 空間;順序建立256個數(shù)組Ei , i=0-255 (步驟103),用于存放與i對 應(yīng)的父數(shù)據(jù)之后的子數(shù)據(jù);再按由小到大的順序遍歷轉(zhuǎn)換成的無符號十進(jìn) 制數(shù),將每個父數(shù)據(jù)后面出現(xiàn)的子數(shù)據(jù),存放上述步驟所建立的第i個數(shù) 組E[i]中,其中t父數(shù)據(jù)(步驟104),若不存在與i相同的父數(shù)據(jù),則 該數(shù)組E[i]為空;判斷遍歷是否結(jié)束,若是則統(tǒng)計(jì)完成遍歷后每個數(shù)組的 長度,并存放于新建數(shù)組G中;若否則繼續(xù)步驟遍歷(步驟105),其中數(shù) 組G中記錄每個數(shù)組的長度的元素一般占用4個字節(jié)的空間;將256個Ei 數(shù)組中的內(nèi)容依次首尾相連保存于新建數(shù)組I中(步驟106);將數(shù)組H、 數(shù)組G和數(shù)組I中的內(nèi)容依次首尾相連合并,保存于新建數(shù)組J中,數(shù)組 J即為變換后的JPEG圖像文件(步驟107)。
對JPEG圖像的解壓縮方法是將壓縮的JPEG圖像文件用LZ77或 winzip、 gzip、 winrar等軟件進(jìn)行解壓,再將解壓后的文件還原成原始的 JPEG圖像文件。圖2為解壓后的JPEG圖像文件進(jìn)行還原處理的流程圖, 如該圖所示,對解壓后的JPEG圖像文件進(jìn)行還原處理,首先以二迸制方 式讀取該可逆變換后的JPEG圖像文件到新建數(shù)組J中,并對其進(jìn)行數(shù)據(jù) 分組(步驟201),分組方式為從第一個比特位開始,以每8個比特位為一 組;將每組數(shù)據(jù)轉(zhuǎn)換成無符號十進(jìn)制數(shù),并讀取出第一個無符號十進(jìn)制數(shù)
存放于新建數(shù)組H中;讀取出用于存放子數(shù)據(jù)的數(shù)組的長度元素,并將該
長度元素依次存放于新建數(shù)組G中(步驟202),其讀取的規(guī)則按壓縮時存 入數(shù)據(jù)所占用的空間來順序讀取,即讀取數(shù)組J中占用1個字節(jié)空間的無 符號十進(jìn)制數(shù)放入數(shù)組H中;讀取該無符號十進(jìn)制數(shù)之后的每4個字節(jié)為 一個元素的數(shù)組長度于數(shù)組G中;順序建立256個數(shù)組Ei , i=0-255 (步 驟203);讀取數(shù)組J中剩余的數(shù)據(jù),按數(shù)組G中子數(shù)據(jù)數(shù)組的長度分別依 次存放于步驟3)建立的數(shù)組E[i]中(步驟204);建立A數(shù)組,將H數(shù)組 中數(shù)據(jù)存放于A數(shù)組第一個位置(步驟205);順序讀取A數(shù)組的數(shù)據(jù)作為 父數(shù)據(jù),在256個數(shù)組群Ei中尋找i-父數(shù)據(jù)的數(shù)組E[i]中第一個沒有已 讀標(biāo)志的數(shù)據(jù)作為子數(shù)據(jù),并將該子數(shù)據(jù)存于A數(shù)組中繼該父數(shù)據(jù)之后的 下一個空位置,同時將對應(yīng)數(shù)組E[i]中的該子數(shù)據(jù)的標(biāo)志位置為已讀(步 驟206),當(dāng)某一父數(shù)據(jù)i的數(shù)組Ei長度大于1時,順序讀取該數(shù)組Ei 中的標(biāo)志位未置為已讀的數(shù)據(jù);掃描256個數(shù)組Ei,并檢查其中所有數(shù)據(jù) 的標(biāo)志位是否全部為已讀,若否則繼續(xù)步驟⑥(步驟207);若是則停止掃 描,將數(shù)組A保存為文件,該文件即為原始JPEG圖像文件(步驟208)。
下面下以實(shí)例對本發(fā)明進(jìn)行說明。 假設(shè)某JPEG圖像文件A, 一、上述A文件的無損壓縮過程如下 以二進(jìn)制方式讀取出以下代碼A文件-
{ 0110101000101110110110110010110011001111100000010010111010 000001}
將上述二進(jìn)制代碼進(jìn)行分組并轉(zhuǎn)換成無符號十進(jìn)制數(shù)為
八文件=106 46 219 44 207 129 46 129
將106存放于新建數(shù)組H中,H= {106},該數(shù)據(jù)占一個字節(jié)空間;
建立256個數(shù)組Ei, i=0-255; E
= { }、 E[l]= { }、…、E[254] ={}、 E[255]= {};
按由小到大的順序遍歷上述無符號十進(jìn)制數(shù),并將其后出現(xiàn)的子數(shù)據(jù) 存放于與該子數(shù)據(jù)對應(yīng)的父數(shù)據(jù)的數(shù)組中,
E
= {};
E[l]= {};
E[44]= {207}; E[46]= {219 129}; E[106]= {46}; E[129]= {46};E[207]= {129};
E[219]= {44};
E[254]= {}; E[255]= {}。
遍歷結(jié)束,統(tǒng)計(jì)每個數(shù)組的長度,即E
為0, E[1]為0、、 E[44] 為1、…、E[46]為2、、 E[106]為1、…、E[129]為1、…、E[207]為 1、…、E[219]為l、…、E[254]為0、 E[255]為0,并將這些表示長度的 元素以每個元素占用4個字節(jié)空間的大小存入新建數(shù)組G中,即G二
{0, 0,…,1,…,2,…,1,…,1,…,1,…,1,…,0, 0};
按i從小到大的順序,將256個Ei數(shù)組中的內(nèi)容依次首尾相連保存 于新建數(shù)組I中,即1= (207, 219, 129, 46, 46, 129, 44};
將數(shù)組H、數(shù)組G和數(shù)組I中的內(nèi)容依次首尾相連合并,保存于新建 數(shù)組J中,數(shù)組J二U06, 0, 0,…,1,…,2,…,1,…,1,…,1,, 1,…,0, 0, 207, 219, 129, 46, 46, 129, 44},將該數(shù)組保存為文件, 即完成對JPEG圖像文件的可逆變換;
再將上述經(jīng)可逆變換的文件用LZ77編碼或winzip、 gzip、 winrar等
軟件進(jìn)行壓縮,壓縮處理結(jié)束。
二、壓縮后的A文件的解壓過程
首先用用LZ77編碼或winzip、 gzip、 winrar等軟件對壓縮的JPEG 圖像文件進(jìn)行解壓,得到可逆變換后的JPEG圖像文件;
以二進(jìn)制方式讀取上述可逆變換后的JPEG圖像文件到新建數(shù)組J中, 數(shù) 組
000000000000…00000000000000000000000000000001…000000000000000 00000000000000010…00000000000000000000000000000001 "0000000000 0000000000000000000001 . .00000000000000000000000000000001…00000
000000000000000000000000001'oooooooooooooooooooooooooooooooooo
000000000000000000000000000000110011111000000100101110001011101 000000100101100},并從第一個比特位開始,將前8個比特位作為一組, 將該組數(shù)據(jù)轉(zhuǎn)換成無符號十進(jìn)制數(shù)存放于新建數(shù)組H中,數(shù)據(jù)H={106};
從第9個比特位開始,以每4個字節(jié)為一個元素的數(shù)組長度,轉(zhuǎn)換成 無符號十進(jìn)制數(shù)后存放于新建數(shù)組G中,共讀取256個數(shù)據(jù)長度元素,數(shù) 組G:(O, 0,…,1,…,2,…,1,…,1,…,1,…,1,…,0, 0};
順序建立256個數(shù)組Ei , i=0-255, E[O] = { }、 E[l] = { }、…、E[254] ={}、 E[255]= {};
讀取數(shù)組J中剩余的數(shù)據(jù),以每8個比特位作為一組并轉(zhuǎn)換成無符號 十進(jìn)制數(shù),按數(shù)組G中子數(shù)據(jù)數(shù)組的長度分別依次存放于上述步驟建立的 數(shù)組E[i]中,即
E
= {};
E[l]= {};
E[44]= {207};
E[46]= {219 129};
E[106]= {46};
E[129]= {46};
E[207]= {129};
E[219]= {44};
E[254]= {}; E[255]= {}。;
建立A數(shù)組,將H數(shù)組中數(shù)據(jù)存放于A數(shù)組第一個位置,即A={106};
順序讀取A數(shù)組的數(shù)據(jù)作為父數(shù)據(jù),在256個數(shù)組群Ei中尋找1=父 數(shù)據(jù)的數(shù)組E[i]中第一個沒有已讀標(biāo)志的數(shù)據(jù)作為子數(shù)據(jù),并將該子數(shù)據(jù) 存于A數(shù)組中繼該父數(shù)據(jù)之后的下一個空位置,同時將對應(yīng)數(shù)組E[i]中的 該子數(shù)據(jù)的標(biāo)志位置為已讀,如當(dāng)父數(shù)據(jù)為106時,尋找106之后的子數(shù) 據(jù)放于數(shù)據(jù)A中106之后的位置,即A—106, 46},并將該46子數(shù)據(jù)的標(biāo) 志位置為已讀;再尋找46之后的子數(shù)據(jù)放于數(shù)據(jù)A中46之后的位置,即 A={106, 46, 219},并將該219子數(shù)據(jù)的標(biāo)志位置為已讀;再尋找219之 后的子數(shù)據(jù)放于數(shù)據(jù)A中219之后的位置,即A—106, 46, 219, 44},并 將該44子數(shù)據(jù)的標(biāo)志位置為已讀;如此類推,直至數(shù)組Ei中的所有數(shù)據(jù) 的標(biāo)志位均為已讀,此時,數(shù)組AHl06, 46, 219, 44, 207, 129, 46, 129};
將數(shù)組A保存為文件,該文件即為原始JPEG圖像文件,解壓縮過程 完成。
權(quán)利要求
1、一種JPEG圖像無損壓縮的方法,其特征在于它包括下列步驟1)將JPEG圖像文件按規(guī)整規(guī)則進(jìn)行可逆變換,得到變換后的JPEG圖像文件;2)將變換后的JPEG圖像文件用LZ77編碼或其改進(jìn)算法進(jìn)行壓縮,壓縮處理結(jié)束。
2、 根據(jù)權(quán)利要求1所述的JPEG圖像無損壓縮的方法,其特征在于 所述步驟l)中對JPEG圖像文件進(jìn)行可逆變換的規(guī)整規(guī)則,包括以下步驟① 以二進(jìn)制方式讀取JPEG圖像文件,并對其進(jìn)行分組;② 將每組二進(jìn)制代碼轉(zhuǎn)換成無符號十進(jìn)制數(shù),并將第一組二進(jìn)制代碼轉(zhuǎn)換成的無符號十進(jìn)制數(shù)保存于新建數(shù)組H中;③ 順序建立256個數(shù)組Ei , i=0-255;④ 按由小到大的順序遍歷轉(zhuǎn)換成的無符號十進(jìn)制數(shù),將每個父數(shù)據(jù)后 面出現(xiàn)的子數(shù)據(jù),存放在步驟③所建立的第i個數(shù)組E[i]中,其中i二父 數(shù)據(jù);⑤ 判斷遍歷是否結(jié)束,若是則統(tǒng)計(jì)完成遍歷后每個數(shù)組的長度,并存 放于新建數(shù)組G中;若否則繼續(xù)步驟④;⑥ 將256個Ei數(shù)組中的內(nèi)容依次首尾相連保存于新建數(shù)組I中;⑦ 將數(shù)組H、數(shù)組G和數(shù)組I中的內(nèi)容依次首尾相連合并,保存于新 建數(shù)組J中,數(shù)組J即為變換后的JPEG圖像文件。
3、 根據(jù)權(quán)利要求2所述的JPEG圖像無損壓縮的方法,其特征在于 所述步驟①中,所述分組是從第一個比特位開始,按每8個比特位為一組。
4、 根據(jù)權(quán)利要求2所述的JPEG圖像無損壓縮的方法,其特征在于 所述步驟②中,所述第一個分組數(shù)據(jù)轉(zhuǎn)換成的無符號十進(jìn)制數(shù)占用1個字 節(jié)的空間。
5、 根據(jù)權(quán)利要求2所述的JPEG圖像無損壓縮的方法,其特征在于 所述步驟⑤中,數(shù)組G中記錄每個數(shù)組的長度的元素占用4個字節(jié)的空間。
6、 一種JPEG圖像的解壓縮方法,其特征在于它包括下列步驟1) 用LZ77編碼或其改進(jìn)算法對壓縮的JPEG圖像文件進(jìn)行解壓,得 到經(jīng)可逆變換后的JPEG圖像文件;2) 將可逆變換后的JPEG圖像文件用規(guī)整規(guī)則進(jìn)行反規(guī)整,得到原始 JPEG圖像文件。
7、 根據(jù)權(quán)利要求6所述的JPEG圖像的解壓縮的方法,其特征在于 步驟2)中,所述對可逆變換后的JPEG圖像文件用規(guī)整規(guī)則進(jìn)行反規(guī)整, 包括以下步驟① 以二進(jìn)制方式讀取該可逆變換后的JPEG圖像文件到新建數(shù)組J中, 并對其進(jìn)行數(shù)據(jù)分組;② 將每組數(shù)據(jù)轉(zhuǎn)換成無符號十進(jìn)制數(shù),并讀取出第一個無符號十進(jìn)制 數(shù)存放于新建數(shù)組H中;讀取出用于存放子數(shù)據(jù)的數(shù)組的長度元素,并將 該長度元素依次存放于新建數(shù)組G中;③ 順序建立256個數(shù)組Ei , i=0-255;④ 將數(shù)組J中剩余的數(shù)據(jù),按數(shù)組G中子數(shù)據(jù)數(shù)組的長度分別依次存 放于步驟③建立的數(shù)組E[i]中;⑤ 建立A數(shù)組,將H數(shù)組中數(shù)據(jù)存放于A數(shù)組第一個位置;⑥ 順序讀取A數(shù)組的數(shù)據(jù)作為父數(shù)據(jù),在256個數(shù)組群Ei中尋找i= 父數(shù)據(jù)的數(shù)組E[i]中第一個沒有已讀標(biāo)志的數(shù)據(jù)作為子數(shù)據(jù),并將該子數(shù) 據(jù)存于A數(shù)組中繼該父數(shù)據(jù)之后的下一個空位置,同時將對應(yīng)數(shù)組E[i] 中的該子數(shù)據(jù)的標(biāo)志位置為已讀;⑦ 掃描256個數(shù)組Ei,并檢査其中所有數(shù)據(jù)的標(biāo)志位是否全部為已 讀,若否則繼續(xù)步驟⑥;若是則停止掃描,將數(shù)組A保存為文件,該文件 即為原始JPEG圖像文件。
8、 根據(jù)權(quán)利要求6所述的JPEG圖像的解壓縮的方法,其特征在于 步驟①中,分組是從第一個比特位開始,前8個比特位作為第一組,第一 組之后的256個組從第9個比特位開始以每32個比特位作為一組,剩余 的二進(jìn)制代碼以每8個比特位作為一組。
9、 根據(jù)權(quán)利要求6所述的JPEG圖像的解壓縮的方法,其特征在于 步驟②中,所述第一個分組數(shù)據(jù)轉(zhuǎn)換成的無符號十進(jìn)制數(shù)占用1個字節(jié)的 空間。
10、 根據(jù)權(quán)利要求6所述的JPEG圖像的解壓縮的方法,其特征在于: 步驟②中,所述用于表示存放子數(shù)據(jù)的數(shù)組的長度元素共256個,每個元 素占4個字節(jié)的空間。
全文摘要
本發(fā)明涉及一種JPEG圖像無損壓縮與解壓縮的方法。其中,JPEG圖像無損壓縮方法是先將JPEG圖像文件按規(guī)整規(guī)則進(jìn)行可逆變換,得到變換后的JPEG圖像文件;再將變換后的JPEG圖像文件用LZ77編碼或其改進(jìn)算法進(jìn)行壓縮,壓縮處理結(jié)束。對JPEG圖像的解壓縮方法,是先用LZ77編碼或其改進(jìn)算法對壓縮的JPEG圖像文件進(jìn)行解壓,得到經(jīng)可逆變換后的JPEG圖像文件;再將可逆變換后的JPEG圖像文件用規(guī)整規(guī)則進(jìn)行反規(guī)整,得到原始JPEG圖像文件。本發(fā)明所述JPEG圖像無損壓縮與解壓縮的方法可以在原有壓縮比的基礎(chǔ)上再有效去除3-10%的冗余,同時不影響JPEG圖像文件的壓縮/解壓縮效果,且易于實(shí)現(xiàn)。
文檔編號H04N1/413GK101350881SQ200810073769
公開日2009年1月21日 申請日期2008年9月3日 優(yōu)先權(quán)日2008年9月3日
發(fā)明者王文延 申請人:王文延
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1