專利名稱:一種應(yīng)用于實(shí)時(shí)傳輸?shù)臒o(wú)損圖像壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明圖像壓縮技術(shù),特別是指一種應(yīng)用于實(shí)時(shí)傳輸?shù)臒o(wú)損圖像壓縮方法。
背景技術(shù):
隨著多媒體信息的迅猛發(fā)展,對(duì)于圖像的處理顯得越來(lái)越重要,而圖像處理的一個(gè)關(guān)鍵操作就是圖像壓縮。所謂壓縮,就是對(duì)要處理的圖像源數(shù)據(jù)用一定的規(guī)則進(jìn)行變換和組合,保留不確定的信息,去掉可推知的確定信息,以達(dá)到用盡可能少的代碼或符號(hào)來(lái)表示盡可能多的數(shù)據(jù)信息的目的。通常,壓縮是通過(guò)編碼來(lái)實(shí)現(xiàn)的,換句話說(shuō),壓縮過(guò)程就是編碼過(guò)程,解壓縮過(guò)程就是解碼過(guò)程,因此,采用何種編碼方法進(jìn)行圖像處理就非常重要的。
根據(jù)解碼后圖像相對(duì)于被壓縮原始圖像的保真程度而言,圖像的壓縮方法可分成兩大類有損壓縮和無(wú)損壓縮。有損壓縮允許圖像在壓縮前和解壓縮后有一定程度的不同,也就是指在解碼時(shí)只能近似原圖像,不能無(wú)失真地恢復(fù)原圖像;無(wú)損壓縮是指圖像在壓縮前和解壓縮后應(yīng)該完全一樣,不允許有一位的差錯(cuò),也就是說(shuō)要在解碼時(shí)能夠精確恢復(fù)原圖像,沒(méi)有任何損失。
對(duì)于無(wú)損壓縮來(lái)說(shuō),最基本的無(wú)損編碼理論就是香農(nóng)(Shannon)信息論第一定理,具體說(shuō)就是,用H(u)代表信源的熵,即表示觀察到單個(gè)信源符號(hào)輸出時(shí)所獲得的平均信息量,熵達(dá)到最大的情況出現(xiàn)在信源各符號(hào)的出現(xiàn)概率相等時(shí),而信源此時(shí)能提供最大可能的每個(gè)信源符號(hào)的平均信息量。那么,信源編碼可以使每個(gè)信源符號(hào)所需要的碼字符號(hào)的平均數(shù)L’avg/n小到逼近信源的熵,但不能比信源的信息熵更小。根據(jù)這一定理,圖像信源無(wú)損編碼所能達(dá)到的最低碼率是受圖像信源的信息熵限制的。基于該定理,任意一個(gè)給定的編碼方案,其編碼效率y可由公式(1)表示
y=H(u)/(L’avg/n)=n×H(u)/L’avg (1)其中,H(u)為當(dāng)前編碼方案確定的信源熵,L’avg/n為每個(gè)信源符號(hào)所需碼字符號(hào)的平均值。
目前,圖像編碼方法很多,主要分為以下四大類1)像素編碼是指在編碼時(shí)對(duì)每個(gè)像素單獨(dú)處理,不考慮像素之間的相關(guān)性。常用的方法有脈沖編碼調(diào)制(PCM,Pulse Code Modulation)、熵編碼(Entropy Coding)、游程編碼(Run Length Coding)、位平面編碼(Bit PlaneCoding)。
2)預(yù)測(cè)編碼是指只對(duì)新的信息進(jìn)行編碼,從而去掉相鄰像素之間的相關(guān)性和冗余性。常用的方法有增量調(diào)制(DM,Delta Modulation)、差分脈沖編碼調(diào)制(DPCM,Differential Pulse Code Modulation)。
3)變換編碼是指將給定的圖像變換到另一個(gè)數(shù)據(jù)域如頻域上,使得大量的信息能有較少的數(shù)據(jù)來(lái)表示。常用的方法有離散傅立葉變換(DFT)、離散余弦變換(DCT)、離散哈達(dá)瑪變換(DHT)。
4)其他編碼,常見(jiàn)的有混合編碼(Hybrid Coding)、矢量量化(VQ,VectorQuantize)、字典LZW算法等,還有新出現(xiàn)的人工神經(jīng)元網(wǎng)絡(luò)(ANN,ArtificialNeural Network)算法、分形(Fractal)算法、小波(Wavelet)算法、基于對(duì)象(Object-Based)的算法、基于模型(Model-Based)的算法等。另外,還有一些統(tǒng)計(jì)編碼霍夫曼(Huffman)編碼、香農(nóng)-費(fèi)諾(Shannon-Fano)編碼、算術(shù)編碼(Arithmetic Coding)等,這類編碼對(duì)于無(wú)記憶性信源來(lái)說(shuō),像素間沒(méi)有相關(guān)性,是根據(jù)像素灰度值出現(xiàn)概率的分布特性進(jìn)行壓縮編碼的。
在上述眾多的編碼方法中,常用的無(wú)損壓縮編碼方法有熵編碼(EntropyCoding)、游程編碼(Run Length Coding)、位平面編碼(Bit Plane Coding)、字典LZW算法、霍夫曼(Huffman)編碼等等。但是,各種不同的無(wú)損圖像壓縮編碼方法,對(duì)不同的信源其壓縮效率是不同的,尤其是某些需要進(jìn)行無(wú)損實(shí)時(shí)圖像傳輸?shù)念I(lǐng)域,對(duì)壓縮的時(shí)間與壓縮比要求非??量虝r(shí),單單依靠某一種圖像編碼方法就會(huì)出現(xiàn)壓縮率不高、或壓縮/解壓縮時(shí)間過(guò)長(zhǎng)的問(wèn)題,無(wú)法滿足進(jìn)行實(shí)時(shí)圖像處理的要求。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種應(yīng)用于實(shí)時(shí)傳輸?shù)臒o(wú)損圖像壓縮方法,在不降低圖像壓縮比和圖像保真程度的前提下,能大大減少數(shù)據(jù)壓縮/解壓縮時(shí)間,從而滿足實(shí)時(shí)圖像傳輸?shù)囊蟆?br>
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種應(yīng)用于實(shí)時(shí)傳輸?shù)臒o(wú)損圖像壓縮方法,該方法包括以下步驟a.將當(dāng)前待處理圖像劃分為一個(gè)以上圖像塊,并將每個(gè)像素的三原色(RGB)格式統(tǒng)一為指定的RGB格式;其中,可將當(dāng)前待處理圖像劃分為一個(gè)以上小于或等于16*16像素的圖像塊;b.將所劃分的每個(gè)圖像塊分別與該圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行比較,根據(jù)比較結(jié)果確定選取不同的編碼方法對(duì)當(dāng)前圖像塊進(jìn)行無(wú)損壓縮,并將發(fā)生變化的圖像塊的歷史數(shù)據(jù)更新為該變化的圖像塊數(shù)據(jù);c.判斷是否有未壓縮圖像塊,如果沒(méi)有,則執(zhí)行步驟d;否則,采用基于字典壓縮的算法對(duì)所有未壓縮圖像塊進(jìn)行無(wú)損壓縮;這里,所述基于字典的壓縮算法可以是實(shí)時(shí)字典LZW算法;d.將步驟c和步驟d壓縮后的數(shù)據(jù)順序?qū)懭霐?shù)據(jù)包,并在包頭加入至少含有圖像塊編碼指示標(biāo)識(shí)的圖像格式信息,并發(fā)送該完整的數(shù)據(jù)包。
其中,步驟a所述將每個(gè)像素的RGB格式統(tǒng)一為指定RGB格式包括判斷當(dāng)前圖像是否為指定RGB格式,如果是,則不作處理;否則,將當(dāng)前圖像的RGB格式轉(zhuǎn)換為指定的RGB格式。步驟a中所述指定的RGB格式為8位RGB格式、或16位RGB格式、或24位RGB格式、或32位RGB格式。
上述方案中,步驟b中所述選取不同編碼方法具體包括b1.判斷是否處理完所有圖像塊,如果是,則結(jié)束當(dāng)前結(jié)束圖像塊處理流程;否則,順序取下一圖像塊與所取圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行比較;
b2.判斷當(dāng)前圖像塊數(shù)據(jù)是否與當(dāng)前圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)不同,如果是,則返回步驟b1;否則,掃描該圖像塊的所有像素,并統(tǒng)計(jì)當(dāng)前圖像塊的顏色數(shù);b3.判斷步驟b2所統(tǒng)計(jì)的顏色數(shù)是否大于當(dāng)前指定RGB格式的位數(shù),如果是,則標(biāo)記當(dāng)前圖像塊為未壓縮圖像塊,返回步驟b1;否則,采用游程編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,并計(jì)算編碼后的數(shù)據(jù)量;b4.判斷步驟b3計(jì)算出的編碼后數(shù)據(jù)量是否大于原始數(shù)據(jù)量,如果大于,則標(biāo)記當(dāng)前圖像塊為未壓縮圖像塊,返回步驟b1;否則,再判斷計(jì)算出的編碼后數(shù)據(jù)量是否大于特定數(shù)據(jù)量,如果大于,則采用位平面編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,然后返回步驟b1;否則,采用游程編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,然后返回步驟b1。
其中,在比較圖像塊與對(duì)應(yīng)的歷史數(shù)據(jù)之前,步驟b1進(jìn)一步包括判斷當(dāng)前處理的圖像塊是否為首次處理,如果是,則默認(rèn)當(dāng)前圖像塊數(shù)據(jù)與其對(duì)應(yīng)的歷史數(shù)據(jù)不同,然后進(jìn)入步驟b2;否則,再進(jìn)行比較。
步驟b4中所述原始數(shù)據(jù)量為小塊的寬度、小塊的高度、指定RGB格式所占字節(jié)數(shù)三者之積。步驟b4中所述特定數(shù)據(jù)量為小塊的高度×小塊的寬度×小塊的顏色數(shù)/8+1。步驟b3和步驟b4中所述游程編碼為二維游程編碼。
上述方案中,步驟d中所述圖像格式信息還包括壓縮后圖像數(shù)據(jù)量大小、圖像寬度、圖像高度和圖形的起始坐標(biāo)。
本發(fā)明所提供的應(yīng)用于實(shí)時(shí)傳輸?shù)臒o(wú)損圖像壓縮方法,是根據(jù)每幅待處理圖像的具體像素組成情況,來(lái)確定待處理圖像的復(fù)雜程度,進(jìn)而采用不同的編碼方法。如此,能充分利用每種壓縮編碼方法的優(yōu)勢(shì),盡量保證針對(duì)不同復(fù)雜度的待處理圖像使用最佳的壓縮編碼方法來(lái)處理,因此可保證在不降低圖像壓縮比和圖像保真程度的前提下,以快速壓縮和解壓縮方式進(jìn)行圖像的無(wú)損壓縮處理。由于提高了壓縮、解壓縮的速度,因此本發(fā)明能夠滿足實(shí)時(shí)圖像處理和傳輸?shù)囊蟆?br>
圖1為本發(fā)明方法的實(shí)現(xiàn)流程圖;圖2為本發(fā)明方法中對(duì)每塊圖像處理的具體流程圖。
具體實(shí)施例方式
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。
本發(fā)明的主要思想就是將每幅待處理圖像劃分為若干小塊,根據(jù)每個(gè)圖像小塊的具體像素組成情況,選定不同的壓縮編碼方法對(duì)該塊圖像進(jìn)行無(wú)損壓縮處理。
基于上述思想,本發(fā)明對(duì)圖像無(wú)損壓縮的方法如圖1所示,具體包括以下步驟步驟101對(duì)當(dāng)前待處理的圖像進(jìn)行預(yù)處理,所述預(yù)處理是指將待處理圖像劃分為一個(gè)以上圖像塊,并將每個(gè)圖像塊的每個(gè)像素的三原色(RGB)格式統(tǒng)一為指定的RGB格式。一般,可將待處理圖像劃分為一個(gè)以上小于或等于16*16像素的圖像塊。
這里,所述指定的RGB格式可以是8位RGB格式、或16位RGB格式、或24位RGB格式、或32位RGB格式,其中16位RGB格式是R、G、B分別占5位、6位、5位;24位RGB格式是R、G、B各占8位;32位RGB格式是R、G、B各占8位,剩余8位保留。
步驟101中所述將每個(gè)像素的RGB格式統(tǒng)一為指定的RGB格式是指要預(yù)先判斷一下當(dāng)前圖像是否為指定RGB格式,如果是,則說(shuō)明該圖像中的每個(gè)像素已經(jīng)是按RGB格式存儲(chǔ)的,如果不是,則按現(xiàn)有RGB轉(zhuǎn)換技術(shù)將當(dāng)前圖像的RGB格式轉(zhuǎn)換為指定的RGB格式。比如指定RGB格式為16位RGB格式,那么,如果當(dāng)前圖像為16位RGB格式,則不需要進(jìn)行RGB格式轉(zhuǎn)換;如果當(dāng)前圖像為24位RGB格式,則需要進(jìn)行24位RGB格式到16位RGB格式的轉(zhuǎn)換,具體轉(zhuǎn)換方法為已有技術(shù),在此不再贅述。
本步驟中,如果將圖像塊限定在小于或等于16*16像素范圍內(nèi),圖像塊的顏色總數(shù)就可以用一個(gè)字節(jié)表示,圖像塊的矩形坐標(biāo)就可以用兩個(gè)字節(jié)表示,壓縮效果最好。其中,按等于16*16像素劃分待處理圖像是最佳方案。另外,本步驟在劃分圖像塊時(shí),如果不足指定像素大小,就取實(shí)際小塊的實(shí)際大小,比如要將當(dāng)前待處理圖像劃分為16*16像素的小塊,當(dāng)前剩余塊的大小為10*15像素,則就取10*15像素作為一個(gè)小塊。
本步驟中,劃分圖像塊的起始點(diǎn)也可以任意選定,則劃分方向和順序可根據(jù)起始點(diǎn)來(lái)確定,比如以左上角的點(diǎn)為起始點(diǎn),則劃分方向和順序可定為從左到右再?gòu)纳系较?,或定為從上到下再?gòu)淖蟮接遥灰杂疑辖堑狞c(diǎn)為起始點(diǎn),則劃分方向和順序可定為從右到左再?gòu)纳系较?,或定為從上到下再?gòu)挠业阶蟮鹊取?br>
步驟102將所劃分的每個(gè)圖像塊分別與該圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行比較,更新發(fā)生變化圖像塊的歷史數(shù)據(jù)為該變化圖像塊的數(shù)據(jù);并且,根據(jù)比較結(jié)果確定選取不同的編碼方法對(duì)當(dāng)前圖像塊進(jìn)行無(wú)損壓縮處理。這里,比較結(jié)果實(shí)際可以反映出每個(gè)圖像塊的數(shù)據(jù)特性,根據(jù)每個(gè)圖像塊數(shù)據(jù)特性的不同,選定對(duì)該類圖像進(jìn)行無(wú)損壓縮處理的最佳編碼方法。比如游程編碼算法對(duì)于僅包含很少幾個(gè)灰度級(jí)的圖像,特別是二值圖像的壓縮比較有效,就將簡(jiǎn)單的、包含顏色數(shù)少的圖像塊采用游程編碼算法進(jìn)行無(wú)損壓縮。
本步驟中所述選取不同編碼方法具體包括以下分步驟,如圖2所示步驟201~202判斷當(dāng)前是否存在尚未處理的圖像塊,如果不存在,也就是所有圖像塊都處理完畢,則結(jié)束圖像塊處理流程;否則,順序取下一圖像塊與所取圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行比較。這里,對(duì)于每個(gè)圖像塊,如果是第一次處理,則不做比較,并將當(dāng)前的圖像塊數(shù)據(jù)作為該圖像塊的歷史數(shù)據(jù)存儲(chǔ),以便下一次進(jìn)行比較,而且比較結(jié)果直接認(rèn)為是與歷史數(shù)據(jù)不同。
步驟203~204判斷當(dāng)前圖像塊數(shù)據(jù)與該圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)相比是否有變化,如果沒(méi)有變化,則返回步驟201;如果有變化,則掃描該圖像塊的所有像素,并統(tǒng)計(jì)當(dāng)前圖像塊的顏色數(shù)。這里,由于每個(gè)像素都由RGB格式表示,那么,對(duì)于每個(gè)像素,只要RGB值不同就算是顏色不同,統(tǒng)計(jì)時(shí)如果當(dāng)前RGB值與以前的所有RGB值都不同,則顏色數(shù)加1,如果有重復(fù)的,則不計(jì)數(shù)。
步驟205~207判斷所統(tǒng)計(jì)的當(dāng)前圖像塊的顏色數(shù)是否大于當(dāng)前指定RGB格式的位數(shù),比如指定RGB格式為16位RGB格式,則該判斷為判斷當(dāng)前圖像塊的顏色數(shù)是否大于16,如果大于,說(shuō)明該圖像塊復(fù)雜度較高,則標(biāo)記該圖像塊為未壓縮圖像塊,返回步驟201;如果小于等于,則采用游程編碼方法對(duì)當(dāng)前圖像塊進(jìn)行預(yù)壓縮,并計(jì)算編碼后的數(shù)據(jù)量。
步驟208~209判斷計(jì)算出的編碼后數(shù)據(jù)量是否大于原始數(shù)據(jù)量,如果大于,說(shuō)明該圖像塊復(fù)雜度較高,則標(biāo)記該圖像塊為未壓縮圖像塊,返回步驟201;如果小于等于,則執(zhí)行步驟210。這里,原始數(shù)據(jù)量的計(jì)算方法是原始數(shù)據(jù)量=小塊的寬度×小塊的高度×指定RGB格式所占字節(jié)數(shù),如果指定RGB格式為16位RGB格式,則指定RGB格式所占字節(jié)數(shù)為2。
步驟210~212判斷計(jì)算出的編碼后數(shù)據(jù)量是否大于特定數(shù)據(jù)量n,如果大于,則采用位平面編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,然后返回步驟201;否則,采用游程編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,然后返回步驟201。這里,所述特定數(shù)據(jù)量n為小塊的高度×小塊的寬度×小塊的顏色數(shù)/8+1,其中,8是指1個(gè)字節(jié)占8比特位。
步驟207和步驟212中所采用的游程編碼為二維游程編碼。
步驟103~104判斷是否有圖像塊未進(jìn)行壓縮,如果沒(méi)有,則執(zhí)行步驟105;否則,采用基于字典的壓縮算法對(duì)所有未壓縮的圖像塊進(jìn)行無(wú)損壓縮。
這里,所述的基于字典的壓縮算法可以選用實(shí)時(shí)字典LZW算法,所述實(shí)時(shí)字典LZW算法是一種基于字典編碼的無(wú)損壓縮編碼方法,所謂字典編碼方法就是預(yù)先為輸入數(shù)據(jù)創(chuàng)建一個(gè)短語(yǔ)字典,如果在當(dāng)前等待進(jìn)行壓縮的數(shù)據(jù)流中發(fā)現(xiàn)字典中已經(jīng)存在相應(yīng)短語(yǔ),則利用該短語(yǔ)在字典中的相應(yīng)索引值取代原始數(shù)據(jù)。所述字典LZW算法的具體實(shí)現(xiàn)過(guò)程是這樣的首先,建立一個(gè)很大的用于記住字符串的數(shù)組,該數(shù)組也可稱之為“字典”,并將前256個(gè)字節(jié)標(biāo)記(token)保留給不進(jìn)行匹配的單字節(jié),所述字符串為一個(gè)包含兩個(gè)或兩個(gè)以上字符的序列,所述標(biāo)記為該字符串在數(shù)組中的索引。在與字典中的字符串進(jìn)行匹配失敗之前,將所有未壓縮數(shù)據(jù)逐字節(jié)由累加器進(jìn)行收集,所述累加器即為收集字符的緩沖區(qū),其長(zhǎng)度不小于設(shè)定的最大字符串長(zhǎng);只要累加器中包含了兩個(gè)字符,就開始試探匹配;然后,判斷匹配是否成功,如果成功,則將未壓縮數(shù)據(jù)繼續(xù)逐字節(jié)進(jìn)入累加器;否則,將累加器中當(dāng)前處理的字符串存入字典中,同時(shí)將代表部分匹配的標(biāo)記(token)當(dāng)作結(jié)果輸出,所述部分匹配指的是匹配失敗前的那次成功匹配;并將最近剛剛收到的字符,即導(dǎo)致匹配失敗的字符留在累加器中,開始新的匹配。
實(shí)時(shí)字典LZW算法編碼非常簡(jiǎn)單,執(zhí)行速度很快,原因是在本質(zhì)上,任何數(shù)據(jù)都存在一些經(jīng)常重復(fù)的序列,即使圖像數(shù)據(jù)也不例外,因此,該編碼方式用作普通壓縮時(shí)表現(xiàn)異常優(yōu)秀,對(duì)于所有未壓縮的圖像數(shù)據(jù)這里作為普通數(shù)據(jù)交給實(shí)時(shí)字典LZW編碼進(jìn)行壓縮,可以進(jìn)一步提高壓縮比率。
步驟105將經(jīng)過(guò)步驟102和步驟103處理的壓縮后數(shù)據(jù)進(jìn)行打包,并在包頭添加含有圖像塊編碼指示標(biāo)識(shí)的圖像格式信息,然后將數(shù)據(jù)包發(fā)送出去。
本步驟具體的過(guò)程是先將壓縮后的全部數(shù)據(jù)按順序?qū)懭霐?shù)據(jù)包;然后,在包頭加入圖像格式信息得到完整的數(shù)據(jù)包;再將所得到的完整數(shù)據(jù)包發(fā)送出去。其中,所述的圖像格式信息還包括壓縮后圖像數(shù)據(jù)量大小、圖像寬度、圖像高度和圖形的起始坐標(biāo)(x,y);所述圖像塊編碼指示標(biāo)識(shí)是指所有指示每個(gè)圖像塊所采用編碼的標(biāo)識(shí),該標(biāo)識(shí)占8個(gè)字節(jié)。
按上述方法進(jìn)行圖像無(wú)損壓縮處理后,在解壓縮時(shí),只需根據(jù)當(dāng)前收到數(shù)據(jù)包中的編碼標(biāo)識(shí),依次對(duì)每個(gè)壓縮后的圖像塊按照相應(yīng)的解碼算法進(jìn)行處理即可。
本發(fā)明通過(guò)對(duì)當(dāng)前待處理的圖像數(shù)據(jù)塊進(jìn)行掃描,根據(jù)數(shù)據(jù)塊的特性采用不同的編碼方式,完成對(duì)待處理圖像的壓縮。由于其有效地使用了多種編碼方法,也就是盡量在幾種編碼算法中選擇最優(yōu)的,使得壓縮比很高。此外,由于本發(fā)明選用的二維游程編碼、位平面編碼以及實(shí)時(shí)的字典LZW編碼算法復(fù)雜度都不高,因此壓縮/解壓縮速度很快,完全能夠滿足實(shí)時(shí)處理的要求。
舉個(gè)具體例子,在一種無(wú)線關(guān)聯(lián)投影機(jī)產(chǎn)品中使用本發(fā)明的方法,對(duì)該投影機(jī)投影的1024*768普通桌面的圖像進(jìn)行無(wú)損壓縮,該桌面對(duì)應(yīng)的原始數(shù)據(jù)量為1024*768*4=3,145,728字節(jié),根據(jù)實(shí)際操作結(jié)果得出,使用本發(fā)明方法壓縮后數(shù)據(jù)量?jī)H為45,786字節(jié),共壓縮3,099,942字節(jié),總壓縮率為3,099,942÷3,145,728=98.5%。并且,根據(jù)實(shí)際測(cè)試得出,在奔騰III 866的PC機(jī)上,壓縮時(shí)間小于0.06秒,解壓縮時(shí)間小于0.01秒;而在現(xiàn)有無(wú)損壓縮技術(shù)中,這種情況下,壓縮率只有90%左右,且壓縮時(shí)間通常大于0.1秒,解壓縮時(shí)間通常會(huì)大于0.05秒,與本發(fā)明相差較大。另外,對(duì)該投影機(jī)投影的1024*768較復(fù)雜桌面的圖像進(jìn)行無(wú)損壓縮時(shí),原始數(shù)據(jù)量仍然為3,145,728字節(jié),使用本發(fā)明方法壓縮后為734,586字節(jié),壓縮2,411,142字節(jié),壓縮率為2,411,142÷3,145,728=76.6%,同樣,壓縮時(shí)間和解壓縮時(shí)間仍分別小于0.06秒、0.01秒,此時(shí)使用現(xiàn)有無(wú)損壓縮技術(shù),壓縮率可能會(huì)比本發(fā)明略高一點(diǎn)兒,如使用ZIP壓縮,但其壓縮時(shí)間和解壓縮時(shí)間大大超過(guò)本發(fā)明能達(dá)到的0.06秒、0.01秒,不能滿足實(shí)時(shí)處理的要求。這里,所述的普通桌面一般指進(jìn)行文檔處理的桌面,所述較復(fù)雜的桌面一般指進(jìn)行照片處理的桌面。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種應(yīng)用于實(shí)時(shí)傳輸?shù)臒o(wú)損圖像壓縮方法,其特征在于,該方法包括以下步驟a.將當(dāng)前待處理圖像劃分為一個(gè)以上的圖像塊,并將每個(gè)像素的三原色(RGB)格式統(tǒng)一為指定的RGB格式;b.將所劃分的每個(gè)圖像塊分別與該圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行比較,根據(jù)比較結(jié)果確定選取不同的編碼方法對(duì)當(dāng)前圖像塊進(jìn)行無(wú)損壓縮,并將發(fā)生變化的圖像塊的歷史數(shù)據(jù)更新為該變化的圖像塊數(shù)據(jù);c.判斷是否有未壓縮圖像塊,如果沒(méi)有,則執(zhí)行步驟d;否則,采用基于字典的壓縮算法對(duì)所有未壓縮圖像塊進(jìn)行無(wú)損壓縮;d.將步驟c和步驟d壓縮后的數(shù)據(jù)順序?qū)懭霐?shù)據(jù)包,并在包頭加入至少含有圖像塊編碼指示標(biāo)識(shí)的圖像格式信息,并發(fā)送該完整的數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟a所述將每個(gè)像素的RGB格式統(tǒng)一為指定RGB格式包括判斷當(dāng)前圖像是否為指定RGB格式,如果是,則不作處理;否則,將當(dāng)前圖像的RGB格式轉(zhuǎn)換為指定的RGB格式。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,步驟a中所述指定的RGB格式為8位RGB格式、或16位RGB格式、或24位RGB格式、或32位RGB格式。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟a中所述將當(dāng)前待處理圖像劃分為一個(gè)以上圖像塊為將當(dāng)前待處理圖像劃分為一個(gè)以上小于或等于16*16像素的圖像塊。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟b中所述選取不同編碼方法具體包括b1.判斷是否處理完所有圖像塊,如果是,則結(jié)束當(dāng)前結(jié)束圖像塊處理流程;否則,順序取下一圖像塊與所取圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行比較;b2.判斷當(dāng)前圖像塊數(shù)據(jù)是否與當(dāng)前圖像塊對(duì)應(yīng)的歷史數(shù)據(jù)不同,如果是,則返回步驟b1;否則,掃描該圖像塊的所有像素,并統(tǒng)計(jì)當(dāng)前圖像塊的顏色數(shù);b3.判斷步驟b2所統(tǒng)計(jì)的顏色數(shù)是否大于當(dāng)前指定RGB格式的位數(shù),如果是,則標(biāo)記當(dāng)前圖像塊為未壓縮圖像塊,返回步驟b1;否則,采用游程編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,并計(jì)算編碼后的數(shù)據(jù)量;b4.判斷步驟b3計(jì)算出的編碼后數(shù)據(jù)量是否大于原始數(shù)據(jù)量,如果大于,則標(biāo)記當(dāng)前圖像塊為未壓縮圖像塊,返回步驟b1;否則,再判斷計(jì)算出的編碼后數(shù)據(jù)量是否大于特定數(shù)據(jù)量,如果大于,則采用位平面編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,然后返回步驟b1;否則,采用游程編碼方法對(duì)當(dāng)前圖像塊進(jìn)行壓縮,然后返回步驟b1。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在比較圖像塊與對(duì)應(yīng)的歷史數(shù)據(jù)之前,步驟b1進(jìn)一步包括判斷當(dāng)前處理的圖像塊是否為首次處理,如果是,則默認(rèn)當(dāng)前圖像塊數(shù)據(jù)與其對(duì)應(yīng)的歷史數(shù)據(jù)不同,然后進(jìn)入步驟b2;否則,再進(jìn)行比較。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟b4中所述原始數(shù)據(jù)量為小塊的寬度、小塊的高度、指定RGB格式所占字節(jié)數(shù)三者之積。
8.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟b4中所述特定數(shù)據(jù)量為小塊的高度×小塊的寬度×小塊的顏色數(shù)/8+1。
9.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟b3和步驟b4中所述游程編碼為二維游程編碼。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟c中所述基于字典的壓縮算法為實(shí)時(shí)字典LZW算法。
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟d中所述圖像格式信息還包括壓縮后圖像數(shù)據(jù)量大小、圖像寬度、圖像高度和圖形的起始坐標(biāo)。
全文摘要
本發(fā)明公開了一種應(yīng)用于實(shí)時(shí)傳輸?shù)臒o(wú)損圖像壓縮方法,該方法包括a.將當(dāng)前待處理圖像劃分為一個(gè)以上的圖像塊,并將每個(gè)像素的三原色(RGB)格式統(tǒng)一為指定的RGB格式;b.將所劃分的每個(gè)圖像塊分別與其對(duì)應(yīng)的歷史數(shù)據(jù)進(jìn)行比較,根據(jù)比較結(jié)果確定不同的編碼方法對(duì)當(dāng)前圖像塊進(jìn)行無(wú)損壓縮,并用發(fā)生變化的圖像塊數(shù)據(jù)更新其歷史數(shù)據(jù);c.判斷是否有未壓縮圖像塊,如果沒(méi)有,則執(zhí)行步驟d;否則,采用基于字典的算法對(duì)所有未壓縮圖像塊進(jìn)行無(wú)損壓縮;d.將壓縮后的數(shù)據(jù)順序打包,并在包頭加入含有圖像塊編碼指示標(biāo)識(shí)的圖像格式信息,并發(fā)送該數(shù)據(jù)包。該方法在不降低圖像壓縮比的同時(shí),減少了壓縮/解壓縮時(shí)間,滿足了實(shí)時(shí)圖像傳輸要求。
文檔編號(hào)H04N7/26GK1630371SQ20031012185
公開日2005年6月22日 申請(qǐng)日期2003年12月19日 優(yōu)先權(quán)日2003年12月19日
發(fā)明者孫成昆, 劉渤, 趙俊先, 陳浩 申請(qǐng)人:聯(lián)想(北京)有限公司