專利名稱:利用熵編碼的彩色圖像數(shù)據(jù)的無損壓縮的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及連續(xù)色調(diào)圖像的無損壓縮。更特別地,本發(fā)明提供一種壓縮位于掃描行上的像素的數(shù)字連續(xù)色調(diào)圖像的方法,每個像素具有由至少一個顏色通道值定義的像素值,顏色通道值具有為B個位(B>1)的精度。應(yīng)理解,顏色通道也可包括單個黑白通道。
本發(fā)明還涉及一種計算機(jī)程序產(chǎn)品,用于當(dāng)該計算機(jī)程序產(chǎn)品在其中執(zhí)行該方法的計算機(jī)和設(shè)備、特別是打印控制器上運(yùn)行時執(zhí)行該方法。最后,本發(fā)明涉及一種用于解壓縮已經(jīng)利用本發(fā)明被壓縮的圖像數(shù)據(jù)的方法。
背景技術(shù):
通常用頁面描述語言(PDL)來定義被發(fā)送到打印機(jī)的頁面。PDL的實(shí)例是來自Adobe系統(tǒng)有限公司的PostScript。在計算機(jī)上運(yùn)行的PDL解釋器解釋該P(yáng)DL,從而為要被打印的每頁產(chǎn)生數(shù)字頁面圖像。這些頁面圖像可以是能夠直接被傳到打印引擎的形式,或者這些頁面圖像能以數(shù)字連續(xù)色調(diào)圖像的形式被存儲,數(shù)字連續(xù)色調(diào)圖像可在將它們傳到打印引擎之前進(jìn)一步被處理。例如當(dāng)需要在PDL解釋器中不可用的特殊的圖像處理時,后者方法可被用來例如將連續(xù)色調(diào)圖像轉(zhuǎn)換為該打印引擎能夠接受的格式。
對于使用后者方法的彩色打印機(jī),連續(xù)色調(diào)圖像必須被存儲并且可能被傳送到圖像處理硬件。然而,連續(xù)色調(diào)圖像的數(shù)據(jù)量可能非常大。例如,對于A4大小的600dpi連續(xù)色調(diào)(每個顏色通道8位)CMYK圖像來說,需要大約140兆字節(jié)。這意味著,花費(fèi)相當(dāng)大的存儲量來存儲該圖像,并且花費(fèi)相當(dāng)長的時間量來傳輸該圖像。這個問題的通常的解決方案是壓縮該連續(xù)色調(diào)圖像。
例如,圖11示出了打印控制器的示意圖,該打印控制器也被稱為“光柵圖像處理器”(RIP)或者“色彩服務(wù)器”。該打印控制器解釋打印作業(yè)(例如,用PostScript來定義的打印作業(yè)),在磁盤上存儲頁面圖像并且當(dāng)需要時從那里將頁面圖像傳輸?shù)酱蛴C(jī)引擎。
彩色打印控制器包含解釋進(jìn)入的打印作業(yè)并將該打印作業(yè)轉(zhuǎn)換為未被壓縮的連續(xù)色調(diào)彩色頁面圖像的PDL解釋器112。直接在生成頁面圖像之后,由本發(fā)明的壓縮器114壓縮這些頁面圖像。得到的被壓縮的頁面圖像被存儲在形成頁面存儲器的硬盤116上。當(dāng)該引擎需要打印該作業(yè)時,該被壓縮的頁面圖像從該硬盤被讀取并通過打印機(jī)接口電纜118(例如,火線)被傳輸?shù)皆撘妗?br>
圖12示出了通過打印機(jī)接口電纜118被連接到圖11的打印控制器的打印機(jī)。
在緩沖器122中接收來自該打印控制器的被壓縮的頁面圖像。該被壓縮的圖像數(shù)據(jù)從緩沖器122被傳到將被壓縮的頁面圖像轉(zhuǎn)換為未被壓縮的圖像的解壓器124。通過圖像處理模塊126傳遞未被壓縮的圖像,以將該未被壓縮的圖像轉(zhuǎn)換為被用來驅(qū)動打印機(jī)引擎128的引擎專用位圖。
直接在PDL解釋器之后壓縮圖像數(shù)據(jù)的事實(shí)節(jié)約了圖像往返于硬盤傳輸時的帶寬,從而允許使用比未被壓縮的數(shù)據(jù)所需要的磁盤更慢的磁盤。還允許更小的磁盤。同樣,降低了通過打印機(jī)接口電纜傳輸圖像所需的帶寬,因此可以使用具有較少可用帶寬的接口。
各種各樣的無損圖像壓縮技術(shù)可用于壓縮連續(xù)色調(diào)圖像,這些技術(shù)例如JPEG-LS。
JPEG-LS基于HP的LOCO-1算法,并且已經(jīng)被ISO/ITU-T選為連續(xù)色調(diào)圖像的無損壓縮標(biāo)準(zhǔn)。在M.Weinberger、G.Seroussi、G.Saipiro的“LOCO-1A Low Complexity,Context-Based,LosslessImage Compression Algorithm(低復(fù)雜度、基于上下文的無損圖像壓縮算法)”中給出了該算法的說明,該文獻(xiàn)在www.hpl.hp.com/loco/HPL-98-19 3Rl.pdf上可得到。
然而,提供合理壓縮量的壓縮技術(shù)壓縮圖像要花費(fèi)比PDL解釋器在相同計算機(jī)上執(zhí)行時生成相同圖像所花費(fèi)的時間多得多的時間。這意味著,如果將這種壓縮方法用于壓縮頁面圖像,則打印機(jī)的性能會降低到無法接受的水平。
足夠快的現(xiàn)有技術(shù)(例如,簡單的1維行程長度壓縮)平均并沒有提供足夠的壓縮。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種能夠在通用處理器上有效地實(shí)現(xiàn)并且允許無損壓縮PDL生成的圖像的低復(fù)雜度的軟件解決方案,該軟件解決方案的執(zhí)行時間遠(yuǎn)小于PDL解釋器在相同的計算機(jī)上生成圖像所花費(fèi)的時間。
這將允許壓縮在與被用來運(yùn)行PDL解釋器相同的計算機(jī)上實(shí)現(xiàn),而無需額外的硬件并且沒有大的性能損失。
本發(fā)明的另一目的是提供一種壓縮系數(shù)至少與現(xiàn)有技術(shù)的無損圖像壓縮算法一樣好的低復(fù)雜度的壓縮器。
本發(fā)明的另一目的是允許解壓器的簡單的硬件實(shí)現(xiàn)方案。
通過權(quán)利要求1中所要求保護(hù)的壓縮方法達(dá)到這些和其它目的。
根據(jù)這種方法,像素值與基于相鄰像素預(yù)測的預(yù)測像素值進(jìn)行比較。由于在許多情況下像素值并不會在位置上快速變化,所以實(shí)際像素值與預(yù)測像素值之間的差通常很小,并且如果不多的話,將有幾個前導(dǎo)零位。通過去掉這些前導(dǎo)零位,該數(shù)據(jù)被恢復(fù)為較少位,這有效地導(dǎo)致了壓縮。
在從屬權(quán)利要求中陳述了更有利的方面。這些方面說明了被用來以這樣的方式準(zhǔn)備圖像數(shù)據(jù),使得實(shí)際像素值與預(yù)測像素值之間的最終的差變得甚至更小,從而導(dǎo)致更好的壓縮。
壓縮針對PDL生成的圖像被優(yōu)化,但是該壓縮也可有利地被用于其它種類的數(shù)字圖像,例如用于掃描圖像。
在下文中,將參考本發(fā)明的優(yōu)選實(shí)施方式的公開內(nèi)容,并且特別是參考附圖,更加詳細(xì)地論述本發(fā)明的這些和另外的特征、方面和優(yōu)點(diǎn),其中圖1示出由典型的PDL解釋器縮放為雙倍分辨率的圖像像素;圖2示出如根據(jù)本發(fā)明所生成的那樣的針對掃描行的數(shù)據(jù)塊和代碼塊的構(gòu)造;圖3示出根據(jù)本發(fā)明的行程長度碼中的行程長度字段的解釋的實(shí)例;圖4示出在像素掃描行中的PREV和LEFT顏色的說明;圖5示出預(yù)測器的實(shí)例;
圖6示出描述根據(jù)本發(fā)明的第一實(shí)施方式的顏色值的壓縮方法的流程圖;圖7A/B示出第一實(shí)施方式中的顏色通道數(shù)據(jù)的組合的示意性表示;圖8示出描述根據(jù)本發(fā)明的第一實(shí)施方式的完整的壓縮方法的流程圖;圖9示出描述根據(jù)本發(fā)明的第二實(shí)施方式的完整的壓縮方法的流程圖;圖10示出描述根據(jù)本發(fā)明的第二實(shí)施方式的灰度值壓縮方法的流程圖;圖11示出打印控制器的示意圖;和圖12示出打印機(jī)的示意圖。
具體實(shí)施例方式
根據(jù)本發(fā)明的壓縮的概況本發(fā)明基本上打算供PDL(頁面描述語言,諸如Postscript)解釋器生成的頁面圖像的壓縮使用。這種圖像有特定的特性,這些特性將在下面描述。針對這些圖像,這種壓縮是最優(yōu)的,但是這種壓縮也可被用于其它種類的數(shù)字圖像,例如,用于掃描圖像。在后者情況下,掃描儀噪聲消極地影響壓縮比,但是試驗(yàn)已揭示,仍然可達(dá)到合理的壓縮比。在這種情況下,噪聲抑制預(yù)處理步驟將改善結(jié)果,因?yàn)樵撛肼曇种祁A(yù)處理步驟會增加行程長度壓縮的機(jī)會,盡管隨后壓縮不再是無損的。
此外,已經(jīng)用軟件實(shí)現(xiàn)了依照本發(fā)明的壓縮器,以致壓縮圖像所需的執(zhí)行時間平均遠(yuǎn)遠(yuǎn)小于PDL解釋器在相同計算機(jī)上生成相同圖像所花費(fèi)的時間。這允許壓縮器在運(yùn)行PDL解釋器的相同的計算機(jī)上被實(shí)現(xiàn),而無需額外的硬件并且沒有大的性能損失。
壓縮格式是簡單的,以便用硬件簡單地實(shí)現(xiàn)解壓器。這尤其意味著,能夠限制解壓器所需的存儲器數(shù)量。
同樣,已經(jīng)設(shè)計了壓縮器,以致硬件實(shí)現(xiàn)的解壓器能夠以固定的速率產(chǎn)生被解壓的像素數(shù)據(jù)。這意味著,被壓縮的數(shù)據(jù)的最大局部展開必定受到限制。
要被壓縮的圖像的圖像特性要被壓縮的圖像是優(yōu)選地由PDL解釋器生成的彩色或黑白連續(xù)色調(diào)圖像。除非特別定義,否則在下面的說明中,術(shù)語“彩色”涉及天然色調(diào)和黑白淺灰。PDL生成的圖像有某些典型特性-在顏色不變的區(qū)域中(例如,許多頁面中的白色背景),沒有噪聲。這意味著,為了壓縮顏色不變的區(qū)域,可以使用象行程長度編碼這樣的簡單機(jī)制來壓縮。
-為了將所采樣的圖像縮放到設(shè)備分辨率,大多數(shù)PDL(象PostScript)使用最鄰近插值法。最鄰近插值法給裝置像素提供最接近于該裝置像素的初始像素的顏色。例如,如圖1中所示,對于在600dpi的裝置上所打印的PostScript作業(yè)中的300-dpi圖像來說,每個初始像素被映射到2×2個裝置像素上。
現(xiàn)在將描述本發(fā)明的第一實(shí)施方式,該第一實(shí)施方式是用于有色圖像的壓縮方法。
第一實(shí)施方式中的壓縮圖像格式被壓縮的圖像格式由連續(xù)字節(jié)組成,每個字節(jié)包含兩個4位半字節(jié)。每個字節(jié)中的第一半字節(jié)是該字節(jié)的高階4位;每個字節(jié)中的第二半字節(jié)是該字節(jié)的低階4位。在這個第一實(shí)施方式中,壓縮圖像格式中的數(shù)據(jù)的最小單位是半字節(jié)。用半字節(jié)作為數(shù)據(jù)的最小單位而不是用位運(yùn)算的原因是因?yàn)樵谕ㄓ锰幚砥魃习胱止?jié)比單個位更有效地被處理。由多個半字節(jié)組成的所有數(shù)用最高階的頭半字節(jié)和最低階的尾半字節(jié)表示。
被壓縮的圖像格式以掃描行在該頁面上出現(xiàn)的順序被組織為連續(xù)的信息塊,每個信息塊描述一個掃描行。選擇掃描行式的構(gòu)造(與頁面式的構(gòu)造相對)的原因是掃描行式的構(gòu)造允許基于掃描行處理,而無需必須存儲完整的被壓縮的頁面圖像。
圖2示出了掃描行的信息塊的基本形式的實(shí)例。每個信息塊由代碼塊緊跟其后的數(shù)據(jù)塊組成。
數(shù)據(jù)塊和代碼塊中的前4個半字節(jié)每個形成了長度字段,該長度字段以多個8字節(jié)來說明該數(shù)據(jù)/代碼塊的長度。緊跟著這個長度字段的是實(shí)際的代碼/數(shù)據(jù)半字節(jié)。塊末端的任何未使用的半字節(jié)值被設(shè)為0。數(shù)據(jù)/代碼塊最多可長(2^16-1)*8=524288個字節(jié)。長度字段允許基于掃描行瀏覽被壓縮的數(shù)據(jù)(快速跳過掃描行數(shù)據(jù))。
代碼塊包含連續(xù)的代碼半字節(jié),這些代碼半字節(jié)是解壓器的指令,說明要被生成的像素,從掃描行上的第一像素開始并朝著最后一個像素運(yùn)算。
代碼塊中的某些代碼需要附加數(shù)據(jù)。這個附加數(shù)據(jù)以與相對應(yīng)代碼在相同的掃描行的代碼塊中出現(xiàn)的順序相同的順序被存儲在數(shù)據(jù)塊中。
第一實(shí)施方式中所使用的壓縮代碼給出了PDL生成的圖像的屬性(無噪聲的顏色不變的較大區(qū)域),2維行程長度編碼將很好地壓縮多個PDL生成的圖像。然而,包含被采樣的圖像的頁面(例如,照片)通常有許多不同的顏色,而許多像素的顏色與其先前被處理的相鄰像素不同,所以行程長度編碼將不會很好地執(zhí)行。對于這種情況,附加代碼是必需的。本發(fā)明提供一種在上述兩種情況下都很好地執(zhí)行的方法。
首先,將描述根據(jù)本發(fā)明的具有專用代碼的基本2維行程長度壓縮方法。
LEFT代碼定義代碼LEFT,該代碼LEFT表示當(dāng)前像素與其左邊的相鄰像素顏色相同。給這個代碼加上行程長度,以表示該代碼應(yīng)該被重復(fù)若干次。這是第一維上的行程長度編碼。作為第一個在掃描行上運(yùn)行的代碼LEFT表示相對應(yīng)的像素具有白色。
TOP代碼為了在2維進(jìn)行行程長度編碼,定義代碼TOP,該代碼TOP表示當(dāng)前像素與上面的像素顏色相同。給這個代碼加上行程長度,以表示該代碼應(yīng)該被重復(fù)若干次。這是第二維上的行程長度編碼。第一掃描行上的代碼TOP表示相對應(yīng)的像素為白色。
注意,這個代碼非常有助于以例如設(shè)備分辨率的一半壓縮包含被采樣的圖像的頁面。由于PostScript/PDF的最鄰近插值法,在縮放到設(shè)備分辨率之后,對這樣一個圖像,每隔一個掃描行與上一個掃描行相同(見圖1)。這意味著,在這種情況下,這樣一個圖像內(nèi)的每隔一個掃描行可使用TOP行程(run)來壓縮。
NEW代碼由于不能使用代碼TOP或者LEFT來編碼每個像素,所以不得不增加產(chǎn)生新顏色的像素的代碼,該代碼在被壓縮的數(shù)據(jù)中被規(guī)定。代碼NEW表示當(dāng)前像素具有在該數(shù)據(jù)塊中用高階頭半字節(jié)以C、M、Y、K的順序被規(guī)定為未被壓縮的顏色值的顏色。對于四個顏色通道中的每一個來說,值0對應(yīng)于無油墨覆蓋,而值255對應(yīng)于全油墨覆蓋。
為了減少壓縮格式的最不利情況的展開(以允許簡單的硬件解壓器),給這個代碼增加行程長度,以表示該代碼應(yīng)被重復(fù)若干次。
增加行程長度如上所述,上面的代碼LEFT、TOP和NEW中的每個都有增加的行程長度。行程長度值的概率分布大致是負(fù)指數(shù)分布的。
一種增加行程長度的簡單方式是要增加說明行程長度的額外的半字節(jié)。然而,這將意味著,每個代碼將變?yōu)?個半字節(jié)長(第一半字節(jié)用于代碼而第二半字節(jié)用于行程長度)。還意味著,由于,例如后面跟著行程長度為1的代碼TOP的行程長度為1的代碼TOP將與行程長度為2的代碼TOP意義相同,所以該代碼中有相當(dāng)多的冗余。
為了防止這些問題,將相同代碼的連續(xù)出現(xiàn)解釋為一個行程。在代碼LEFT、TOP和NEW的每個代碼值中,為行程長度保留1位,以被稱為L。
通過連接每個代碼中的行程長度位來形成二進(jìn)制數(shù),共同解釋幾個連續(xù)的代碼LEFT、TOP或NEW。給該數(shù)增加取決于連續(xù)代碼數(shù)量的偏移值,以形成實(shí)際的行程長度值。
結(jié)果是,用單個代碼半字節(jié)能規(guī)定長度為1或2的TOP、LEFT或NEW行程。用2個半字節(jié)能規(guī)定長度為3、4、5或6的行程,等等。
下表1示出所連接的行程長度位的解釋。
表1所連接的行程長度位的解釋在圖3中,示出了如何解釋NEW、LEFT和TOP代碼序列及其行程長度的實(shí)例。作為實(shí)例,解碼十六進(jìn)制串EDCCDDBA。
下面,描述除了上述TOP、LEFT和NEW代碼之外可以使用的非行程長度碼。
PREV代碼為了允許有效壓縮頁面上全分辨率二進(jìn)制采樣的圖像,增加了產(chǎn)生具有如下所述的PREV顏色的一個像素的代碼PREV。
每個掃描行的開頭,PREV顏色被設(shè)為K-黑色(C=0,M=0,Y=0,K=255)。
每次LEFT顏色改變?yōu)椴煌念伾珪r,就將PREV顏色設(shè)為LEFT顏色的舊值。
圖4示出了示例性掃描行,該掃描行的前5個像素具有黃色,中間5個像素具有青色,而后5個像素具有品紅色。那么在第一像素,PREV顏色是K-黑色而LEFT顏色是白色。在第二直至第6像素,PREV顏色是白色而LEFT顏色是黃色。在第7像素直至第11像素,PREV顏色是黃色而LEFT顏色是青色。在第12直至第16像素,PREV顏色是青色而LEFT顏色是品紅色。
如果掃描行上的顏色在兩個顏色(例如,黑色和白色)之間交替,則PREV代碼可被用來在掃描行上為每個顏色轉(zhuǎn)變規(guī)定顏色。這個代碼產(chǎn)生1個像素,所以不需要行程長度。
TOPL、TOPR代碼代碼TOPL規(guī)定當(dāng)前像素與其西北方的相鄰像素顏色相同。代碼TOPR規(guī)定當(dāng)前像素與其東北方的相鄰像素顏色相同。這些代碼產(chǎn)生1個像素,所以不需要行程長度。
下面的表2示出了到目前為止已經(jīng)定義的代碼。編號是任意的并反映代碼的最終編號。代碼1到7(“0001”到“0111”)仍然可用。
表2針對2維行程長度編碼所定義的代碼用于壓縮顏色值的附加代碼到目前為止已經(jīng)定義的代碼允許壓縮大多數(shù)簡單頁面。然而,包含被采樣的圖像(例如,照片)的頁面包含許多顏色不同于其先前被處理的相鄰像素的像素,所以要使用NEW代碼來表示這些像素,這導(dǎo)致展開而不是壓縮。由于被采樣的圖像中的連續(xù)顏色值經(jīng)常類似,所以可能壓縮那些顏色值。
現(xiàn)在將參考圖6說明一種根據(jù)本發(fā)明的用于壓縮高度關(guān)聯(lián)的顏色值的方法。
基本策略由下列步驟組成1)基于前面的值預(yù)測值。
2)確定預(yù)測值與實(shí)際值之間的差額。
3)針對經(jīng)常出現(xiàn)(小差額)的值用短代碼來編碼該差額,而針對較不經(jīng)常出現(xiàn)的值用較長的代碼來編碼該差額。
不同的無損圖像壓縮算法(象JPEG無損、JPEG-LS等等)使用類似的策略。差別大多數(shù)在預(yù)測器的結(jié)構(gòu)和差值的編碼上。
由于將被打印的每個頁面都必須經(jīng)過壓縮器,所以壓縮時間必須短。這意味著,不得不使用能夠在通用處理器上有效實(shí)現(xiàn)的簡單的預(yù)測器和差值的簡單編碼。
由于關(guān)于附近的像素值編碼了考慮中的像素的灰度值,所以不僅訪問了當(dāng)前像素的值(圖6中的步驟S1),而且訪問了之前已經(jīng)被處理的預(yù)定相鄰像素的值(這些像素值在解壓步驟中也可用)。在預(yù)測步驟中,那些相鄰像素值被用來準(zhǔn)備預(yù)測像素值。
預(yù)測步驟(圖6S2)在文獻(xiàn)中已經(jīng)提出了基于像素X的先前被解碼的北方、西方和西北方像素值來預(yù)測像素X的值的各種各樣的方法。在圖5中,示出了JPEG無損中所使用的預(yù)測器。其它算法使用更復(fù)雜的(非線性的)預(yù)測器(例如,JPEG-LS)或者當(dāng)圖像正被壓縮時而被修改的自適應(yīng)預(yù)測器。
由于需要一種快速的算法,所以在本實(shí)施方式中使用一種簡單的預(yù)測器像素X左邊的像素的顏色(或者如果X是該掃描行上第一像素則是白色)。也可選擇更高級的預(yù)測器。應(yīng)根據(jù)情況作出選擇,因?yàn)橥ǔ_@種預(yù)測器將增加壓縮系數(shù),但壓縮器的執(zhí)行時間也會增加。
確定色差的步驟大多數(shù)無損壓縮算法是針對灰度圖像定義的,而差額是預(yù)測值與實(shí)際像素值之間的灰度級的差。為了壓縮彩色圖像,該算法獨(dú)立地被用于每個顏色通道。這樣一種方法的缺點(diǎn)是,由于顏色通道通常強(qiáng)烈相關(guān),所以壓縮不是最優(yōu)的。
在根據(jù)本發(fā)明的編碼方法中,與所有顏色通道值一起工作?;旧?,在CMYK圖像的情況下,將確定4個顏色差值,并將這些差值組合成一個單個顏色差值。注意,對于具有N個顏色通道的圖像的壓縮來說,要確定N個顏色通道差值并將這些差值組合成單個顏色差值。
在低油墨覆蓋值時,對許多CMYK打印機(jī)來說,K通道經(jīng)常為0。為了最優(yōu)使用這一點(diǎn),已經(jīng)定義了2種模式用于說明色差值CMY模式和CMYK模式。
在CMYK模式,在所有4個顏色通道上確定色差。
CMY模式可以在K通道值并不變化時使用。在CMY模式,在3個通道(K與所預(yù)測的K值相同)上確定色差。
去相關(guān)(圖6S3,S4)由于顏色通道的值通常相關(guān),將不確定初始通道值的色差值,但是將首先如下轉(zhuǎn)換這些差值在CMYK模式C1=MC2=(K-M+128)mod 256C3=(C-M+128)mod 256C4=(Y-M+128)mod 256在CMY模式C1=MC2=(Y-M+128)mod 256C3=(C-M+128)mod 256這個去相關(guān)步驟改善了壓縮而沒有大的性能損失。其它轉(zhuǎn)換也能對顏色通道進(jìn)行去相關(guān)。
確定差額將去相關(guān)步驟S3用于所預(yù)測的顏色值C*、M*、Y*、K*,并輸送已去相關(guān)的預(yù)測值C1*、C2*、C3*和C4*。同樣,將去相關(guān)步驟S4用于要被壓縮的像素的實(shí)際顏色值C、M、Y、K,并輸送已去相關(guān)的預(yù)測值C1、C2、C3和C4。
然后,在最終的已去相關(guān)的顏色值之間確定差值ΔC1、ΔC2、ΔC3和ΔC4。如將被理解的那樣,在CMY模式僅確定三個差值ΔC1、ΔC2、ΔC3。
編碼色差的步驟目標(biāo)是將已去相關(guān)的顏色值的通道差ΔC1、ΔC2、ΔC3(和ΔC4)編碼為通常小的單個組合數(shù)ΔC(在CMY模式為24位而在CMYK模式為32位)。然后,通過從這個數(shù)去掉先導(dǎo)零半字節(jié)能夠有效地編碼該數(shù)。
差值的變換(圖6S6)通過將每個通道差值ΔC1、ΔC2、ΔC3和ΔC4轉(zhuǎn)換為相應(yīng)的字節(jié)值ΔC1’、ΔC2’、ΔC3’和ΔC4’來開始,這些字節(jié)值能夠表示任何可能的色差值并且對于小色差來說是小值。
每個通道的差值可以是正的或者是負(fù)的。為了將這些值組合成單個色差值,將這些值映射到正值上,當(dāng)差額的絕對值小時,該正值小。這可以通過用跳過不可能的差值的這種方式將差值0、1、-1、2、-2等等映射到值0、1、2、3、4、5等等來完成。例如,當(dāng)去相關(guān)預(yù)測器通道C1*、C2*、C3*和C4*中的一個通道的值為2時,不映射低于-2的負(fù)差值ΔC、ΔC2、ΔC3和ΔC4以及高于253的正差值,因?yàn)檫@些值不可能出現(xiàn)(所有顏色通道值在0到255的范圍內(nèi))。
這個映射可使用下列公式完成設(shè)P為去相關(guān)預(yù)測器的顏色通道的字節(jié)值,而設(shè)A為去相關(guān)實(shí)際顏色通道的相對應(yīng)的顏色通道的字節(jié)值。那么下面的C語言表達(dá)式執(zhí)行上面所描述的映射(A==P?0(P<128?(A>2*P?A(A>P?2*(A-P)-12*(P-A)))(A<=2*P-255?255-A(A>P?2*(A-P)-12*(P-A)))))在實(shí)際的壓縮器軟件中,這些值被預(yù)先計算好并被存儲在256×256字節(jié)的查詢表中。
可替換地,可以使用將差值0、-1、1、-2、2等等映射到值0、1、2、3、4、5等等的映射。也可能是其它類似的映射,例如,基于從實(shí)際文件中收集并被存儲在256×256的查詢表中的統(tǒng)計量的映射。
當(dāng)開始解碼時,解壓器可以如下反轉(zhuǎn)這個轉(zhuǎn)換。設(shè)P為去相關(guān)預(yù)測器的顏色通道的字節(jié)值,而設(shè)C是被轉(zhuǎn)換的色差值,則下面的C語言函數(shù)可被用來確定已去相關(guān)的實(shí)際顏色通道值的顏色通道值unsigned char color(unsigned char P,unsigned char C){ int M0=(C&1)?-10 //布線(wiring)int M7=(P&128)?-10 //布線int C0=M0^(C>>1); //“異或”int P7=(M7^P)<<1; //“異或”int C7=M7^C;// “異或”int PP=P7-C; //加法器int PC=P-C0; //加法器int res=(PP&256)?C7PC;//多路轉(zhuǎn)換(mux)return res;}這個函數(shù)反映了能夠用硬件實(shí)現(xiàn)轉(zhuǎn)換的方式。
通過將該轉(zhuǎn)換用于顏色通道的差額(ΔC1,ΔC2,ΔC3和ΔC4),得到3個(在CMY模式中)或4個(在CMYK模式中)色差字節(jié)值ΔC1’、ΔC2’、ΔC3’(和ΔC4’),這些色差字節(jié)值說明色差并且通常很小。
組合顏色通道(圖6S7)在下一步驟S7中,將轉(zhuǎn)換后的差值ΔC1’、ΔC2’、ΔC3’(和ΔC4’)組合為通常小的單個數(shù)ΔC。為了這樣,合并單獨(dú)值的位,如圖7A(CMYK)和7B(CMY)中所示。
如在圖7A中能夠看到的那樣,在CMYK模式,簡單地交織4個色差值ΔC1’、ΔC2’、ΔC3’和ΔC4’的位。在CMY模式(圖7B),并不簡單地交織每個差值的位。原因是ΔC1’通道的值通常大于其它通道的值。針對一組有代表性的測試圖像用實(shí)驗(yàn)確定這些位的最優(yōu)排列次序。在CMYK模式,這也可作為對交織的替換方案來完成。
合并的結(jié)果是單個24或32位數(shù)ΔC,該數(shù)ΔC表示色差并且針對小色差來說具有小值。
本發(fā)明范圍內(nèi)的可替換的方法是使用C維查詢表,其中C是顏色通道的數(shù)量。該查詢表用C個色差值來編索引,而且該表中的每個條目包含唯一的號碼,以致經(jīng)常出現(xiàn)的色差具有小值而很少出現(xiàn)的色差具有較大的值??梢曰趶臏y試圖像所收集的統(tǒng)計量來填充該表。
編碼差值(圖6S8/S9)最后的步驟是通過從ΔC中去除高階0半字節(jié)(S8)并針對剩余值生成代碼(S9)來以壓縮格式有效地編碼數(shù)ΔC。在編碼步驟S9中,生成一個代碼半字節(jié),并將該代碼半字節(jié)存儲在代碼塊(圖2)中,而且生成整數(shù)個相關(guān)的數(shù)據(jù)半字節(jié),并將這些數(shù)據(jù)半字節(jié)存儲在數(shù)據(jù)塊中。
通過使用6個代碼半字節(jié)值以使用1、2、3、4、5或6個額外的數(shù)據(jù)半字節(jié)來表示色差ΔC,可以編碼色差值并實(shí)現(xiàn)壓縮。如果,在CMYK模式,色差ΔC不能使用6個數(shù)據(jù)半字節(jié)來表示,則用初始代碼NEW來表示未被壓縮的顏色值(將8個數(shù)據(jù)半字節(jié)用于顏色值,即每個顏色通道2個數(shù)據(jù)半字節(jié))。
這6個新的代碼將被稱為NEW1到NEW6并且具有代碼值1到6,其中,NEW1具有1個數(shù)據(jù)半字節(jié) NEW6具有6個數(shù)據(jù)半字節(jié),以表示色差值ΔC。
第7個自由代碼半字節(jié)被用于新的代碼NEM6,該新的代碼NEM6與NEW6作用相同但是也在CMY與CMYK模式之間切換模式。
由新代碼生成的像素數(shù)量NEW1到NEW6代碼中的每一個和代碼NEM6能夠給每個代碼生成1個像素。然而,頁面上的大多數(shù)被采樣的圖像的分辨率低于設(shè)備分辨率。
PostScript解釋器將最鄰近插值法用于按比例放大圖像。這導(dǎo)致行中的幾個像素具有完全相同的值(參見圖1)。該壓縮器可以使用LEFT代碼來壓縮這種情況,但是,如果允許NEW1到NEW6和NEM6代碼生成N個相同像素的行程,則更有效。每個圖像的開頭N固有地被設(shè)為1。
這意味著,需要增加允許改變N的代碼。這并不經(jīng)常發(fā)生,所以并不需要短代碼來改變N。
為了使其成為可能,利用了以下事實(shí),即上面定義的NEW1到NEW6代碼的一些被編碼的色差值將不出現(xiàn)。
第一半字節(jié)0(代碼NEWi*)N→1永遠(yuǎn)不會出現(xiàn)的自變量值是具有為零的第一半字節(jié)的自變量值(由于在將其編碼之前去掉了該值的先導(dǎo)零半字節(jié))。使用那些自變量值如下改變半字節(jié)代碼值2到6的意義如果該自變量值的第一半字節(jié)為零,則代碼2到6將被解釋為代碼NEW2*到NEW6*。這些代碼與代碼NEW2到NEW6意義相同,除了這些代碼總是只產(chǎn)生1個像素而不是N個像素(當(dāng)前的N值),并且還將N設(shè)為1。
代碼INCN→N+1永遠(yuǎn)不會出現(xiàn)的另一種組合是代碼半字節(jié)1與零自變量值,因?yàn)檫@意味著該像素的顏色與其西方的相鄰像素的顏色相同,而使用代碼LEFT來編碼那種情況。使用這種組合來定義新的代碼INC,該新的代碼INC產(chǎn)生顏色與左邊像素相同的像素并且N的增量為1。
代碼NEW如果不能僅僅用6個半字節(jié)來表達(dá)該顏色,則壓縮器不可能總是使用NEW1*到NEW6*代碼之一來將N復(fù)位為1。因此,具有大于1個新顏色值(即,L>1)的代碼NEW也將N設(shè)為1。
下表3示出了所有代碼半字節(jié)及其解釋
表3代碼半字節(jié)及其解釋的概要根據(jù)本發(fā)明的壓縮方法既然已經(jīng)定義了被壓縮的圖像格式,將解釋根據(jù)本發(fā)明的示例性壓縮器可用來產(chǎn)生這種格式的方法。參考圖8。
像素處理順序該示例性壓縮器起始于圖像的第一掃描行來逐個掃描行地處理圖像,并且繼續(xù)直到已處理所有掃描行,(步驟S26到S29)。對于每個掃描行來說,該壓縮器起始于該掃描行上的最左邊的像素來處理所有像素,直到該掃描行上的所有像素已被處理。新掃描行一開始,就在初始化步驟S11將PREV和LEFT像素設(shè)為“白色”。
每個像素的步驟該壓縮器試圖通過設(shè)法將不同代碼用于以下面的固定順序壓縮像素來壓縮每下一個像素1)該像素與TOP顏色進(jìn)行比較(S12)。這是北方相鄰像素的顏色,或者如果當(dāng)前像素在第一掃描行上,則顏色為白色。如果發(fā)現(xiàn)匹配,則該壓縮器通過生成一個或多個TOP代碼來生成TOP行程,并通過給這個行程加上所有后面能用TOP行程編碼的像素來使這個行程的長度最大化(S13)。然后,該過程從步驟1對下一個未被壓縮的像素重新開始(S26,S27)。
2)如果前面的步驟并不允許編碼該像素,則該像素與LEFT顏色進(jìn)行比較(S14)。這是西方相鄰像素的顏色,或者如果當(dāng)前像素在一掃描行的開始處,則顏色為白色。如果發(fā)現(xiàn)匹配,則該壓縮器通過生成一個或多個LEFT代碼來生成LEFT行程,并通過給這個行程加上所有后面能用LEFT行程編碼的像素來使這個行程的長度最大化(S15)。然后,該過程從步驟1對下一個未被壓縮的像素重新開始(S26,S27)。
3)如果前面的步驟并不允許編碼該像素,則該像素與PREV顏色進(jìn)行比較(S16)。此前已經(jīng)解釋了PREV顏色的值。如果發(fā)現(xiàn)匹配,則該壓縮器生成PREV代碼(S17)。然后,該過程從步驟1對下一個未被壓縮的像素重新開始(S26,S27)。
4)如果前面的步驟并不允許編碼該像素,則該像素與TOPL顏色進(jìn)行比較(S18)。這是西北方相鄰像素的顏色,或者如果該西北方相鄰像素不存在,則顏色為白色。如果發(fā)現(xiàn)匹配,則該壓縮器生成TOPL代碼(S19)。然后,該過程從步驟1對下一個未被壓縮的像素重新開始(S26,S27)。
5)如果前面的步驟并不允許編碼該像素,則該像素與TOPR顏色進(jìn)行比較(S20)。這是東北方相鄰像素的顏色,或者如果該東北方相鄰像素不存在,則顏色為白色。如果發(fā)現(xiàn)匹配,則該壓縮器生成TOPR代碼(S21)。然后,該過程從步驟1對下一個未被壓縮的像素重新開始(S26,S27)。
6)如果前面的步驟并不允許編碼該像素,則應(yīng)用此前在“用于壓縮顏色值的附加代碼”部分中所描述的用于壓縮顏色值的方法(S22)。如果K通道值與所預(yù)測的K通道值相同,則CMY模式被用來壓縮該顏色,否則就使用CMYK模式。然后檢查(S23)是否產(chǎn)生可接受的NEWi代碼,即,模式不變的6個或更少個半字節(jié)的色差值。如果是這樣,則與色差半字節(jié)一起生成NEW1到NEW6代碼中的適當(dāng)?shù)囊粋€代碼(S24)。如果不是這種情況,則生成代碼NEW,而新的顏色值不被壓縮地被寫到數(shù)據(jù)塊中(S25)。
如果前面的模式不同于被用來壓縮該像素的模式,并且如果該色差值的長度為6個半字節(jié)或更少,則與該色差半字節(jié)一起生成代碼NEM6。如果該色差值比6個半字節(jié)長,則生成代碼NEW,并且新的顏色值未被壓縮地被寫到數(shù)據(jù)塊。這些步驟沒有在圖8中明確地示出,但是這些步驟可被認(rèn)為形成步驟S24和S25的部分。
如果N的值大于具有那個顏色的連續(xù)像素的數(shù)量,而色差值的長度為5個半字節(jié)或更少,則與之前加上一空的半字節(jié)的色差半字節(jié)一起生成NEW2*到NEW6*代碼中的適當(dāng)?shù)囊粋€代碼。如果這不可能,則為當(dāng)前像素和下一個像素生成代碼NEW,并將當(dāng)前像素和下一像素的顏色值未被壓縮地寫到數(shù)據(jù)塊。這些步驟沒有在圖8中明確地示出,但是可被認(rèn)為形成步驟S24和S25的部分。
然后,該過程從步驟S11對下一個未被壓縮的像素重新開始(S26,S27)。
行程長度至少為2的代碼NEW使得N被復(fù)位為1。
為了該壓縮器在適當(dāng)?shù)臅r候增加N,每次LEFT行程跟隨在范圍1到6中的代碼(表示新的顏色),該壓縮器都存儲其狀態(tài)(除非一狀態(tài)之前已經(jīng)被存儲了少于32個像素)。從那一點(diǎn)開始,記住在掃描行上具有相同的顏色的最少M(fèi)個連續(xù)像素。
如果壓縮器確定增加N將允許更好的壓縮,則壓縮器將其狀態(tài)恢復(fù)到先前存儲的狀態(tài)(從而放棄存儲那一狀態(tài)之后它生成的任何輸出)并且通過生成一個或多個INC代碼來對M的值增加N。接著,壓縮在用所存儲的狀態(tài)表示的點(diǎn)重新開始。
本發(fā)明范圍內(nèi)的可能的簡化的實(shí)例壓縮步驟3、4和5可以以不同的順序完成,而沒有顯著的壓縮損耗。
壓縮步驟3、4和5可以不考慮壓縮器,而對大多數(shù)圖像來說沒有顯著的壓縮損耗。然后,可以從該壓縮格式中去除相對應(yīng)的代碼PREV、TOPL和TOPR。
壓縮步驟1和2可被交換,而壓縮沒有顯著的變化。
不是具有CMYK和CMY模式,而是只有CMYK模式工作,雖然有一些壓縮損耗。利用一種模式,可以從壓縮格式中去除代碼NEM6。
N可以被固定為1,雖然有一些壓縮損耗。然后,可以從壓縮格式中去除代碼INC和NEW2*到NEW5*。
代碼NEW的行程長度降低了壓縮格式的最大展開。如果不需要最大展開,則代碼NEW不需要行程長度。
根據(jù)本發(fā)明的解壓方法對于每個連續(xù)的掃描行,從圖像的第一掃描行開始并且繼續(xù)到最后一個掃描行,解壓器處理來自代碼塊的代碼半字節(jié),并從數(shù)據(jù)塊中取出相對應(yīng)的數(shù)據(jù)半字節(jié)。從最左邊的像素開始給掃描行上的連續(xù)像素分配解壓縮后的顏色值。
實(shí)際上,給每個像素一次分配一顏色。
-當(dāng)該解壓器遇到代碼PREV時,該解壓器給當(dāng)前像素分配(該解壓器記住的)PREV顏色。上文解釋了PREV顏色的值。
-當(dāng)該解壓器遇到代碼值1(十六進(jìn)制為0001)到6(十六進(jìn)制為0110)之一時,該解壓器檢查數(shù)據(jù)塊中的下一個數(shù)據(jù)半字節(jié)的值。
如果該數(shù)據(jù)半字節(jié)為非零,則該代碼被解釋為代碼NEW1到NEW6之一。在那種情況下,通過反轉(zhuǎn)壓縮器所應(yīng)用的轉(zhuǎn)換步驟,該解壓器根據(jù)當(dāng)前模式結(jié)合數(shù)據(jù)塊中的差值存儲而根據(jù)預(yù)測器的顏色值重建下一個像素的顏色值。這個顏色值隨后被分配給從當(dāng)前的像素開始的N個連續(xù)像素。
預(yù)測器的顏色值是掃描行上的先前被解壓的像素的顏色,或者如果當(dāng)前像素是該掃描行上的第一個,則為白色。
如果該數(shù)據(jù)半字節(jié)為零,而該代碼值大于1,則該代碼被解釋為代碼NEW2*到NEW6*之一。在那種情況下,通過反轉(zhuǎn)壓縮器所應(yīng)用的轉(zhuǎn)換步驟,該解壓器根據(jù)當(dāng)前模式結(jié)合數(shù)據(jù)塊中的差值存儲而根據(jù)預(yù)測器的顏色值重建顏色值。這個顏色值隨后被分配給當(dāng)前像素。另外,該解壓器將N設(shè)為1。
如果該數(shù)據(jù)半字節(jié)為零,而該代碼值為1,則該代碼被解釋為代碼INC。在那種情況下,該解壓器將先前被解壓的像素的顏色(或者如果當(dāng)前像素是該掃描行上的第一像素,則顏色為白色)分配給當(dāng)前像素。另外,該解壓器將N增加1。
-當(dāng)該解壓器遇到代碼NEM6(代碼值0111)時,通過反轉(zhuǎn)壓縮器所應(yīng)用的轉(zhuǎn)換步驟,該解壓器切換當(dāng)前模式,并根據(jù)當(dāng)前模式結(jié)合數(shù)據(jù)塊中的差值存儲而根據(jù)預(yù)測器的顏色值重建顏色值。這個顏色值隨后被分配給從當(dāng)前的像素開始的N個連續(xù)像素。
-當(dāng)該解壓器遇到代碼TOPL(代碼值1000)時,該解壓器復(fù)制來自先前被解壓的西北方相鄰像素的顏色,并將該顏色分配給當(dāng)前像素。如果沒有這樣的相鄰像素,則該解壓器給當(dāng)前像素分配白色。
-當(dāng)該解壓器遇到代碼TOPR(代碼值1001)時,該解壓器復(fù)制來自先前被解壓的東北方相鄰像素的顏色,并將該顏色分配給當(dāng)前像素。如果沒有這樣的相鄰像素,則該解壓器給當(dāng)前像素分配白色。
-當(dāng)該解壓器遇到代碼TOP(代碼值101L)時,該解壓器收集來自數(shù)據(jù)塊的所有緊隨的TOP代碼,并利用上面描述的方法確定行程長度R。然后,給從當(dāng)前像素開始的R個像素的每一個分配來自其北方的相鄰像素的顏色。如果該解壓器正在第一掃描行上進(jìn)行解壓,則所有R個像素都分配為白色。
-當(dāng)該解壓器遇到代碼LEFT(代碼值110L)時,該解壓器收集來自代碼塊的所有緊隨的LEFT代碼并利用上面描述的方法確定行程長度R。然后,給從當(dāng)前像素開始的R個像素分配來自其左邊的相鄰像素的顏色。如果當(dāng)前像素是掃描行上的第一像素,則給所有R個像素都分配白色。
-當(dāng)該解壓器遇到代碼NEW(代碼值111L)時,該解壓器收集來自代碼塊的所有緊隨的NEW代碼,并利用上面描述的方法確定行程長度R。然后,該解壓器從該數(shù)據(jù)塊中取出R個未被壓縮的顏色值,并將這些顏色值分配給從當(dāng)前像素開始的隨后的R個像素。如果行程長度R大于1,則該解壓器將N設(shè)為1。
壓縮方法的評估為了評估壓縮方法的性能,使用壓縮器來壓縮一系列圖像,并將結(jié)果(壓縮時間和壓縮系數(shù))與用JPEG-LS壓縮相同圖像的結(jié)果進(jìn)行比較。也將壓縮時間與采用Adobe PostScript解釋器生成這些頁面的時間進(jìn)行比較。
所有測試是在2.4GHz的Pentium 4上完成的。在AdobePostScript解釋器上運(yùn)行PostScript測試文件,并壓縮得到的600dpi連續(xù)色調(diào)CMYK位圖。該位圖的大小是A4(4958×7040像素),得到未被壓縮的大小為136345千字節(jié)。在PostScript解釋器上,DeviceRGB的解釋被設(shè)為sRGB,而DeviceCMYK的解釋被設(shè)為歐洲地區(qū)墨水標(biāo)準(zhǔn)(Euroscale)。使用了歐洲地區(qū)墨水標(biāo)準(zhǔn)輸出簡檔。
所用的PostScript測試文件包含復(fù)雜但逼真的頁面描述。已經(jīng)包括了特別構(gòu)造的PostScript文件(chrisA4.ps),該P(yáng)ostScript文件包含帶有許多非常精細(xì)的細(xì)節(jié)(像片鑲嵌頁面,其包含由許多非常小的圖像組成的頁面大小的圖像)的極為復(fù)雜的頁面。這不是非常逼真的頁面,但該頁面被用來探究可壓縮性的邊界。
為了將新壓縮器的壓縮性能與無損圖像壓縮中的現(xiàn)有技術(shù)進(jìn)行比較,將本發(fā)明的結(jié)果與JPEG-LS產(chǎn)生的那些結(jié)果進(jìn)行比較。
JPEG-LS基于HP的LOCO-1算法,并且已經(jīng)由ISO/ITU-T選為連續(xù)色調(diào)圖像的無損壓縮的標(biāo)準(zhǔn)。在M.Weinberger、G.Seroussi、G.Saipiro的“LOCO-1A Low Complexity,Context-Based,Lossless Image Compression Algorithm”中給出了該算法的說明,該文獻(xiàn)可在www.hpl.hp.com/loco/HPL-98-193R1.pdf上得到。
與其它無損連續(xù)色調(diào)圖像壓縮算法(無損JPEG、CALIC、FELICS)相比,JPEG-LS相對簡單而且快速,并且JPEG-LS產(chǎn)生更好的壓縮。JPEG-LS的壓縮性能比JPEG2000無損(參見Diego Santa Cruz、Touradj Ebrahimi的“An analiticals tudy of JPEG 2000functionalities(JPEG 2000功能性的分析性研究)”,其可在www.jpeg.org/public/wgln1815.pdf上得到)稍好一些。
已經(jīng)為Adobe photoshop選擇了JPEG-LS插件程序來測試JPEG-LS。這是報告頁面需要的壓縮時間的有效實(shí)現(xiàn)方案。該JPEG-LS插件程序可在http://www.hpl.hp.com/loco上得到。注意,JPEG-LS已經(jīng)被設(shè)計為通用的無損連續(xù)色調(diào)圖像壓縮技術(shù),不專用于壓縮PDL生成的連續(xù)色調(diào)圖像。
在下面的表4中呈現(xiàn)了詳細(xì)的測量結(jié)果。
表4測量結(jié)果第一列列出了測試頁的名稱。名稱沒有特殊的意義,除了這些名稱正好是文件以其被存儲的名稱。第二列表示現(xiàn)有技術(shù)的AdobePostScript解釋器將頁面的PostScript描述轉(zhuǎn)換為要被壓縮的圖像的執(zhí)行時間。第三列表示新的壓縮方法的執(zhí)行時間,而第四列表示得到的被壓縮數(shù)據(jù)量。第五列表示JPEG-LS壓縮器的執(zhí)行時間,而第六列表示得到的被壓縮數(shù)據(jù)量。該表的最后一行表示所有測試圖像的平均值。
新方法的平均壓縮時間為0.6秒,該平均壓縮時間是PostScript解釋器生成頁面的執(zhí)行時間的大約20%。JPEG-LS的平均壓縮時間是8.12秒,該平均壓縮時間比新壓縮方法慢大約13.5倍。從這些結(jié)果中也清楚,由于與PDL解釋時間相比太慢,所以JPEG-LS并沒有滿足我們的要求。
通過新壓縮所產(chǎn)生的被壓縮數(shù)據(jù)量平均小于JPEG-LS所產(chǎn)生的量。對于包含分辨率等于設(shè)備分辨率的樣本圖像的一些非常復(fù)雜的頁面(“chrisA4.ps”和“model-puzzle.ps”)來說,JPEG-LS比新方法產(chǎn)生更少的被壓縮數(shù)據(jù),但是這種頁面在實(shí)踐中很少。
用硬件實(shí)現(xiàn)該壓縮格式有允許用硬件簡單地實(shí)現(xiàn)解壓器的若干屬性。
當(dāng)長度為3的NEW代碼后面直接跟著NEW6或者NEM6代碼時,該格式的最大局部展開發(fā)生。該NEW代碼占用2個代碼半字節(jié)+3*8個數(shù)據(jù)半字節(jié)。該NEW6或者NEM6代碼占用1個代碼半字節(jié)+6個數(shù)據(jù)半字節(jié)。這意味著,在這種情況下產(chǎn)生4個CMYK像素值總共需要33個半字節(jié),因此最壞情況的局部展開為1/32=3.1%。這意味著,必須處理未被壓縮的數(shù)據(jù)的速度最多比產(chǎn)生未被壓縮像素的速度高3.1%。
已經(jīng)以每個代碼產(chǎn)生至少一個像素的這種方式構(gòu)造了該壓縮格式。
對于需要整體解釋連續(xù)出現(xiàn)的代碼的代碼LEFT、TOP和NEW,僅僅特殊的情況發(fā)生。當(dāng)已經(jīng)解釋了這些代碼之一的第一代碼半字節(jié)時,明確了連續(xù)顏色值的來源-對于代碼LEFT所有代碼與左邊顏色相同-對于代碼TOP所有代碼來自目標(biāo)像素之上的像素-對于代碼NEW所有代碼來自被壓縮的數(shù)據(jù)流。
在那一點(diǎn),可以開始將顏色轉(zhuǎn)移到新像素,并且可以與代碼解釋并行地進(jìn)行。代碼解釋器可進(jìn)行組合連續(xù)代碼,直到遇到不同的代碼。然后知道了有多少像素必須被生成。由于由這些代碼所產(chǎn)生的像素的數(shù)量增加得比需要編碼這個數(shù)量的半字節(jié)的數(shù)量增加得快,所以該代碼解釋器將總是在已經(jīng)轉(zhuǎn)移了那個數(shù)量的新顏色值之前,結(jié)束確定像素數(shù)量。因此,在已經(jīng)產(chǎn)生正確數(shù)量的像素之后,該代碼解釋器停止將顏色值轉(zhuǎn)移到新像素。
現(xiàn)在將描述本發(fā)明的第二實(shí)施方式,該第二實(shí)施方式是用于連續(xù)色調(diào)黑白(灰度值)圖像的壓縮方法。
在第二實(shí)施方式中所使用的機(jī)制與上述第一實(shí)施方式的那些機(jī)制相同,即-一行接一行地完成壓縮。對于每一行來說,被壓縮的數(shù)據(jù)由2個部分組成,這兩個部分即“數(shù)據(jù)塊”和“代碼塊”。
-對于每個像素或者每組相同像素來說,在代碼塊中生成了代碼或一系列代碼。對于某些代碼(NEWi代碼)來說,在數(shù)據(jù)塊中存儲的附加數(shù)據(jù)是必要的。在每個掃描行的末端,把數(shù)據(jù)塊和代碼塊放在一起,以生成當(dāng)前行的被壓縮的數(shù)據(jù)。
第二實(shí)施方式使用減少的代碼組并且是面向位的(與面向半字節(jié)的第一實(shí)施方式相對)。更特別地,代碼總是長3個位,但數(shù)據(jù)塊中的相關(guān)聯(lián)的部分具有可變的長度(位的數(shù)量)。在第二實(shí)施方式中所使用的代碼如下被定義。
-代碼TOP、LEFT和FREV具有與第一實(shí)施方式中的意義相同的意義這些代碼分別將像素的行程編碼為與上方、左邊像素相同的顏色或先前顏色。
-代碼NEW編碼新的顏色;盡管行程長度定義機(jī)制不同于第一實(shí)施方式的行程長度定義機(jī)制,這個代碼仍能夠定義相同像素的行程,如稍后將解釋的那樣。
-代碼NEW1到NEW4和NEW3*以及NEW4*分別編碼灰度值與預(yù)測值(在本實(shí)例中為左邊的像素)的灰度值相差1到4個位或者2個或3個位的量的像素或者相同像素的行程(一次轉(zhuǎn)換為正整數(shù))。
代碼字長3個位,而且可以采用下表5中所列出的任意值。
表5代碼概要代碼的定義如下-LEFT和TOP代碼沒有相關(guān)聯(lián)的數(shù)據(jù)部分。一起解釋幾個相同的代碼,而“L”位被用來以與第一實(shí)施方式幾乎相同的方式編碼相對應(yīng)像素的數(shù)。
-PREV代碼沒有相關(guān)聯(lián)的數(shù)據(jù)部分。該P(yáng)REV代碼生成具有當(dāng)前先前顏色的像素。
-NEW1/NEW2/NEW3/NEW4代碼當(dāng)要被編碼的當(dāng)前像素不能由LEFT、TOP或者PREV代碼表達(dá)時,計算當(dāng)前像素和左邊像素的顏色值之間的差額,并隨后(通過與第一實(shí)施方式中相同的機(jī)制)將該差額轉(zhuǎn)換為正整數(shù)。如果這個差額(8位整數(shù))在截斷先導(dǎo)零位之后能夠適合1、2、3、或者4位,則選擇相對應(yīng)的NEWi代碼。另外,形成相關(guān)聯(lián)的數(shù)據(jù)部分,該相關(guān)聯(lián)的數(shù)據(jù)部分對應(yīng)于該差額并因此分別長1、2、3或4個位。代碼NEW1到NEW4產(chǎn)生像素的行程,在處理文件期間維持該像素行程的長度(稱為N)。
-INC/NEW3*/NEW4*代碼當(dāng)前行程長度值N開始被設(shè)為1,并且利用INC代碼來增加1,該INC代碼也產(chǎn)生左邊顏色的像素。當(dāng)該值太高時(即,當(dāng)一組N個像素不適合輸入數(shù)據(jù)時),N可被復(fù)位為1為此,如以初始格式使用NEWi*代碼。由于NEWi*代碼具有以0開始的相關(guān)聯(lián)的數(shù)據(jù)部分作為MSB(最高有效位),所以解碼器將識別出這些代碼。
-NEW代碼當(dāng)不能利用先前的代碼之一來編碼新的顏色值時,使用NEW代碼。該NEW代碼的數(shù)據(jù)部分包含新的灰度值(8位),但是也可以如下面將說明的那樣包含行程長度信息。最后,連續(xù)的至少兩個NEW代碼以與第一實(shí)施方式中的方式相同的方式將N的值復(fù)位為1。
這些代碼利用其數(shù)據(jù)部分來區(qū)分代碼000NEW1/PREV與這個代碼相關(guān)聯(lián)的數(shù)據(jù)長1個位。這意味著,當(dāng)前像素與其左邊像素之間的差額僅用1個位來表達(dá)。數(shù)據(jù)位被設(shè)為0的情況是不可能的,因?yàn)檫@將意味著兩個像素之間沒有差別。從而,這種可能性被用來編碼PREV代碼。
代碼001NEW2/NEW與這個代碼相關(guān)聯(lián)的數(shù)據(jù)長2個位。這意味著,當(dāng)前像素與其左邊像素之間的差額可用2個位表達(dá)。數(shù)據(jù)部分的MSB(最高有效位)為0的情況被用于NEW代碼。在那種情況下,2位長的數(shù)據(jù)部分的LSB(最低有效位)是被用來以與LEFT和TOP代碼中的L位幾乎相同的方式(盡管在那些代碼中,該L位位于代碼本身中)將若干個NEW代碼聚集在一起的行程長度位。在被聚集在一起的若干個NEW代碼的情況下,聚集所有NEW代碼的這2個位的數(shù)據(jù)部分,并將這些數(shù)據(jù)部分置于數(shù)據(jù)塊中,以及然后將所有NEW顏色值(每個8位)置入數(shù)據(jù)塊中。
然而,注意,取決于該NEW顏色值,跟隨NEW代碼的代碼NEW2可能導(dǎo)致被解碼器誤解。因此,防止代碼NEW2跟隨任何NEW代碼。
代碼010NEW3/NEW3*這個代碼的相關(guān)聯(lián)的數(shù)據(jù)部分長3個位。當(dāng)在當(dāng)前像素與其左邊像素之間的差額用3個位來表達(dá)時,使用這個代碼。NEW3*代碼是具有其MSB被設(shè)為0的數(shù)據(jù)部分的NEW3代碼。該NEW3*代碼被用來將N值復(fù)位為1,并利用這2個附加數(shù)據(jù)位編碼差額。由于在這種實(shí)施方式中,NEW2*代碼不可用,該NEW3*也被用于能夠用1個位表達(dá)的差額。
代碼011NEW4/NEW4*/INC這個代碼的相關(guān)聯(lián)的數(shù)據(jù)部分長4個位。當(dāng)在當(dāng)前像素與其左邊像素之間的差額用4個位來表達(dá)時,使用這個代碼。NEW4*代碼是具有其MSB被設(shè)為0的數(shù)據(jù)部分的NEW4代碼。該NEW4*代碼被用來將N值復(fù)位為1,并用這3個附加數(shù)據(jù)位來編碼差額。INC代碼是具有等于0(所有4個位)的數(shù)據(jù)部分的NEW4代碼。該INC代碼被用來將N值增加1,并生成顏色與左邊像素的顏色相同的像素。
代碼10LLEFT
沒有與這個代碼相關(guān)聯(lián)的數(shù)據(jù)。當(dāng)要編碼的像素與其左邊像素顏色相同時,使用該代碼。“L”位是被用來將若干個LEFT代碼聚集在一起的行程長度位(與第一實(shí)施方式中的機(jī)制相同)。
代碼11LTOP沒有與這個代碼相關(guān)聯(lián)的數(shù)據(jù)。當(dāng)要編碼的像素與其上方像素顏色相同時,使用該代碼?!癓”位是被用來將若干個TOP代碼聚集在一起的行程長度位(與第一實(shí)施方式中的機(jī)制相同)。
圖9示出了根據(jù)本發(fā)明的第二實(shí)施方式的通用編碼過程的流程圖。盡管由于使用較少的代碼而丟失了某些步驟,這個過程還是很大程度上與參考圖8所描述的第一實(shí)施方式相類似。由于在上文中對代碼說明的基礎(chǔ)上很容易理解,所以這里省略了圖9的完整說明。
該過程的單獨(dú)步驟已經(jīng)根據(jù)圖8中的相對應(yīng)步驟被編號。已經(jīng)給圖9中的參考編號設(shè)置了撇號。
圖10描述了根據(jù)第二實(shí)施方式形成過程的基本NEWi代碼,如圖9中用參考編號S22’指出的那樣。由于這個過程僅在一個顏色通道上工作,所以第一實(shí)施方式的若干步驟是多余的。剩下的那些步驟已經(jīng)用如圖6中的相對應(yīng)的參考編號來進(jìn)行編號(設(shè)置了撇號),并在下面列出。對于每個步驟的詳細(xì)解釋,讀者可以查閱上文中圖6的說明以及對第二實(shí)施方式的代碼的說明。
在步驟S1’中訪問考慮中的像素實(shí)際值,而在步驟S2’中根據(jù)相鄰像素(例如,左邊的像素)確定預(yù)測值。然后,在步驟S5’中確定實(shí)際值與預(yù)測值的差額,而在步驟S6’中將這個值轉(zhuǎn)換為針對小差額小而針對較大差額較大的正整數(shù)。實(shí)際的轉(zhuǎn)換可以基于可能在用通用的或?qū)S玫霓D(zhuǎn)換數(shù)據(jù)組之前已經(jīng)填充好了的查詢表(LUT)的使用。
然后,通過切斷先導(dǎo)零位來將得到的差值截斷(S8’),而且在步驟S9’中將剩余的非零位編碼到NEWi代碼中,如上文中所述的那樣。
上面已經(jīng)詳細(xì)描述了其兩種實(shí)施方式的本發(fā)明為無損壓縮提供了新的壓縮方法和格式,并為(優(yōu)選地)PDL生成的連續(xù)色調(diào)頁面圖像數(shù)據(jù)提供了解壓縮方法。
與象JPEG-LS那樣的現(xiàn)有技術(shù)無損圖像壓縮算法相比,如針對一組有代表性的測試文件所測量的那樣,該新方法平均更快。這允許在與被用來運(yùn)行PDL解釋器相同的計算機(jī)上實(shí)現(xiàn)壓縮,而無需額外的硬件并且沒有大的性能損失。
本發(fā)明是如此描述的,顯而易見可以多種方式改變。對本領(lǐng)域的技術(shù)人員來說是顯而易見的這種變型和修改意圖被包括在隨后的權(quán)利要求的范圍內(nèi)。
例如,盡管該方法針對PDL生成的圖像被優(yōu)化,該方法也可被用來壓縮來自其它來源的圖像。
此外,上面的說明集中于壓縮每個顏色通道8位的CMYK彩色圖像和8位連續(xù)色調(diào)黑白圖像。但是本領(lǐng)域的任何技術(shù)人員將意識到,可以修改該方法來壓縮多種其它的連續(xù)色調(diào)圖像,諸如RGB連續(xù)色調(diào)彩色圖像、每個顏色值超過4個通道的連續(xù)色調(diào)彩色圖像或者針對顏色通道的精度不同于8位的圖像,或者其它連續(xù)色調(diào)單色(灰階)圖像。
同樣地,可以用其它的、類似的代碼代替如第一實(shí)施方式和第二實(shí)施方式中所描述的實(shí)際代碼形式,而且第一實(shí)施方式的那些代碼也可被用于第二實(shí)施方式中,并且反之亦然。
權(quán)利要求
1.一種壓縮位于掃描行上的像素的數(shù)字連續(xù)色調(diào)圖像的方法,每個像素的像素值由至少一個顏色通道值定義,顏色通道值具有B個位(B>1)的精度,該方法產(chǎn)生被壓縮的圖像數(shù)據(jù)并且包括,對于要被編碼的當(dāng)前像素,所述當(dāng)前像素具有實(shí)際像素值,利用固定的規(guī)則,基于來自相同圖像的至少一個先前處理過的像素的像素值預(yù)測一預(yù)測像素值,基于所述預(yù)測像素值和要被編碼的所述當(dāng)前像素的實(shí)際像素值的差值來確定一差別參數(shù),以及對于值等于零的不中斷序列的最高階位的存在,檢查所述差別參數(shù),去除至少一部分所述最高階零位,并且,如果剩余預(yù)定限制內(nèi)的多個位,則生成具有預(yù)定的固定長度的壓縮代碼,所述代碼表示剩余位的數(shù)量。
2.根據(jù)權(quán)利要求1所述的方法,其中,壓縮代碼包括代碼類型名稱符和多個剩余位名稱符。
3.根據(jù)權(quán)利要求1所述的方法,還包括除了所述壓縮代碼之外,生成至少一個數(shù)據(jù)代碼,并且將所述剩余位包括到一個或多個數(shù)據(jù)代碼中。
4.根據(jù)權(quán)利要求1所述的方法,其中基于所述預(yù)測像素值與實(shí)際像素值的差值來確定差別參數(shù)的步驟包括將所述差值映射到所映射的差值上,所述所映射的差值對于每個可能的差值都是唯一并且對于所述差值的小絕對值具有小值。
5.根據(jù)權(quán)利要求3所述的方法,其中所述壓縮代碼和所述數(shù)據(jù)代碼全部包括相等的、固定數(shù)量的位。
6.根據(jù)權(quán)利要求5所述的方法,其中所述代碼每個包括4個位。
7.根據(jù)權(quán)利要求3所述的方法,其中所述數(shù)據(jù)代碼包括可變數(shù)量的位
8.根據(jù)權(quán)利要求1到7中的任何一個所述的方法,其中,所述像素值由至少2個顏色通道來定義,每個顏色通道具有B個位的精度,其中,在確定色差參數(shù)的步驟中,根據(jù)預(yù)定的方案首先通過去相關(guān)轉(zhuǎn)換來轉(zhuǎn)換每個像素值。
9.根據(jù)權(quán)利要求1到8中的任何一個所述的方法,其中,所述像素值由至少2個顏色通道來定義,每個顏色通道具有B個位的精度,其中,在確定色差參數(shù)的步驟中還包括根據(jù)預(yù)定的置換方案,通過連接每個顏色通道的所述差值的位,分別組合每個顏色通道的差值或者每個顏色通道的轉(zhuǎn)換后的像素值的差值。
10.根據(jù)權(quán)利要求1所述的方法,其中所述相同掃描行上的先前被編碼的相鄰像素的像素值被用作所述預(yù)測像素值。
11.根據(jù)權(quán)利要求1所述的方法,還包括檢查要被編碼的當(dāng)前像素的實(shí)際像素值是否等于先前被編碼的像素的實(shí)際像素值,該先前被編碼的像素位于相同掃描行上并且與當(dāng)前像素隔著具有不同于當(dāng)前像素的像素值的像素值的一個像素,或者隔著都具有相等的、不同于當(dāng)前像素的像素值的像素值的多個像素,并且如果這樣,則為那個當(dāng)前像素生成專用的通用代碼。
12.根據(jù)權(quán)利要求1所述的方法,還包括行程長度編碼步驟,其中,要被壓縮的當(dāng)前像素與其先前處理過的相鄰像素中的特別預(yù)定的一個像素進(jìn)行比較,并且如果所述像素的像素值相等,則針對下一個要被編碼的像素重復(fù)所述比較步驟,從而最大化相同掃描行上的像素的行程長度,該相同掃描行上的像素的值分別等于特別預(yù)定的相鄰像素的值,并且針對那些像素生成行程長度碼,所述行程長度碼包括一個或多個固定長度的位組,每個位組包括代碼類型名稱符和行程長度名稱符,該行程長度名稱符以位表示法詳細(xì)說明所述行程長度編碼步驟的行程長度。
13.根據(jù)權(quán)利要求12所述的方法,其中,當(dāng)行程長度位表示法比一個行程長度名稱符中能夠容納的長時,在連續(xù)位組的行程長度名稱符上劃分行程長度位表示法。
14.一種解壓被壓縮的圖像數(shù)據(jù)的方法,其包括檢查被包括在代碼中的代碼類型名稱符,并且如果所述代碼類型名稱符將該代碼命名為壓縮代碼,則針對要從涉及壓縮代碼的數(shù)據(jù)代碼中讀取的多個剩余位檢查多個剩余位名稱符。
15.根據(jù)權(quán)利要求14所述的解壓被壓縮的圖像數(shù)據(jù)的方法,還包括檢查被包括在當(dāng)前代碼中的代碼類型名稱符,并且如果所述代碼類型名稱符將該代碼命名為行程長度碼,則搜索具有與當(dāng)前代碼相同的代碼類型名稱符的所有緊隨的代碼,檢查因此被發(fā)現(xiàn)的代碼中所包括的行程長度名稱符并通過連接所述行程長度名稱符來形成行程長度。
16.一種計算機(jī)程序產(chǎn)品,其包括用于執(zhí)行根據(jù)權(quán)利要求1到13中的任何一個所述的方法的計算機(jī)可讀代碼。
17.一種用于壓縮位于掃描行上的像素的數(shù)字連續(xù)色調(diào)圖像的設(shè)備,每個像素的像素值由至少一個顏色通道值來定義,顏色通道值具有B個位(B>1)的精度,該設(shè)備產(chǎn)生被壓縮的圖像數(shù)據(jù)并且包括,編碼模塊,用于編碼當(dāng)前像素,所述當(dāng)前像素具有實(shí)際像素值,預(yù)測器,用于利用固定的規(guī)則,基于至少一個來自相同圖像的先前處理過的像素的像素值預(yù)測一預(yù)測像素值,差別參數(shù)確定器,用于基于所述預(yù)測像素值和要被編碼的所述當(dāng)前像素的實(shí)際像素值的差值來確定差別參數(shù),和檢查模塊,用于對于值等于零的不中斷序列的最高階位的存在而檢查該差別參數(shù),切斷模塊,用于去除至少一部分所述最高階零位,并且,如果剩余在預(yù)定限制內(nèi)的多個位,則該設(shè)備包括用于生成具有預(yù)定固定長度的壓縮代碼的壓縮代碼生成器,所述代碼包括代碼類型名稱符和表示剩余位數(shù)量的多個剩余位名稱符。
18.根據(jù)權(quán)利要求17所述的設(shè)備,還包括行程長度檢查器,用于將要被壓縮的當(dāng)前像素與其先前處理過的相鄰像素中的特別預(yù)定的一個像素進(jìn)行比較,并且如果所述像素的像素值相等,則針對下一個要被編碼的像素重復(fù)所述比較步驟,從而最大化相同掃描行上的像素的行程長度,相同掃描行上的像素的值分別等于其特別預(yù)定的相鄰像素的值,以及行程長度碼生成器,用于為那些像素生成行程長度碼,那些像素由所述行程長度檢查器通過在所述行程長度碼中包括一個或多個固定長度的位組來找到,每個位組包括代碼類型名稱符和行程長度名稱符,該行程長度名稱符以位表示法詳細(xì)說明所述行程長度編碼步驟的行程長度。
19.根據(jù)權(quán)利要求18所述的設(shè)備,其中,當(dāng)行程長度位表示法比一個行程長度名稱符中能夠容納的長時,所述行程長度碼生成器在連續(xù)位組的行程長度名稱符上劃分行程長度位表示法。
全文摘要
一種壓縮位于掃描行上的像素的數(shù)字連續(xù)色調(diào)圖像的方法,每個像素的像素值由至少一個顏色通道值定義,顏色通道值具有B個位(B>1)的精度,該方法產(chǎn)生被壓縮的圖像數(shù)據(jù)并且包括針對要被編碼的當(dāng)前像素,所述當(dāng)前像素具有實(shí)際像素值,利用固定的規(guī)則,基于來自相同圖像的至少一個先前處理過的像素的像素值預(yù)測一預(yù)測像素值;基于所述預(yù)測像素值和要被編碼的所述當(dāng)前像素的實(shí)際像素值的差值確定差別參數(shù);并對于值等于零的不中斷序列的最高階位的存在,檢查該差別參數(shù);去除至少部分所述最高階零位;并且,如果剩余在預(yù)定限制內(nèi)的多個位,則生成具有預(yù)定的固定長度的壓縮代碼,所述代碼表示剩余位的數(shù)量。為了以在實(shí)際壓縮過程中能夠更有效地壓縮圖像數(shù)據(jù)的方式來準(zhǔn)備圖像數(shù)據(jù),公開了若干圖像數(shù)據(jù)的預(yù)處理步驟。
文檔編號H04N1/417GK1993976SQ200580025638
公開日2007年7月4日 申請日期2005年7月26日 優(yōu)先權(quán)日2004年7月29日
發(fā)明者M·L·M·盧特默, P·索布卡克, J·馬利克 申請人:奧西-技術(shù)有限公司