專利名稱:圖像壓縮及復(fù)原方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像的處理方法,具體涉及圖像的壓縮和復(fù)原方法。
背景技術(shù):
在使用位圖數(shù)據(jù)時(shí),經(jīng)常會(huì)發(fā)生由于儲(chǔ)存空間等原因需要對(duì)圖像進(jìn)行壓縮的情況。
在上述位圖壓縮當(dāng)中,雖然要使用RLE(行程編碼)、RLC(行程編碼)、DCT(離散余弦變換)等多種方法,但是考慮到編碼/解碼的速度和原始資料管理的復(fù)雜性以及數(shù)據(jù)的損失等,有時(shí)非常需要有一個(gè)簡單的壓縮原理。
在這種情況下,雖然使用的壓縮方式是上述RLE方式,但是該方法在使用高頻振動(dòng)的圖像中存在著壓縮(編碼,以后“壓縮”或“編碼”混用)后的文件反而比壓縮前更長的缺點(diǎn)。
下面參照附圖對(duì)此進(jìn)行說明。
圖1是以原有技術(shù)為基礎(chǔ)的RLE方式圖像壓縮方法示意圖。
如圖1中(a)所示,當(dāng)存在排列好的行程時(shí),無需對(duì)所有連續(xù)行程的個(gè)數(shù)進(jìn)行記錄,只需利用重復(fù)次數(shù)和行程兩個(gè)位組來顯示出最多255個(gè)連續(xù)模式。
即,在圖1的(a)中,由于04的重復(fù)次數(shù)是3,所以如果按照RLE運(yùn)算法則對(duì)它進(jìn)行壓縮的話,就如圖1中(b)所顯示那樣表現(xiàn)為03 04兩個(gè)位組。
依此類推,在圖1的(a)中,由于06的重復(fù)次數(shù)是5,所以如圖1的(b)中所顯示那樣表現(xiàn)為05 06。
此時(shí),當(dāng)重復(fù)次數(shù)為0時(shí),即沒有重復(fù)時(shí),就使用換碼順序來表現(xiàn)。
即,在圖1的(a)中,由于45、56、67沒有重復(fù),所以為了表現(xiàn)它就在圖1的(b)中使用換碼順序用00來表現(xiàn)沒有重復(fù),并在下一個(gè)位組中使用數(shù)據(jù)的長度即03,而再下一個(gè)位組表現(xiàn)的是數(shù)據(jù)的內(nèi)容即45、56、67。
如果利用上述運(yùn)算法則RLE進(jìn)行壓縮,就如圖1中(a)所顯示的那樣,將原來用22個(gè)位組表現(xiàn)的圖像,壓縮成如圖1的(b)中所顯示的那樣用13個(gè)位組來表現(xiàn)的圖像,實(shí)現(xiàn)了壓縮的目的。
但是,正如前面所講的那樣,這種RLE運(yùn)算法則在針對(duì)不出現(xiàn)連續(xù)行程并被均衡地進(jìn)行高頻振動(dòng)的圖像時(shí),就會(huì)表現(xiàn)出它的弱點(diǎn)來。下面就參照圖2對(duì)此進(jìn)行說明。
如圖2的(a)所示,如果用傳統(tǒng)RLE壓縮方法對(duì)行程不重復(fù)并被均衡地高頻振動(dòng)成04、05、04、05等的形態(tài)進(jìn)行壓縮的話,就如圖2中(b)所顯示的那樣。
將上述RLE壓縮之后的狀態(tài)即圖2的(b)與原來的圖2中的(a)相比較,就可以知道根本沒有達(dá)到壓縮的目的。
這是由于對(duì)不重復(fù)的行程使用了換碼順序的原因,如果壓縮后文件的大小加上2個(gè)位組超過256個(gè)位組,那么就會(huì)發(fā)生反而比原來文件更大的結(jié)果。
發(fā)明內(nèi)容
因此,為了解決這種原有技術(shù)中存在的問題,本發(fā)明提供一種在RLE壓縮運(yùn)算法則中對(duì)高頻振動(dòng)圖像進(jìn)行有效壓縮的方法。
本發(fā)明的另一個(gè)目的是提供一種針對(duì)依據(jù)以本發(fā)明為基礎(chǔ)的壓縮運(yùn)算法則對(duì)被壓縮處理的圖像進(jìn)行有效復(fù)原的方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供的圖像壓縮方法采用RLE運(yùn)算法則,包括以下幾個(gè)步驟求出被輸入模式的長度和重復(fù)次數(shù),然后分別代入變量A和B中的步驟;判定上述變量A是否為0的步驟;如果上述變量A不是0,就判定其是否為1的步驟;如果上述變量A即不是0也不是1就將變量C一分為二,然后給變量C的上位比特輸入(B-1)值,給下位比特輸入(A-2)值的步驟;依次輸出換碼順序、上述變量C值、被輸入模式中上述A值的步驟。
當(dāng)上述變量A為0時(shí),表示所有的圖像壓縮步驟結(jié)束。
當(dāng)上述變量A為1時(shí),表示實(shí)現(xiàn)了普通RLE運(yùn)算法則的壓縮。
另一方面,還提供一種以本發(fā)明為基礎(chǔ)的壓縮圖像的復(fù)原方法,包括讀取壓縮圖像的一個(gè)位組,然后代入變量A的步驟;判斷上述讀取位組是否為0的步驟;當(dāng)上述讀取位組為0時(shí),讀取下一個(gè)位組然后代入變量B的步驟;將上述變量B的上位特定比特代入變量C的步驟;將上述變量C的下位特定比特代入變量D的步驟;在上述壓縮圖像中讀出D+2位組,然后將其重復(fù)C+1次的步驟。
該方法還包括當(dāng)上述A不是0時(shí),讀取下一個(gè)位組并代入變量B的步驟和使上述B像上述A那樣重復(fù)并輸出的步驟。
綜上所述,以本發(fā)明為基礎(chǔ)的圖像壓縮方法能夠達(dá)到以下效果
首先,利用以被重復(fù)模式的長度及次數(shù)為基礎(chǔ)的壓縮運(yùn)算法則對(duì)圖像進(jìn)行壓縮處理,能夠提高圖像壓縮尤其是高頻振動(dòng)圖像的壓縮效率。
其次,能夠相對(duì)簡單地進(jìn)行高頻振動(dòng)圖像的編碼和解碼。
圖1是以原有技術(shù)為依據(jù)的RLE方式的圖像壓縮方法示意圖;圖2是將以原有技術(shù)為基礎(chǔ)的RLE壓縮方法運(yùn)用于高頻振動(dòng)圖像的形態(tài)示意圖;圖3是以本發(fā)明為基礎(chǔ)的RLE修正壓縮方法示意圖;圖4是以本發(fā)明為基礎(chǔ)的RLE修正壓縮方法的流程圖;圖5是以本發(fā)明為基礎(chǔ)的RLE修正壓縮復(fù)原方法的流程圖。
具體實(shí)施例方式
下面參照附圖對(duì)本發(fā)明的理想實(shí)施例的構(gòu)成及作用進(jìn)行說明。
圖3是通過本發(fā)明的具體實(shí)施例,對(duì)用來對(duì)高頻振動(dòng)圖像進(jìn)行有效壓縮(編碼)的RLE修正運(yùn)算法則進(jìn)行說明的示意圖。
為此,圖3的(a)中顯示了經(jīng)高頻振動(dòng)處理的原始圖像模式;圖3的(b)中顯示了本發(fā)明的壓縮方法;圖3的(c)中顯示了用本發(fā)明的方法進(jìn)行壓縮處理之后的模式。
本發(fā)明采用的是利用行程長度為0的換碼順序來與高頻振動(dòng)圖像相對(duì)應(yīng)的方式。
即,當(dāng)長度為1以上時(shí),與普通RLE相同;為0時(shí),利用下一個(gè)位組來表現(xiàn)模式并利用其余部分來表現(xiàn)重復(fù)次數(shù)。
此時(shí),在一個(gè)位組中放入兩個(gè)信息的理由是支持過長的模式是沒有意義的,并且大部分模式的連續(xù)次數(shù)不多。在本發(fā)明的具體實(shí)施例中,將一個(gè)位組的上位6比特作為重復(fù)次數(shù),而用下位2比特來表現(xiàn)模式的長度。
同樣,下面就參照圖4對(duì)利用本發(fā)明的壓縮(編碼,在本發(fā)明中壓縮與編碼混用)運(yùn)算法則針對(duì)圖3(a)中所示高頻振動(dòng)圖像進(jìn)行壓縮的方法進(jìn)行說明。
圖4是以本發(fā)明為基礎(chǔ)的RLE修正壓縮方法的流程示意圖。
如圖4所示,首先把握被輸入原始圖像模式的長度和重復(fù)次數(shù)(S10)。此時(shí),上述模式能夠成功地對(duì)5個(gè)模式進(jìn)行檢索并檢測出模式的重復(fù)性。
如果沒有檢測出5個(gè)重復(fù)性,那么模式的長度就被設(shè)定為5、重復(fù)次數(shù)被設(shè)定為1;當(dāng)不存在需檢索的輸入模式時(shí),模式的長度就被設(shè)定為0。
為了便于說明,將上述模式的長度代入變量A;將重復(fù)次數(shù)代入變量B中。
據(jù)此,以圖3的(a)模式為例,圖中顯示長度為2的04、05模式重復(fù)4次;長度為3的06、06、36模式重復(fù)2次;而長度為1的11模式重復(fù)8次。
然后進(jìn)入判斷上述模式長度是否為變量A的步驟(S20),當(dāng)模式的長度為0時(shí),由于它表示輸入的模式已經(jīng)不再存在,所以壓縮步驟結(jié)束。
上述模式的長度不為0時(shí),就進(jìn)入對(duì)該模式的長度是否為1進(jìn)行確認(rèn)的步驟(S30)。
當(dāng)上述模式的長度為1時(shí),依據(jù)其當(dāng)前位組和表現(xiàn)其重復(fù)次數(shù)的原有RLE運(yùn)算法則進(jìn)行處理。圖4的步驟(S40~S70)對(duì)此進(jìn)行了顯示。
即,當(dāng)模式的長度為1時(shí),進(jìn)入對(duì)表現(xiàn)其重復(fù)次數(shù)的變量B是否在255以下進(jìn)行判斷的步驟(S40)。由于能夠用一個(gè)位組的8比特來表現(xiàn)的數(shù)字是255,所以在超過255時(shí),就將255和當(dāng)前位組一起輸出(S50)。
當(dāng)上述255和當(dāng)前位組一起被輸出后,在上述B中對(duì)255進(jìn)行差減(S60),并且再對(duì)B是否為255進(jìn)行判斷(S40)。
當(dāng)上述B在255以下時(shí),要想表現(xiàn)當(dāng)前位組的重復(fù)次數(shù),只要按次序輸出B值和當(dāng)前位組就可以了(S70)。
在圖3的(a)中,由于長度為1的模式11重復(fù)了8次,所以表現(xiàn)為08、11。(參照圖3的(b)和(c))另一方面,當(dāng)表現(xiàn)模式長度的A既不是0也不是1時(shí),就使用本發(fā)明提供的壓縮運(yùn)算法則進(jìn)行壓縮。
即,當(dāng)模式長度既不是0也不是1時(shí),就進(jìn)入判斷該模式的重復(fù)次數(shù)B是不是在64以下的步驟(S80)。這是由于根據(jù)前面已經(jīng)說明過的本發(fā)明的運(yùn)算法則,將一個(gè)模式的上位6比特表現(xiàn)為重復(fù)次數(shù)的原因。
當(dāng)上述B比64大時(shí),表現(xiàn)為一個(gè)模式的變量C的上位6比特中被代入64減去1后所得的63,在下位2比特中代入(A-2)。(S90)正如前面所說明的那樣,上述上位6比特是用來表現(xiàn)重復(fù)次數(shù)的部分,減去1的原因是不存在一次都不重復(fù)的情況,目的是減少比特的浪費(fèi)。
而且,上述下位2比特是體現(xiàn)模式長度的部分,減去2的原因是這里不包括模式長度為1的情況。
然后輸出換碼順序00、上述變量C值和從現(xiàn)在開始重復(fù)的長度(A值)(S100),然后從上述B中減去64之后再進(jìn)入判斷B是否在64以下的步驟(S80)。
如果重復(fù)次數(shù)B在64以下,就將(B-1)代入變量C的上位6比特;將(A-2)代入下位2比特。(S130)下面參照圖3對(duì)本發(fā)明的具體實(shí)施例進(jìn)行說明。
如前面所講的那樣,在圖3的(a)中,長度為2的04、05模式重復(fù)了4次(連續(xù))。
因此,要想對(duì)其進(jìn)行壓縮,如圖3的(b)所示,需要顯示換碼順序00。
然后,由于04、05模式重復(fù)了4次,在(B-1)即4-1的3上乘以4。乘以4的理由與前面所講的一樣,是由于重復(fù)次數(shù)表現(xiàn)在上位6比特中,具有2比特移位的含義。
這里下位2比特中體現(xiàn)的模式長度2被代入A-2后,即2-2,成為0。
然后,由于被輸出的是重復(fù)模式04、05,所以最終被壓縮并輸出的模式,如圖3的(c)所示,變成了00、12、04、05形態(tài)的4個(gè)位組。
據(jù)此,在圖3的(a)中被表現(xiàn)為高頻振動(dòng)模式04、05的8位組,如圖3的(c)所示,被壓縮成4位組進(jìn)行輸出。
并且,在圖3的(a)中,長度為3的06、06、36模式重復(fù)(連續(xù))了2次。
所以,就輸入換碼順序00,并且由于上述模式重復(fù)了2次,所以在(B-1)即(2-1)的1上,為了使其移位2比特而乘以4。
而且,由于模式的長度為3,那么(A-2)即成為1,這樣被表現(xiàn)為1個(gè)位組的值就是5。
然后,如果輸入被重復(fù)的模式06、06、36,那么最終就被壓縮成00、05、06、06、36形態(tài)的5個(gè)位組。
而且,正如前面所講的那樣,由于連續(xù)8次的11按照原來的RLE運(yùn)算法則被輸出為10、11,所以圖3中(a)所示的高頻振動(dòng)圖像按照本發(fā)明的RLE修正運(yùn)算法則可以像圖3中(c)所示那樣被壓縮并輸出。
同樣,在本發(fā)明的實(shí)施例中,雖然模式的長度為4(2比特)時(shí)就可以得到充分的壓縮效果,但是根據(jù)圖像的性質(zhì),當(dāng)長度為8時(shí)的效果更好一些。
下面參照附圖詳細(xì)說明一下針對(duì)被利用本發(fā)明中RLE修正運(yùn)算法則壓縮處理后的圖像進(jìn)行復(fù)原的方法。
圖5是以本發(fā)明為基礎(chǔ)的RLE修正解碼運(yùn)算法則的示意圖。
如圖5所示,為了針對(duì)被利用本發(fā)明的RLE修正編碼運(yùn)算法則壓縮后的圖像進(jìn)行壓縮復(fù)原(解碼,在本發(fā)明中“壓縮復(fù)原”與“解碼”同義),首先要進(jìn)入讀取1位組壓縮圖像的步驟(S210)。
此時(shí),為了便說明將上述讀出的1位組代入A中,然后進(jìn)入判斷A是否為0的步驟。
即,如果上述讀出的1位組為0,就把它作為換碼順序,再讀出下一個(gè)1位組并將之代入變量B中(S230)。
然后,將上述變量B的上位6比特代入C中(S240)。將下位2比特代入變量D中(S250)。
然后,讀出在上述變量D上加上2,即(D+2)位組的壓縮圖像,并且使其重復(fù)C+1次(S260)。這種解碼過程是編碼過程的逆過程。
另一方面,當(dāng)讀出的A不是0時(shí)(S220),由于是按照原有RLE運(yùn)算法則進(jìn)行編碼,所以要將下一個(gè)1位組讀出并代入變量B中(S270),使上述B象上述A一樣重復(fù)(S280)。
然后,對(duì)讀出的數(shù)據(jù)是否為最后的輸入值進(jìn)行確認(rèn)(S290),如果不是最后的值,即還有需要進(jìn)行解碼的圖像時(shí),就從上述(S220)開始重復(fù)程序。
如果上述重復(fù)的結(jié)果是沒有需要進(jìn)行解碼的圖像了,那么解碼步驟就結(jié)束了。
通過上述的說明內(nèi)容,本領(lǐng)域技術(shù)人員完全可以在不偏離本項(xiàng)發(fā)明技術(shù)思想的范圍內(nèi),進(jìn)行多樣的變更以及修改。
因此,本項(xiàng)發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利范圍來確定其技術(shù)性范圍。
權(quán)利要求
1.一種圖像壓縮方法,采用圖像壓縮的RLE運(yùn)算法則,其特征在于,包括求出被輸入模式的長度和重復(fù)次數(shù),然后分別代入變量A和B中的步驟;判定上述變量A是否為0的步驟;如果上述變量A不是0,就判定其是否為1的步驟;如果上述變量A既不是0也不是1就將變量C分為兩個(gè)部分,然后將(B-1)代入上述變量C的上位比特;將(A-2)代入下位比特的步驟;依次輸出換碼順序、上述變量C值、上述被輸入模式中A值的步驟。
2.如權(quán)利要求1所述的圖像壓縮方法,其特征在于,當(dāng)上述變量A為0時(shí),全部圖像壓縮步驟結(jié)束。
3.如權(quán)利要求1所述的圖像壓縮方法,其特征在于,當(dāng)上述變量A為1時(shí),按照普通的RIE運(yùn)算法則完成壓縮。
4.一種圖像復(fù)原方法,包括讀取壓縮圖像的一個(gè)位組,然后代入變量A的步驟;判斷上述讀取位組是否為0的步驟;當(dāng)上述讀取位組為0時(shí),讀取下一個(gè)位組然后代入變量B的步驟;將上述變量B的上位特定比特代入變量C的步驟;將上述變量C的下位特定比特代入變量D的步驟;在上述壓縮圖像中讀出D+2位組,然后將其重復(fù)C+1次的步驟。
5.如權(quán)利要求4所述的圖像復(fù)原方法,其特征在于,還包括當(dāng)上述A不是0時(shí)讀取下一個(gè)位組并代入變量B的步驟和使上述B像上述A那樣更新并輸出的步驟。
全文摘要
本發(fā)明涉及圖像壓縮和復(fù)原的方法,在RLE方式的壓縮當(dāng)中對(duì)高頻振動(dòng)圖像進(jìn)行有效壓縮和復(fù)原。采用圖像壓縮的RLE運(yùn)算法則,包括步驟①求出被輸入模式的長度和重復(fù)次數(shù),然后分別代入變量A和B中;②判定上述變量A是否為0;③如果上述變量A不是0,就判定其是否為1;④如果上述變量A既不是0也不是1就將變量C一分為二;然后給變量C的上位比特輸入(B-1)值,給下位比特輸入(A-2)值;⑤依次輸出換碼順序、上述變量C值、上述被輸入模式中A值。本發(fā)明通過上述各步驟利用以被重復(fù)模式的長度和次數(shù)為基礎(chǔ)的壓縮運(yùn)算法則對(duì)圖像進(jìn)行壓縮,以此來提高圖像壓縮特別是高頻振動(dòng)圖像的壓縮效率。
文檔編號(hào)G06T9/00GK1920883SQ20051009414
公開日2007年2月28日 申請日期2005年8月26日 優(yōu)先權(quán)日2005年8月26日
發(fā)明者張澤洙 申請人:樂金電子(昆山)電腦有限公司