專利名稱:分割游程長度編碼方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
0001本發(fā)明涉及無損數(shù)據(jù)壓縮和編碼。特別地,本發(fā)明的實(shí)施例涉及基于對(duì)數(shù)據(jù)流進(jìn)行編碼的壓縮,其中基于數(shù)據(jù)流的連續(xù)值之間的差對(duì)數(shù)據(jù)流進(jìn)行編碼。
背景0002打印裝置包含多種輸出顯示裝置。諸如激光打印機(jī)、噴墨打印機(jī)、繪圖儀、圖像設(shè)定器與其它打印設(shè)備的這些輸出顯示裝置在紙或類似材料的表面上產(chǎn)生圖像或視覺表示。許多打印裝置通過相應(yīng)于包含在位圖(bitmap)或像素圖(pixelmap)中的信息的打印點(diǎn)而在表面上形成圖像。例如,光柵打印裝置通過根據(jù)相應(yīng)的位圖打印以行和列布置的點(diǎn)而在表面上形成圖像。
0003在計(jì)算機(jī)系統(tǒng)上運(yùn)行的應(yīng)用程序可以生成多個(gè)需要被一起打印的頁面或圖像。這些集合在一起的圖像和頁面組通常被稱為作業(yè)(job)。常常可能在比可以打印每個(gè)任務(wù)更短的一段時(shí)間中請(qǐng)求多個(gè)作業(yè)。這些作業(yè)常常在完成先前排定的作業(yè)之后被排隊(duì)等候打印。作業(yè)可以被發(fā)送到中間存儲(chǔ)裝置,在作業(yè)被發(fā)送到打印機(jī)之前將它們存儲(chǔ)在中間存儲(chǔ)裝置中。
0004常常以頁面描述語言(PDL)來描述作業(yè)中的頁面,頁面描述語言是用于描述將由輸出裝置顯示的對(duì)象的高級(jí)語言。這些語言通常是允許精確表示頁面的已解釋語言。表示作業(yè)或作業(yè)組分(諸如頁面、平面和帶)的數(shù)據(jù)流或文件常常具有很大的尺寸。這導(dǎo)致由于其尺寸的低速數(shù)據(jù)傳輸和低速數(shù)據(jù)處理。
附圖的簡要描述0005通過舉例的方式借助附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行說明,其中相同的附圖標(biāo)記指示類似的元件,并且附圖不是限制性的。應(yīng)當(dāng)注意,在本公開內(nèi)容中,當(dāng)提到“一個(gè)”實(shí)施例時(shí)不一定是指相同的實(shí)施例,并且這種提法意味著至少一個(gè)。
0006
圖1A是示意性的解碼數(shù)據(jù)路徑的圖示。
0007圖1B是示意性的編碼數(shù)據(jù)路徑的圖示。
0008圖2A是編碼處理的流程圖。
0009圖2B是解碼處理的流程圖。
0010圖3A是示意性的分類的圖示。
0011圖3B是示意性的編碼的圖示。
0012圖3C是示意性的編碼的第二模式的圖示。
詳細(xì)描述0013圖1A和1B是示意性的編碼和解碼數(shù)據(jù)路徑的圖。圖1A說明了解碼數(shù)據(jù)路徑,其中從存儲(chǔ)裝置117上的文件或類似的數(shù)據(jù)結(jié)構(gòu)中獲取編碼的數(shù)據(jù)并將其放置在存儲(chǔ)器119中。存儲(chǔ)裝置117可以是硬盤、可移動(dòng)的介質(zhì)或類似的存儲(chǔ)裝置。存儲(chǔ)器119可以是同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)或類似的裝置。解碼處理器121從存儲(chǔ)器119中取出編碼的數(shù)據(jù)。在一個(gè)實(shí)施例中,解碼處理器121可以是運(yùn)行解碼應(yīng)用程序的軟件實(shí)現(xiàn)的通用處理器(GPP)。在另一實(shí)施例中,解碼處理器121是專用集成電路(ASIC)。解碼處理器121包括檢出器101和解碼器103。檢出器101對(duì)來自存儲(chǔ)器119的編碼的數(shù)據(jù)字進(jìn)行解析,并向解碼器103發(fā)送單獨(dú)的代碼。檢出器101可以是電路或由解碼處理器121執(zhí)行的軟件。解碼器103可以是電路或由解碼處理器121執(zhí)行的軟件。解碼器103將所述代碼轉(zhuǎn)換成光柵數(shù)據(jù)流或類似格式的數(shù)據(jù)流,該數(shù)據(jù)流被發(fā)送到輸出接口105。輸出接口105準(zhǔn)備數(shù)據(jù)并將數(shù)據(jù)發(fā)送到諸如應(yīng)用程序、存儲(chǔ)裝置或類似目的地的輸出目的地。在一個(gè)實(shí)施例中,輸出接口105可以是打印控制器接口,其將進(jìn)入的光柵數(shù)據(jù)流轉(zhuǎn)換成一組驅(qū)動(dòng)打印機(jī)械(print engine)的信號(hào)。
0014圖1B說明編碼數(shù)據(jù)路徑,其中從例如掃描機(jī)械或類似裝置的輸入源中接收作為數(shù)據(jù)流的數(shù)據(jù)。該數(shù)據(jù)流通過諸如通用串行總線(USB)或類似介質(zhì)的介質(zhì)被輸入接口129所接收。輸入接口129向編碼處理器127發(fā)送作為一組字節(jié)或字的數(shù)據(jù)。在一個(gè)實(shí)施例中,編碼處理器127可以是執(zhí)行編碼應(yīng)用程序的軟件實(shí)現(xiàn)的GPP。在另一實(shí)施例中,編碼處理器127是ASIC。編碼處理器127包括編碼器113和打包器115。編碼器113可以是使用下面描述的分割游程長度編碼(SRLE)對(duì)從輸入接口129接收的字節(jié)進(jìn)行編碼的電路或軟件。然后編碼的數(shù)據(jù)被發(fā)送到打包器115。打包器115可以是電路或軟件,其接收可變大小的代碼,并通過將代碼填塞到字中以及將代碼分解在多個(gè)字上來形成字。然后將打包的代碼的字存儲(chǔ)在存儲(chǔ)器125中,并隨后將其發(fā)送到存儲(chǔ)裝置117。存儲(chǔ)器125可以是SDRAM或類似的裝置。存儲(chǔ)裝置117可以是硬盤、可移動(dòng)介質(zhì)或類似的存儲(chǔ)裝置。
0015多個(gè)解碼和解碼處理器(121,127)可以各自被用在并行數(shù)據(jù)路徑中。在一個(gè)實(shí)施例中,獨(dú)立的數(shù)據(jù)路徑可以被用來處理帶、頁面、或平面。例如,獨(dú)立的并行數(shù)據(jù)路徑可以被用于紅、綠和藍(lán)平面(RGB)。
0016圖2A是用于通過編碼處理器對(duì)數(shù)據(jù)流進(jìn)行編碼的SRLE編碼處理的流程圖。在一個(gè)實(shí)施例中,對(duì)每一個(gè)進(jìn)入的字節(jié)或數(shù)據(jù)單位進(jìn)行分類、分組,并將其編碼為字面值(Literal)代碼、近匹配(NearMatch)代碼、或匹配(Match)代碼。近匹配代碼可以被進(jìn)一步劃分成近匹配重復(fù)代碼和近匹配單一代碼。
0017字面值代碼被用來對(duì)數(shù)據(jù)流的值序列中的單一初始值和偏離先前值超過已定義范圍的各單一值進(jìn)行編碼。例如,如果范圍被定義為-16到+15或近似于15或16的絕對(duì)值差,則如果值50(十進(jìn)制)跟在值20的后面,那么值50將被編碼為字面值。然而,如果值50跟在值45的后面,則值50將不被編碼為字面值,這是因?yàn)樗霾?落入-16到+15的范圍內(nèi)。
0018近匹配代碼被用來對(duì)數(shù)據(jù)流序列中的在已定義范圍內(nèi)偏離先前值的值進(jìn)行編碼。近匹配代碼包括游程長度字段,以便指示在數(shù)據(jù)流中出現(xiàn)的連續(xù)相同值的數(shù)量。在一個(gè)實(shí)施例中,獨(dú)立的近匹配單一代碼具有比一般的近匹配代碼更小的尺寸,并且可以在壓縮方面被用作最佳化。近匹配單一編碼不具有游程長度字段,這使其比可以具有任意大小的游程長度字段的一般的近匹配代碼更小。在另一實(shí)施例中,不使用近匹配單一編碼,并且近匹配重復(fù)代碼可以對(duì)長度為1的游程長度進(jìn)行編碼。在一個(gè)實(shí)施例中,游程長度字段的大小是10比特。
0019匹配代碼被用來對(duì)數(shù)據(jù)流序列中的與位于其之前的值相同的值進(jìn)行編碼。例如,如果字面值代碼后面的值完全相同,那么就使用匹配代碼。匹配代碼包括游程長度字段,以便指示在數(shù)據(jù)流中出現(xiàn)的連續(xù)相同值的數(shù)量。在一個(gè)實(shí)施例中,游程長度是10比特。游程長度字段的大小可以被改變,以處理更長或更短的游程。
0020在一個(gè)實(shí)施例中,通過對(duì)一組狀態(tài)變量進(jìn)行初始化,編碼處理開始(塊201)。狀態(tài)變量可以包括跟蹤當(dāng)前被處理的游程類型的游程類型變量、跟蹤當(dāng)前游程的長度(即,相同連續(xù)值的數(shù)量)的游程長度變量、以及跟蹤之前被處理的先前值的“舊值”。在這個(gè)上下文中,游程是可以以單一代碼進(jìn)行編碼的一組值。游程類型相應(yīng)于可能的編碼類型(例如,近匹配、匹配或字面值)。默認(rèn)的舊值可以是0或其它任何已知的值。默認(rèn)的游程長度是0。
0021通過在數(shù)據(jù)流中順序地獲取下一個(gè)值或者“新值”(例如,字節(jié)),該處理繼續(xù)(塊203)。數(shù)據(jù)流可以包含8比特每像素的值(bpp)。在另一實(shí)施例中,編碼的基本單位可以是字或一組任意長度的比特。然后可以確定是否已到達(dá)文件末尾(塊205)。如果已到達(dá)文件末尾,那么基于指定的游程類型和所計(jì)算的游程長度對(duì)任何未編碼的游程進(jìn)行編碼(塊207)。如果檢測(cè)到文件末尾,則可以生成附加的文件末尾代碼(塊208)。
0022如果未檢測(cè)到文件末尾,那么檢查新值,以確定其是否和所存儲(chǔ)的舊值相同(塊209)。如果新值和舊值相同,那么游程長度增加1(塊211)。在對(duì)數(shù)據(jù)流中的每一值進(jìn)行處理時(shí),游程長度變量充當(dāng)計(jì)數(shù)(tally),以跟蹤游程的長度。在游程長度計(jì)數(shù)已被增加之后,然后檢查游程類型,以確定是否已經(jīng)為當(dāng)前游程指定了近匹配(塊213)。例如,如果值序列0×20 0×26 0×26(十六進(jìn)制)出現(xiàn),則第二值0×26開始一個(gè)近匹配的游程。當(dāng)對(duì)第三值0×26進(jìn)行處理時(shí),游程長度增加1。在檢測(cè)到值的變化或者游程長度超出固定的編碼界限之前,不對(duì)游程進(jìn)行編碼。
0023在一個(gè)實(shí)施例中,如果已指定近匹配,那么對(duì)游程長度進(jìn)行檢查以確定是否已達(dá)到編碼界限(塊215)。如果游程長度沒超出其編碼界限,那么就獲取下一個(gè)值以用于處理(塊203)。在一個(gè)實(shí)施例中,檢查游程長度以確定其是否超出4。如果游程長度已超出4,那么該游程被編碼為近匹配重復(fù)代碼(塊217)。然后對(duì)于任何也是相同的后續(xù)值將游程類型指定為匹配(塊219)。如果序列中的值與先前值精確匹配,則指定匹配游程,其中該先前值被編碼為字面值或者(在游程長度有限的情況下)被編碼為近匹配重復(fù)。然后將游程長度復(fù)位到0(塊220)。然后可以獲取下一個(gè)值以用于處理(塊203)。對(duì)于游程長度4的檢查和對(duì)于近匹配重復(fù)代碼的編碼基于只具有2比特以用于對(duì)游程長度進(jìn)行編碼的近匹配重復(fù)代碼。在另一實(shí)施例中,近匹配重復(fù)代碼可以具有更大或更小的比特長度,以允許編碼不同大小的游程長度。對(duì)游程長度的檢查將被相應(yīng)地調(diào)整到用于游程長度字段的比特?cái)?shù)。在另一個(gè)實(shí)施例中,近匹配重復(fù)代碼可以被構(gòu)造成處理任意大小的游程長度。
0024然后,在新值等于舊值(塊209)并且游程類型不是近匹配(塊213)的情況下,指定匹配的游程類型(塊221)。在一個(gè)實(shí)施例中,如果已指定匹配,那么對(duì)游程長度進(jìn)行檢查以確定是否已達(dá)到編碼界限(塊223)。如果游程長度已超出其編碼界限,那么獲取下一個(gè)值以用于處理(塊203)。在一個(gè)實(shí)施例中,檢查游程長度以確定其是否超出1027。如果游程長度超出1027,那么將該游程編碼為匹配代碼(塊225)。然后將游程長度復(fù)位到0(塊227)。然后可以獲取下一個(gè)值以用于處理(塊203)。對(duì)于游程長度1027的檢查和對(duì)于匹配代碼的編碼基于只具有10比特以用于對(duì)游程長度進(jìn)行編碼的匹配代碼。在另一實(shí)施例中,匹配代碼可以具有更大或更小的比特長度,以允許對(duì)不同大小的游程長度進(jìn)行編碼。對(duì)游程長度的檢查可以被相應(yīng)地調(diào)整到游程長度字段的比特?cái)?shù)。在進(jìn)一步的實(shí)施例中,可以將匹配代碼構(gòu)造成處理任意大小的游程長度。
0025在新值不等于舊值的情況下(塊209),進(jìn)行檢查以確定游程長度是否大于0(塊229)。大于0的游程長度指示一個(gè)未編碼的游程已結(jié)束,這是因?yàn)橐殉霈F(xiàn)值的變化。對(duì)游程類型進(jìn)行檢查以確定該游程是否是近匹配游程(塊231)。如果該游程不是近匹配游程,那么將其編碼為匹配代碼(塊239)。如果該游程是近匹配,那么進(jìn)行檢查以確定游程長度是否等于1(塊233)。如果游程長度等于1,那么該游程被編碼為近匹配單一代碼(塊235)。如果游程長度不等于1,那么將該游程編碼為近匹配重復(fù)代碼(塊237)。在另一實(shí)施例中,可以不使用近匹配單一代碼,并且不是匹配的所有游程都被編碼為近匹配代碼。不管對(duì)游程的編碼如何(匹配、近匹配重復(fù)或近匹配單一),處理繼續(xù),這是因?yàn)閷?duì)游程的編碼不包括新值。新值通過偏離舊值來指示游程結(jié)束。
0026在新值不等于舊值的情況下(塊209),將新值與舊值相比較,以確定二者的差是否落入預(yù)定義范圍內(nèi)(塊241)。在一個(gè)實(shí)施例中,通過使用8bpp值,可以使用-16到+15的范圍。這個(gè)范圍確定新字節(jié)中的低階比特是否已從先前字節(jié)中的低階比特發(fā)生變化。在流的第一值被分析的情況中,可以使用默認(rèn)的已知舊值。例如,該默認(rèn)值可以是0。如果該差在范圍之外,那么該值被編碼為字面值(塊243),并且游程類型被指定為字面值(塊245)。例如,數(shù)據(jù)流的初始值可以是0×20。如果默認(rèn)舊值是0,那么值0×20被編碼為字面值。游程長度被復(fù)位到0,這是因?yàn)樵诋?dāng)前流程中上一個(gè)獲取的值已被編碼,并且要獲取的下一個(gè)值將開始下一游程(塊247)。
0027然而,如果所述差在預(yù)定義范圍內(nèi),那么游程類型被指定為近匹配(塊251)。將游程指定為近匹配是標(biāo)識(shí)這種情況的分類當(dāng)前被分析的值序列將被編碼為近匹配,并且在編碼可以完成之前必須確定游程的長度。近匹配的游程長度被設(shè)置為1,這是因?yàn)楫?dāng)前游程包括上一個(gè)獲取的值(塊253)。在任一種情況中(編碼為字面值或指定為近匹配),在下一個(gè)值被獲取(塊203)之前,新值被保存為舊值(塊249)并且對(duì)數(shù)據(jù)流的處理繼續(xù)。
0028在一個(gè)實(shí)施例中,圖2A的流程圖中的編碼方案是用來對(duì)數(shù)據(jù)流進(jìn)行編碼的第一編碼模式。第一編碼處理對(duì)于高分辨率原始圖像數(shù)據(jù)是最優(yōu)的。第一編碼處理可以是默認(rèn)處理。使用這個(gè)第一編碼模式,可以使用圖2B的流程圖所示的簡單解碼處理對(duì)所編碼的數(shù)據(jù)進(jìn)行解碼。通過獲得下一個(gè)要被解碼的代碼,解碼處理開始(塊271),并且解碼處理生成從該代碼導(dǎo)出的二進(jìn)制值(塊273)。字面值包含精確的二進(jìn)制值。近匹配代碼指示要被生成的二進(jìn)制值和已生成的先前二進(jìn)制值之間的差。匹配代碼指示要被生成的二進(jìn)制值與先前的二進(jìn)制值相同。解碼處理通過檢查正被評(píng)估的代碼的游程長度來確定該游程是否完成(塊275)。如果該游程未完成,則解碼處理減少游程長度(塊281)并生成下一個(gè)值(塊273)。當(dāng)該游程完成時(shí),該處理檢查文件代碼的末尾(塊277)。如果沒有到達(dá)文件的末尾,那么獲取要被評(píng)估的下一個(gè)代碼(塊271)。如果找到文件的末尾,那么解碼處理完成(塊279)。
0029在一個(gè)實(shí)施例中,可以與關(guān)于圖2A在上面描述的第一編碼處理相結(jié)合地利用第二解碼處理。第二編碼處理可以用于已知包含許多長的值游程的數(shù)據(jù)流。例如,第二編碼處理可以用于包含許多長的相同像素游程的圖像。在一個(gè)實(shí)施例中,第二編碼處理和已被過濾的數(shù)據(jù)一起使用。第二處理連同緊隨其后的相同值的數(shù)量的游程長度一起對(duì)像素、字節(jié)或數(shù)據(jù)單位的完全值進(jìn)行編碼。第一編碼方法(即,SRLE編碼)和第二編碼方法包括指示切換到其它模式的代碼。這使編碼器能依據(jù)數(shù)據(jù)類型或文檔的已知屬性、使用上述兩種編碼處理來對(duì)文檔進(jìn)行編碼。在第一處理和第二處理之間的切換可以由編碼器按照需要在掃描線內(nèi)、從掃描線到掃描線或從帶到帶自適應(yīng)地完成。這實(shí)現(xiàn)改進(jìn)的壓縮比,同時(shí)保持圖像質(zhì)量。切換代碼允許解碼器容易地檢測(cè)到編碼處理中的切換,以便對(duì)文件或數(shù)據(jù)流進(jìn)行快速解碼。在另一實(shí)施例中,可以利用其它編碼處理以作為第二編碼方法。其它的第二編碼方法包括TIFF、JPEG和類似的算法。
0030可以和被分割成平面(例如,青、黃、品紅和黑平面)、帶或類似結(jié)構(gòu)的文檔一起使用第一和第二編碼系統(tǒng)??梢耘c面向?qū)ο蟮奈臋n和文件一起使用第一和第二編碼系統(tǒng),其中,主要對(duì)由文件或這些文件的解釋所關(guān)聯(lián)或封裝的數(shù)據(jù)進(jìn)行編碼。所述兩種編碼處理都是無損的。
0031第一編碼系統(tǒng)可以達(dá)到513.5∶1和0。8∶1之間的壓縮比(即,在壓縮文件和原始文件之間的513.5∶1的壓縮比)。具有600點(diǎn)每英寸(dpi)的圖片文件的壓縮比平均在2到6比1之間。包含文本的文件的壓縮比平均高于30比1。包含藝術(shù)線條的文件的壓縮比平均高于10比1。第二編碼系統(tǒng)可以達(dá)到391.2∶1和0.73∶1之間的壓縮比。具有600dpi的圖片文件的壓縮比平均在3到10比1之間。包含文本的文件的壓縮比平均高于30比1。包含藝術(shù)線條的文件的壓縮比平均高于30比1。
0032圖3A是示意性的編碼和數(shù)據(jù)流。數(shù)據(jù)流301由一系列的連續(xù)字節(jié)組成。所述字節(jié)以十六進(jìn)制編寫。第一字節(jié)303是0×20,并且最后的字節(jié)305是0×62。各字節(jié)被順序處理。第一字節(jié)303被編碼為字面值307。在一個(gè)實(shí)施例中,沒有先前值,并且第一字節(jié)303必須被分類為字面值。在另一實(shí)施例中,編碼處理器利用已知的默認(rèn)起始值,并且關(guān)于該默認(rèn)值對(duì)第一實(shí)際值進(jìn)行分類。
0033數(shù)據(jù)流中下兩個(gè)字節(jié)309都是0×26。第一個(gè)被分類為近匹配,這是因?yàn)槠渑c先前值0×20的差值落入-16到+15的預(yù)定范圍內(nèi)(即,6)。下一個(gè)值也是0×26。這個(gè)值與先前值分組在一起,并且分類被最終定為具有2字節(jié)的游程的近匹配311。下一個(gè)字節(jié)313被分類為近匹配單一315,這是因?yàn)殡S后的字節(jié)不具有匹配值。字節(jié)317具有值0×57。這個(gè)字節(jié)與先前字節(jié)的差落在已定義范圍之外。字節(jié)317被編碼為字面值。隨后的具有值0×57的字節(jié)組319被編碼為具有游程8的匹配。在文件末尾處生成專用的文件末尾代碼321。
0034圖3B是數(shù)據(jù)流301的示意性的編碼。這個(gè)編碼利用表I的操作碼和格式。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以使用其它代碼將數(shù)據(jù)分類成字面值、近匹配、匹配和專用逸出碼的基礎(chǔ)分類。所有的值都是二進(jìn)制的。操作碼標(biāo)識(shí)數(shù)據(jù)分類的類型。與操作碼相關(guān)聯(lián)的游程長度字段標(biāo)識(shí)該類別的連續(xù)值的數(shù)量。值字段是編碼的序列的實(shí)際值或與先前編碼的差值。用于字面值的字段長度基于對(duì)8比特每像素?cái)?shù)據(jù)進(jìn)行的編碼。該字段大小可以被調(diào)整,以反映要被編碼的數(shù)據(jù)的每像素比特的大小。近匹配操作碼的字段大小基于標(biāo)識(shí)該數(shù)據(jù)類別的范圍。如果利用更寬或更窄的范圍,可以調(diào)整字段長度。
表I0035圖3C是對(duì)數(shù)據(jù)流進(jìn)行編碼的示意性第二模式的圖示。第二編碼模式對(duì)于具有相等值的長游程的數(shù)據(jù)是最優(yōu)的。數(shù)據(jù)流351被解析為一組值和游程長度對(duì)353。每一對(duì)的所述值是序列的值,并且游程長度是該值的連續(xù)出現(xiàn)的數(shù)量。數(shù)據(jù)流351的第一值361是0×00。有8個(gè)匹配的連續(xù)值。示意性的編碼流355是值和游程長度對(duì)353的二進(jìn)制表示。所述編碼是基于示意性的編碼方案,其中前8個(gè)比特表示編碼的值,并且接下來的3個(gè)比特表示游程的長度,或指示在隨后的10比特中對(duì)長流程進(jìn)行編碼(即,二進(jìn)制值0b000-0b110編碼1到7的游程長度,同時(shí)二進(jìn)制值0b111指示接下來的10比特編碼長度為8到1027的游程)。本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)理解,可以用其它類似的編碼方案來表示游程長度。例如可以用多于3或10個(gè)比特來指示游程,或者可以使用單一游程字段長度。第二模式也可以具有保留的值以指示文件的末尾(例如,二進(jìn)制值xxxxxxxx 111 11111111100)或者編碼模式的切換(例如,二進(jìn)制值xxxxxxxx 111 1111111111)。
0036在前述的說明書中,已經(jīng)參考其特定實(shí)施例對(duì)本發(fā)明進(jìn)行了描述。然而很明顯的是,在不脫離所附權(quán)利要求書中闡述的本發(fā)明的精神和范圍的情況下,另外可以進(jìn)行各種修改和變化。因此,說明書和附圖應(yīng)被看作是說明性而不是限制性的。
權(quán)利要求
1.一種方法,包括將一組數(shù)據(jù)的值與先前值進(jìn)行比較;如果其差在一個(gè)范圍之外,就用第一代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼;如果該組數(shù)據(jù)的值不匹配該先前值但是在該范圍內(nèi),就用第二代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼;以及如果第一組數(shù)據(jù)的值不匹配該先前值,就用第三代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼。
2.如權(quán)利要求1所述的方法,其中第一代碼包括該組數(shù)據(jù)的實(shí)際值。
3.如權(quán)利要求1所述的方法,其中第二代碼包括所述差和相同連續(xù)值的數(shù)量。
4.如權(quán)利要求1所述的方法,其中第三代碼指示匹配和相同連續(xù)值的數(shù)量。
5.如權(quán)利要求1所述的方法,其中利用第一代碼、第二代碼和第三代碼的其中之一對(duì)第一組數(shù)據(jù)進(jìn)行的編碼是無損的。
6.如權(quán)利要求1所述的方法,進(jìn)一步包括如果第一組數(shù)據(jù)的值在第一范圍內(nèi)且隨后的值不匹配第一組數(shù)據(jù)的值,就用第四代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼。
7.如權(quán)利要求1所述的方法,其中所述范圍被最優(yōu)化,以對(duì)包括8比特像素的該組數(shù)據(jù)進(jìn)行編碼。
8.如權(quán)利要求1所述的方法,進(jìn)一步包括切換到替換的編碼模式。
9.一種設(shè)備,包括對(duì)包括第一值和第二值的數(shù)據(jù)流進(jìn)行編碼的處理器,該處理器將數(shù)據(jù)的第一值與第二值進(jìn)行比較以確定其差,如果該差是0,則該處理器用第一代碼對(duì)第二值進(jìn)行編碼,如果該差在一個(gè)范圍內(nèi),則該處理器用第二代碼對(duì)第二值進(jìn)行編碼,而如果該差在該范圍之外,則該處理器用第三代碼對(duì)第二值進(jìn)行編碼。
10.如權(quán)利要求9所述的設(shè)備,進(jìn)一步包括耦合到該處理器的第一裝置,其用于將從該處理器接收的代碼的數(shù)據(jù)流分割成一組字。
11.如權(quán)利要求9所述的設(shè)備,其中所述處理器是專用集成電路。
12.如權(quán)利要求9所述的設(shè)備,進(jìn)一步包括存儲(chǔ)該數(shù)據(jù)流的存儲(chǔ)器裝置。
13.一種設(shè)備,包括對(duì)數(shù)據(jù)流進(jìn)行解碼的處理器,該處理器從包括一組對(duì)該數(shù)據(jù)流進(jìn)行編碼的操作碼的該數(shù)據(jù)流中生成二進(jìn)制輸出,其中第一操作碼標(biāo)識(shí)字面值,第二操作碼標(biāo)識(shí)一組匹配值,第三操作碼標(biāo)識(shí)一組匹配值和差值。
14.如權(quán)利要求12所述的設(shè)備,進(jìn)一步包括耦合到該處理器的第一裝置,其用于對(duì)來自該數(shù)據(jù)流的字進(jìn)行解析以輸出到該處理器。
15.如權(quán)利要求12所述的設(shè)備,其中所述處理器是通用處理器。
16.如權(quán)利要求13所述的設(shè)備,進(jìn)一步包括存儲(chǔ)該數(shù)據(jù)流的存儲(chǔ)器裝置。
17.一種設(shè)備,包括用于將一組數(shù)據(jù)的值與先前值進(jìn)行比較的裝置;如果其差在一個(gè)范圍之外、用于用第一代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼的裝置;如果該組數(shù)據(jù)的值不匹配該先前值但是在該范圍內(nèi)、用于用第二代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼的裝置;以及如果該組數(shù)據(jù)的值不匹配該先前值、用于用第三代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼的裝置。
18.如權(quán)利要求17所述的設(shè)備,進(jìn)一步包括如果該值在第一范圍內(nèi)并且隨后的值不匹配該組數(shù)據(jù)的值、用于用第四代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼的裝置。
19.如權(quán)利要求17所述的設(shè)備,其中所述范圍被最優(yōu)化,以對(duì)包括8比特像素的該組數(shù)據(jù)進(jìn)行編碼。
20.如權(quán)利要求17所述的設(shè)備,進(jìn)一步包括對(duì)于具有相同像素的長游程的數(shù)據(jù)流最優(yōu)化的、用于切換編碼模式的裝置。
21.一種機(jī)器可該介質(zhì),具有存儲(chǔ)在其中的一組指令,當(dāng)執(zhí)行該組指令時(shí),該組指令導(dǎo)致機(jī)器執(zhí)行一組操作,該組操作包括將一組數(shù)據(jù)的值與先前值進(jìn)行比較;如果其差在一個(gè)范圍之外,就用第一代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼;如果該組數(shù)據(jù)的值不匹配該先前值但是在該范圍內(nèi),就用第二代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼;以及如果第一組數(shù)據(jù)的值不匹配該先前值,就用第三代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼。
22.如權(quán)利要求21所述的機(jī)器可讀介質(zhì),具有存儲(chǔ)在其中的另外的指令,當(dāng)執(zhí)行所述另外的指令時(shí),所述另外的指令導(dǎo)致機(jī)器執(zhí)行一組操作,該組操作進(jìn)一步包括如果第一組數(shù)據(jù)的值在第一范圍內(nèi)并且隨后的值不匹配第一組數(shù)據(jù)的值,就用第四代碼對(duì)該組數(shù)據(jù)進(jìn)行編碼。
23.如權(quán)利要求21所述的機(jī)器可讀介質(zhì),具有存儲(chǔ)在其中的另外的指令,當(dāng)執(zhí)行所述另外的指令時(shí),所述另外的指令導(dǎo)致機(jī)器執(zhí)行一組操作,該組操作進(jìn)一步包括切換到替換的編碼模式。
全文摘要
本發(fā)明的實(shí)施例包括一種用于對(duì)數(shù)據(jù)流進(jìn)行無損編碼和壓縮的系統(tǒng)和方法。該數(shù)據(jù)流可以是圖像、文本或二者的組合??梢詮挠?jì)算機(jī)應(yīng)用程序或外設(shè)中接收該數(shù)據(jù)流。所述編碼通過將數(shù)據(jù)流的連續(xù)值進(jìn)行比較并基于連續(xù)數(shù)據(jù)值之間的差對(duì)數(shù)據(jù)進(jìn)行編碼來對(duì)數(shù)據(jù)流進(jìn)行壓縮。
文檔編號(hào)G06FGK1902826SQ200480034816
公開日2007年1月24日 申請(qǐng)日期2004年9月24日 優(yōu)先權(quán)日2003年9月25日
發(fā)明者M·R·利普曼, D·蘇, R·B·羅賓遜 申請(qǐng)人:皮爾雷斯系統(tǒng)公司