專利名稱:一種利用計算機(jī)對數(shù)字化檔案文件壓縮的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種利用計算機(jī)對圖像數(shù)據(jù)的處理方法,尤其是利用計算機(jī)對數(shù)字化檔案文件的壓縮的方法。
背景技術(shù):
2002年底,由中國政府頒布的《國民經(jīng)濟(jì)和社會發(fā)展第十個五年計劃信息化重點(diǎn)專項(xiàng)規(guī)劃》,在界定信息化的內(nèi)涵時明確指出信息資源是信息化的核心,紙質(zhì)檔案文件數(shù)字化成為信息化建設(shè)的一個共性、關(guān)鍵性難題,而數(shù)字化后的文檔資料的壓縮問題則是核心中的核心問題。高效、高質(zhì)的壓縮算法可以節(jié)省存貯開銷,提高資料共享時文件在網(wǎng)絡(luò)上的傳輸速度和圖像解壓縮還原顯示的速度。
現(xiàn)在普遍采用的原文原貌的二值圖像方式存儲管理數(shù)字化檔案文件的技術(shù),以其忠實(shí)原文、永不出錯、直觀方便、高速高效等優(yōu)點(diǎn),廣泛應(yīng)用于數(shù)字圖書館、數(shù)字化檔案館和專利數(shù)據(jù)庫等專業(yè)數(shù)據(jù)庫的處理及對原文查詢等,成為該領(lǐng)域一個重要的技術(shù)手段,而其中所采用的圖像格式的壓縮效率則是一個重要的技術(shù)指標(biāo)。目前國際上通用流行的是國際電報電話咨詢委員會CCITT制定的TIFF G4圖像壓縮算法,當(dāng)然,也還有其他的格式,如主要應(yīng)用于國內(nèi)互聯(lián)網(wǎng)上最大的擁有50多萬冊電子圖書的商用超星數(shù)字圖書館、北京時代超星公司所開發(fā)的PDG格式和應(yīng)用于中國數(shù)字圖書館、已有10多萬冊電子圖書由中國國家圖書館開發(fā)的NLC格式。它們對數(shù)字化檔案文件都進(jìn)行了較大比率的壓縮,略優(yōu)于TIFF G4;可是其壓縮比率仍有較大的提升空間。以A4幅面、掃描分辨率為300DPI的存貯文件為例,PDG格式的平均文件大小約為45KB左右,NLC格式的文件大小也在35KB左右。
目前的數(shù)字化檔案文件以二值位圖文件為主,普遍使用的二值圖像的壓縮方法都是基于像素點(diǎn)的。我們做過比較,超星所開發(fā)的PDG格式在對二值檔案文件進(jìn)行壓縮時,壓縮比與TIFF G4標(biāo)準(zhǔn)的壓縮比極為相近,而我國國家圖書館所開發(fā)的NLC格式的壓縮比則與CCITT標(biāo)準(zhǔn)中的T.82標(biāo)準(zhǔn)即JBIG1相近。JBIG是聯(lián)合國圖像專家組的英文縮寫,該專家組成立于1988年,其任務(wù)是制定二值圖像壓縮的國際通用標(biāo)準(zhǔn)。而無論TIFF G4或是JBIG1都是基于圖像像素點(diǎn)對圖像進(jìn)行壓縮的?;谙袼攸c(diǎn)的壓縮方法是對圖像按照掃描順序?qū)ο袼攸c(diǎn)進(jìn)行處理,從上到下從、從左到右的對每一個像素點(diǎn)編碼。TIFF G4采用了改進(jìn)的霍夫曼編碼方式來進(jìn)行編碼,即對連續(xù)出現(xiàn)的黑色像素點(diǎn)或白色像素點(diǎn)的個數(shù)進(jìn)行霍夫曼編碼。JBIG1則對每一個像素點(diǎn)進(jìn)行自適應(yīng)算術(shù)編碼,算述編碼所使用的概率統(tǒng)計模型是由像素點(diǎn)前一定數(shù)量及結(jié)構(gòu)的像素模板的值所決定的。它們都是基于像素點(diǎn)的壓縮方法,所以,壓縮率很難再進(jìn)一步得到提高。
事實(shí)上,絕大部分二值檔案文件是由大片的白色背景和大量的重復(fù)符號組成的,例如一篇漢字文字檔案材料,其中會有許多漢字和標(biāo)點(diǎn)符號反復(fù)出現(xiàn),這是二值檔案文件的一個典型特征。如果能夠充分利用這一特征,將會在壓縮率上相較其于像素點(diǎn)的壓縮方法有很大的提高。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,它應(yīng)能克服上述方法的缺陷,充分利用于數(shù)字化二值圖文檔案文件的特點(diǎn),進(jìn)一步提高壓縮率。
本發(fā)明包括計算機(jī)和數(shù)字化的二值圖文檔案文件,所述數(shù)字化的二值圖文檔案文件在計算機(jī)的處理過程中,要經(jīng)過如下的壓縮算法的運(yùn)行,其特征在于該算法的步驟包括a、在數(shù)字化二值圖文檔案文件中,采用常規(guī)的邊緣跟蹤和區(qū)域填充法把符號從位圖中提取出來;b、將所提取的符號及其特征的信息,按符號的讀寫順序進(jìn)行重排序;c、把重排序的符號逐一取出進(jìn)行符號編碼,首先采用符號相似性判別技術(shù),判別所取符號與設(shè)定字典中的符號是否匹配;d、在步驟c對每個符號的匹配判別中,當(dāng)(1)在設(shè)定字典中找到匹配符號時,采用符號位圖數(shù)據(jù)編碼技術(shù),對該符號進(jìn)行編碼,并在新建的字典中建立索引;(2)在設(shè)定的字典中找不到匹配的符號時,采用符號位圖數(shù)據(jù)編碼技術(shù),對該符號進(jìn)行編碼,并將該符號的字典索引設(shè)為-1;e、對步驟d所處理的符號,采用整數(shù)編碼技術(shù),對當(dāng)前符號的尺寸、位置及索引信息進(jìn)行編碼,并加到新建的字典中;然后返回步驟c運(yùn)行下一符號,直到所有重排序的符號都被編碼為止。
以上的壓縮方法,對檔案文件進(jìn)行基于信號而非圖像像素的壓縮,壓縮率較超星PDG格式和我國國家圖書館的NLC格式所采用的壓縮算法有了很大的提高,這一點(diǎn)在下面的實(shí)驗(yàn)結(jié)果中也得到了很好的體現(xiàn)。
下面,對圖文資料數(shù)字化生產(chǎn)線數(shù)字化的三個檔案文件分別用本算法、超星PDG格式和我國國家圖書館的NLC格式進(jìn)行壓縮實(shí)驗(yàn),結(jié)果如下表
以上用于實(shí)驗(yàn)的文件均是A4幅面、掃描分辨率為300DPI的二值文件,所有三文件是經(jīng)本算法處理后打印出來的,作為附圖供參考,如圖3~圖5所示。都附在申請材料的圖中。由以上分析數(shù)據(jù)可以看出,本算法的壓縮率較超星PDG壓縮算法提高了50個面分點(diǎn),較國圖的NLC壓縮算法也有了較大幅度的提高,提高幅度在30個百分點(diǎn)以上。
圖1所示,是本發(fā)明壓縮算法的流程圖。
圖2所示,是十個像素點(diǎn)的分布圖。
圖3所示,是編碼區(qū)間需要進(jìn)行歸一化的三種情況圖。
圖4~圖6所示,是采用本發(fā)明壓縮算法后打印出來的圖文。
具體實(shí)施例方式
下面,結(jié)合附圖,對本發(fā)明作進(jìn)一步說明。
由圖1的本發(fā)明壓縮算法流程圖可知,該壓縮算法包括符號提取和重排序,以及符號編碼兩大部分。在第一部分中,完成對二值位圖中符號的提取和符號的重排序;在經(jīng)二部分中,實(shí)現(xiàn)對所提出來的符號進(jìn)行編碼的過程。詳細(xì)說明如下(一)符號提取及重排序1、符號提取符號提取采用常規(guī)的邊緣跟蹤和區(qū)域填充方法將符號從位圖中提取出來,在此基礎(chǔ)上,我們還需提取出符號的一些重要特征,如符號的質(zhì)心及面積等,這些特征在符號比較與分類中有著重要的作用。
符號提取一般包括兩個階段,在第一階段中對符號進(jìn)行邊緣跟蹤,以取得當(dāng)前符號邊緣像素點(diǎn)的位置信息。跟蹤開始時,首先對位圖進(jìn)行從左至右、從上到下的掃描,發(fā)現(xiàn)的第一個黑色像素點(diǎn)將作為當(dāng)前跟蹤的起始點(diǎn),從些點(diǎn)為開始,沿著當(dāng)前符號的邊緣記錄下每個邊緣點(diǎn)的位置信息,直至回到起始點(diǎn)為止。在本算法中,我們采用了八鄰域方法,即在當(dāng)前邊界點(diǎn)的八鄰點(diǎn)中尋找下一個邊界點(diǎn)的方法。八鄰域方法比四鄰域法可使平均壓縮率得到1%左右的提高。
第二階段是區(qū)域填充階段,區(qū)域填充是要把在第一階段得到的邊界點(diǎn)所包圍的區(qū)域在原圖中用背景色(白色)進(jìn)行填充,以把邊界點(diǎn)所包圍的區(qū)域作為一個符號從位圖中提取出來。并且,也在這一階段,將符號的像素點(diǎn)陣列信息記錄下來。
將符號提取出來后,還要進(jìn)一步得到符號的特征符號的面積可由包圍邊界點(diǎn)的矩形框的長和寬相乘而得;符號中各黑色像素點(diǎn)至包圍邊界點(diǎn)的矩形框左邊界的平均距離即是符號質(zhì)心的位置。這時,就可以把一個符號的位置信息、特征信息及像素點(diǎn)信息一起加到符號隊列中去了。
2、符號重排序在這一階段中,把符號按照符號的讀寫順序進(jìn)行重排,這個步驟會對下一步的壓縮操作帶來很大好處,因?yàn)樵谟涗浄柕奈恢米鴺?biāo)(以下所述的坐標(biāo)均為直角坐標(biāo)系)時,我們記錄的是當(dāng)前符號與前一個被編碼的符號的位置偏移值,如果按符號的讀寫順序排列符號,讓符號按照此順序被編碼,則前后符號間的位置偏移值是最小的,這樣,編碼時其碼長就會最短。
這一階段的操作分為以下幾個步驟進(jìn)行(1)計算位圖的傾斜角度、符號行間距與同行符號間距。
(2)將符號按所在區(qū)域分組。
(3)把符號重排,使重排后的符號滿足這樣的條件在區(qū)域內(nèi)符號排列順序是從上到下,從左到右的順序;區(qū)域或區(qū)域間,應(yīng)是區(qū)域中心Y值較小的在前,較大的在后。
在計算位圖的傾斜角度時,采用了文件頻譜的方法。對于每一個符號,找出其附近離它最近的K個符號,一般K=10,分別計算這K個符號的質(zhì)心與該符號的質(zhì)心的連線與水平方向的夾角,這樣,如果我們從位圖中分離出了N個符號,則可由上面的計算中得到K*N個角度值。下一步,作出這些角度值的直方圖,直方圖橫坐標(biāo)的精度我們設(shè)為了1/1800。然后,選用漢明窗口對直方圖進(jìn)行平滑處理,漢明窗的數(shù)字表達(dá)式為 這里,取N=10。使用漢明窗與直方圖進(jìn)行卷積運(yùn)算,并從得到的卷積參數(shù)中取最大值所對應(yīng)的角度值即是位圖的傾斜角度。
同理,我們也計算出每個符號與其距離最近的K個符號質(zhì)心間連線的長度。取與垂直方向夾角在正負(fù)30度角間的所有連線的長度來計算符號行間距,注意,在計算這些連線與垂直方向的夾角時,要把位圖的傾斜角度考慮進(jìn)去,也就是說需要利用上一步的計算結(jié)果。同計算角度時一樣,我們也要制出這些長度的直方圖,然后,用矩形窗對直方圖進(jìn)行平滑處理。矩形窗的數(shù)學(xué)表達(dá)方式為 這里,我們?nèi)=10。使用矩形窗與長度直方圖進(jìn)行卷積運(yùn)算后,從得到的卷積結(jié)果中取最大值所對應(yīng)的長度值即是符號行間距。
采用同樣的方法可以計算出符號間距,只是取符號間連線時只取與水平方向夾角不大于正負(fù)30度角的所有連線來進(jìn)行計算。
上述的漢明窗和矩形窗均是平滑濾波器。
在位圖上,如果我們把每個符號的質(zhì)心與其K個近鄰的質(zhì)心用連線連起來,可以看到整幅圖成了一個以符號為結(jié)點(diǎn)的一張網(wǎng)。我們把長度超過三倍行間距的連線都斷掉,這時,整個位圖就被拆分成了幾個子網(wǎng),每個子網(wǎng)都是原位圖的一個區(qū)域,把每個子網(wǎng)中的符號歸為一組,這樣,就完成了圖區(qū)域的劃分。
區(qū)域劃分后,要對符號順序進(jìn)行重排,首先,計算位圖中各個區(qū)域的中心點(diǎn),按照中心點(diǎn)Y坐標(biāo)的大小以升序?qū)^(qū)域排序;然后,在區(qū)域內(nèi)對區(qū)域內(nèi)符號按照從上至下,從左至右的順序排序。對區(qū)域內(nèi)符號排序時我們采用了Howard方法,先進(jìn)行行劃分,然后再進(jìn)行行內(nèi)符號排序。先將符號按其下邊界的縱坐標(biāo)以升序排序,然后,取最前面的N個符號的下邊界Y坐標(biāo)的平均值作為基準(zhǔn)線,將所有符號上邊界與該基準(zhǔn)線比較,上邊界高于此基準(zhǔn)線的符號,我們認(rèn)為它與前N個符號同在一行。對于剩下的符號,以同樣的方法進(jìn)行行劃分。行劃分結(jié)束后,再對行內(nèi)符號序,取符號的左上角橫坐標(biāo)進(jìn)行升序排序。
至此,已把位圖中的符號提取出來并按照讀寫順序進(jìn)行了排序,下面,要為符號集建立字典。所述的字典,是本算法在對一幅檔案位圖進(jìn)行壓縮時,首先對位圖全圖進(jìn)行掃描,提取出由相互聯(lián)接的黑色像素點(diǎn)所組成的符號。一幅位圖中,有些符號會重復(fù)出現(xiàn),例如一個逗號“,”。把由我們的相似性判別規(guī)則判斷為相似的符號歸為一組,在每一組中選出一個符號作為這一組的代表符號,而一幅檔案位圖中所有符號組的代表符號的集合就是字典。
字典是在壓縮過程中動態(tài)建立的,字典會在壓縮過程中不斷加入新符號,“已存在的字典”指的是在壓縮過程中動態(tài)建立的字典。在壓縮開始時,字典是空的,在從符號隊列中讀入第一個字符時,就把它加入字典中;以后,每讀入一個新符號,都要把它與字典中存在的符號對比,若對比結(jié)果為兩符號相似,則不往字典中加入新符號,若不相似,則往字典中加入新符號。
(二)符號編碼符號編碼過程中要動態(tài)地建立符號字典,同時對符號進(jìn)行壓縮編碼;字典是動態(tài)建立的,它與符號壓縮碼過程同步進(jìn)行。字典的建立需要有效的符號相似性判別方法。下面,將符號編碼這一過程表達(dá)如下for符號序列中的每一個符號符號相似性判別,在字典中尋找匹配符號if在字典中找到匹配字符編碼匹配符號在字典中的索引編碼當(dāng)前符號在圖像中的坐標(biāo)信息(與前一符號的坐標(biāo)差)編碼當(dāng)前符號的長寬尺寸信息else直接對當(dāng)前符號的位圖數(shù)據(jù)進(jìn)行編碼編碼當(dāng)前符號在字典中的索引,索引為-1編碼當(dāng)前符號的圖像中的坐標(biāo)信息(與前一符號的坐標(biāo)差)編碼當(dāng)前符號的長寬尺寸信息將當(dāng)前符號加入字典中end ifend for這一過程涉及了這樣幾項(xiàng)關(guān)鍵技術(shù)符號相似性判別技術(shù),符號的位圖數(shù)據(jù)編碼技術(shù)及對符號的索引及位置尺寸信息進(jìn)行編碼時所使用到的整數(shù)編碼技術(shù)。下面,就對這三項(xiàng)技術(shù)分別加以說明。
1、符號相似性判別技術(shù)要建立字典,最重要的一步是要對符號的相似性進(jìn)行準(zhǔn)確的判決。在對兩個符號進(jìn)行比較時,要把兩個符號的質(zhì)心對齊,然后把這兩個符號的像素點(diǎn)進(jìn)行對比,根據(jù)預(yù)設(shè)的判別規(guī)則和門限值來判斷兩個符號是否相匹配,相匹配的符號可放在一個組中,把組中成員平均后所得到的符號放在字典中作為該組成員的代表符號。壓縮時,該組內(nèi)成員都可以用字典中該組的代表符號在字典中的索引來表示。
在對符號作匹配判斷時,先比較兩符號的尺寸,如果兩符號的長度差值或?qū)挾炔钪党^兩個像素點(diǎn),則判定兩個符號不相匹配。如果兩符號的尺寸合乎要求,就要進(jìn)一步對兩符號的像素點(diǎn)進(jìn)行比較。
對兩符號的像素點(diǎn)進(jìn)行比較時,要將待比較的兩個符號的質(zhì)心對齊后再把兩符號的像素點(diǎn)逐點(diǎn)比較,并創(chuàng)建兩符號的誤差圖。誤差圖的大小是兩符號質(zhì)心對齊重疊后的大小,誤差圖中的黑色像素點(diǎn)位置是兩符號中像素點(diǎn)顏色不同的位置。得出誤差圖后,我們要對誤差圖進(jìn)行如下的檢查和判斷(1)如果在誤差圖中發(fā)現(xiàn)2×2鄰域內(nèi)四個像素點(diǎn)全部為黑色像素點(diǎn),則兩符號判為不匹配。
(2)檢查誤差圖中每一個黑色像素的八鄰域點(diǎn),如果發(fā)現(xiàn)誤差圖中某黑色像素點(diǎn)(以下稱為ERROR_A即誤差像素點(diǎn)A)的八鄰域點(diǎn)中至少有兩個黑點(diǎn),且至少有兩個黑點(diǎn)不相連,則檢查誤差圖中ERROR_A點(diǎn)所對應(yīng)的兩符號原圖中的像素點(diǎn)(在下面分別稱為ORIGINAL1_A和ORIGINL2_A),如果在ORIGINAL1_A或ORIGINAL2_A的八鄰域點(diǎn)中,八鄰域點(diǎn)全部和其同色,則兩符號判為不匹配;如果兩符號的長和寬小于12個像素點(diǎn),則如果ORIGINAL1_A或ORIGINAL2_A的八鄰域點(diǎn)中至少四個點(diǎn)與其同色,則判定兩個符號不匹配。
(3)計算誤差圖中黑色像素點(diǎn)的總數(shù),并將該總數(shù)除以誤差圖的面積,如果得到的商大于某個預(yù)設(shè)的門限值,則判定兩個符號不匹配。在本算法中,門限值設(shè)為0.25。
當(dāng)對一個新符號進(jìn)行處理時,都要首先在設(shè)定的字典中尋找最佳匹配。如果在字典中可以找到該符號的匹配符號,則將該符號加入動態(tài)字典中對應(yīng)項(xiàng)所代表的符號組中;如果無法在字典中找到匹配項(xiàng),則將該符號加入動態(tài)字典中,作為新的符號組的代表符號。最簡單的建立動態(tài)字典的方法是把發(fā)現(xiàn)的第一個未能在已建立的字典中找到匹配符號的符號列入字典中作為新的一項(xiàng)。但是,考慮到這樣的字符可能是其所屬類中一個比較差的代表,這樣將直接影響壓縮率和解碼質(zhì)量。所以,我們在建立字典的過程中將動態(tài)地更新字典中的符號。如果當(dāng)前處理的符號在字典中無法找到匹配字符,這個符號將被加入動態(tài)字典中;如果在可以找到匹配符號,則字典中的對應(yīng)符號將被更新,更新后的字典符號是其所代表的符號組中所有符號取平均后的結(jié)果。這個取平均的過程也可能造成這樣的結(jié)果,即在某符號組對組內(nèi)所有符號取平均后,組內(nèi)的某些符號與字曲符號不再匹配,因此,在新字典建立后,將重新檢查字典中每一項(xiàng)與其所對應(yīng)符號組的對應(yīng)關(guān)系,如果發(fā)現(xiàn)不匹配的符號,把符號放入動態(tài)字典中作為新的一項(xiàng)。不過這樣的情況出現(xiàn)的可能性很小,根據(jù)我們的實(shí)驗(yàn)情況,只有2%左右。
2、符號位圖數(shù)據(jù)編碼技術(shù)當(dāng)某一符號設(shè)定,在字典中無法找到相匹配的符號時,將該符號的索引設(shè)為-1,則該符號應(yīng)被加入動態(tài)字典中,對這個符號進(jìn)行編碼時,除了需對這個符號的位置、長、寬和索引信息編碼外,還需要對該符號的像素值進(jìn)行壓縮編碼。對符號的位置及索引等信息的壓縮用整數(shù)據(jù)編碼方法,將在下一部分介紹;對字典符號像素值的壓縮采用基于上下文的二值低精度自適應(yīng)算術(shù)編碼方法。在本算法中,我們采用了JBIG壓縮算法的上下文模板,這個模板中的像素點(diǎn)Q分布在當(dāng)前被編像素點(diǎn)P的所在行及上兩行,共有十個像素點(diǎn),如圖2所示。
10個二值像素點(diǎn)共有210共1024種排列組合形式,所以需要創(chuàng)建兩個數(shù)組,每個數(shù)組應(yīng)包含1024個整數(shù)項(xiàng),這兩個數(shù)組分別用來記錄每個模板之后出現(xiàn)黑色像素點(diǎn)的次數(shù)Count_1和白色像素點(diǎn)Count_0的次數(shù)。這兩個數(shù)組在初始化時均置零,在壓縮的過程中,每出現(xiàn)一個黑點(diǎn),Count_1加1,反之,Count_0加1。當(dāng)Count_1和Count_0的和超過255時,Count_1和Count_0都分別除以2。
利用統(tǒng)計模型提供的概率信息,使用二值低精度算術(shù)編碼方法進(jìn)行編碼。在本算法中使用的編碼寄存器的精度為32位。二值算術(shù)編碼方法是將0和1出現(xiàn)的概率表示成一個區(qū)間中的一個子區(qū)間,這一子區(qū)間與其所在的區(qū)間的比值就是正被編碼的信號(0或者1)出現(xiàn)的概率,然后,這一子區(qū)間就作為當(dāng)前的編碼區(qū)間,在對下一信號進(jìn)行編碼時,再在這個新的編碼區(qū)間中分出與編碼信號出現(xiàn)概率相應(yīng)的子區(qū)間;當(dāng)這個區(qū)間小于某一預(yù)設(shè)值時,則要對編碼區(qū)間進(jìn)行歸一化處理,并根據(jù)情況輸出編碼位,按照這些步驟反復(fù)操作,直至所有信號都被編碼為止。下面,用偽代碼說明這一編碼過程。這里,我們用LPS(Less Probable Symbol)表示出現(xiàn)概率較小的輸入位,用MPS(More ProbaleSymbol)表示出現(xiàn)概率較大的輸入位;Count_0表示0的出現(xiàn)次數(shù),Count_1表示1出現(xiàn)的次數(shù),Range表示編碼區(qū)間,Low表示編碼區(qū)間的左邊界。在編碼初始時,將Range設(shè)為1/2×232-1,Low設(shè)為0。
<pre listing-type="program-listing">If(Count_0<Count_1={LPS=0;Count_LPS=Count_0; } else { LPS=I; Count_LPS=Count_1; } Range_LPS=Range*Count_LPS/(Count_0+Count_1); If(Current_Inputting_Bit=LPS)<!-- SIPO <DP n="10"> --><dp n="d10"/> { Low+=Range-Range_LPS; } else { Range-=Range_LPS; }</pre>當(dāng)編碼區(qū)間小于232的四分之一時,要對Range進(jìn)行歸一化處理,并輸出編碼位。
圖3所示,是編碼區(qū)間,需要進(jìn)行歸一化的三種情況,當(dāng)編碼區(qū)間小于232的四分這一時,如果編碼敬意的左邊界Low大于232的二分之一,如上圖中標(biāo)號為(1)的情況,則輸出一個編碼位1,Low減去half;如果是情況(2),輸出編碼位0;如果是情況(3),不作輸出,但是用一計數(shù)器作記錄,每次遇到情況(3),計數(shù)器加一,當(dāng)下次遇到情況(1)或情況(2)需要輸出編碼位時,輸出與計數(shù)器中數(shù)值相同個數(shù)的編碼位,輸出的編碼位數(shù)值與情況(1)或(2)中輸出的編碼位數(shù)值相反。最后,無論是哪種情況,Range和Low均要增加一倍。重復(fù)上面的步驟直到Range和Low均要增加一倍。重復(fù)上面的步驟直到Range大于232的四分之一為止。實(shí)現(xiàn)對像素值進(jìn)行壓縮編碼,壓縮了1/3。
3、整數(shù)編碼技術(shù)完成了字典符號的壓縮后,下面將以字典符號為基準(zhǔn)對所有符號進(jìn)行編碼壓縮。編碼時,我們僅需當(dāng)前編碼符號在動態(tài)字典中的索引信息及位置信息即可。位置信息是當(dāng)前編碼符號相對前一編碼符號的相對坐標(biāo),即當(dāng)前符號外接矩形框的左下角坐標(biāo)與前一編碼符號外接矩形框的右下角坐標(biāo)的差值。這些數(shù)值都是整數(shù),壓縮時,我們采用基于樹形結(jié)構(gòu)的整數(shù)編碼方法。
整數(shù)編碼過程包括下面三個步驟,首先,先編碼整數(shù)的符號位;然后,存貯該整數(shù)所需的位數(shù)采用一元編方式編碼;最后,編碼整數(shù)本身。如整數(shù)9,編碼為0 0001 1001;而整數(shù)-9,編碼為1 0001 1001。
編碼器根據(jù)待編碼位建立判決樹,判決樹在結(jié)點(diǎn)處開叉,根據(jù)當(dāng)前編碼決定在結(jié)點(diǎn)處是走向左結(jié)點(diǎn)還是右結(jié)點(diǎn)。判決樹的根結(jié)點(diǎn)對應(yīng)于符號位,若整數(shù)為正數(shù),則編碼為0,若為負(fù)數(shù),編碼為1。在對某個位進(jìn)行編碼時,還同時需要更新這個位所對應(yīng)的編碼結(jié)點(diǎn)的概率信息,該概率信息記錄了在此結(jié)點(diǎn)中出現(xiàn)0或1的頻率,使用頻率信息及當(dāng)前編碼位可利用在上一部分介紹的算術(shù)編碼器進(jìn)行一步編碼,以獲得較好的壓縮率。對某個位的編碼結(jié)束后,根據(jù)當(dāng)前編碼位是0或1走向下一個子結(jié)點(diǎn),然后對下一位進(jìn)行編碼,直到所有位都被編碼為止。
圖4~圖6所示,是使用本壓縮算法后打印出來的圖文,其中,圖4是文,圖5是圖,圖6是圖文結(jié)合。從該三份圖文來看,圖文清晰,忠于原版。很有實(shí)用和經(jīng)濟(jì)價值。
大部分的二值檔案文件都是由白色背景和大量的重復(fù)出現(xiàn)的符號組成的,例如,在一幅數(shù)字化檔案文件里,逗號和句號就會反復(fù)出現(xiàn)。利用這一特征,可將反復(fù)出現(xiàn)的符號歸為一組,而每一組中只需要有一個代表符號,對位圖數(shù)據(jù)(像素點(diǎn))進(jìn)行壓縮時只對該代表符號進(jìn)行壓縮,而對組中的其他符號只需要存貯其位置信息(在位圖中的橫坐標(biāo)和縱坐標(biāo)),及其對代表符號的索引便可在解壓時將其復(fù)原了。例如,如果在一幅數(shù)字化檔案文件中有五十個逗號,這樣我們只需要存貯一個逗號的像素點(diǎn)信息,而其他的四十九個逗號只需要保存有第一逗號在字典中的索引即可。相較于基于像素點(diǎn)的圖像壓縮方法,本發(fā)明中的算法不需要存貯數(shù)字化檔案位圖文件的每一個像素點(diǎn),所以在壓縮率得到了很大提高。
本方法與計算機(jī)結(jié)合,在壓縮開始時,程序?qū)?shù)字化檔案文件從硬盤或其他存貯媒介中讀入內(nèi)存,然后由計算機(jī)的中央處理器CPU控制完成壓縮過程中的所有計算工作。
權(quán)利要求
1.一種利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,它包括計算機(jī)和數(shù)字化的二值圖文檔案文件,所述數(shù)字化的二值圖文檔案文件在計算機(jī)的處理過程中,要經(jīng)過如下的壓縮算法的運(yùn)行,該算法的步驟包括;a、在數(shù)字化二值圖文檔案文件中,采用常規(guī)的邊緣跟蹤和區(qū)域填充法把符號從位圖中提取出來;b、將所提取的符號及其特征的信息,按符號的讀寫順序進(jìn)行重排序;c、把重排序的符號遂一取出進(jìn)行符號編碼,首先采用符號相似性判別技術(shù),判別所取符號與設(shè)定字典中的符號是否匹配;d、在步驟c對每個符號的匹配判別中,當(dāng)(1)在設(shè)定字典中找到匹配符號時,采用符號位圖數(shù)據(jù)編碼技術(shù),對該符號進(jìn)行編碼,并在新建的字典中建立索引;(2)在設(shè)定的字典中找不到匹配的符號時,采用符號位圖數(shù)據(jù)編碼技術(shù),對該符號進(jìn)行編碼,并將該符號的字典索引設(shè)為-1;e、對步驟d所處理的符號,采用整數(shù)編碼技術(shù),對當(dāng)前符號的尺寸、位置及索引信息進(jìn)行編碼。并加到新建的字典中;然后返回步驟c運(yùn)行下一符號,直到所有重排序的符號都被編碼為止。
2.根據(jù)權(quán)利要求1所述的利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,其特征在于所述符號提取包括以下兩個階段邊緣跟蹤階段對符號進(jìn)行邊緣跟蹤,以取得當(dāng)前符號邊緣像素點(diǎn)的位置信息;區(qū)域填充階段把在邊緣跟蹤階段得到的邊界點(diǎn)所包圍的區(qū)域在原圖文和背景進(jìn)行填充,以把邊界點(diǎn)所包圍的區(qū)域作為二個符號從位圖中提取出來,并將符號的像素點(diǎn)陳列信息記錄下來。
3.根據(jù)權(quán)利要求1所述的利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,其特征在于所述符號重排序包括以下三個步驟(1)計算位圖的傾斜角度、符號行間距與同行符號間距;(2)將符號按所在區(qū)域分組;(3)把符號重排,使重排后的符號滿足這樣的條件;在區(qū)域內(nèi)符號排列順序是從上到下,從左到右的順序;區(qū)域或區(qū)域間,應(yīng)是區(qū)域中心Y值較小的在前,較大的在后;其中,在計算位圖的傾斜角度采用的數(shù)學(xué)表達(dá)式為 式中,K是距離當(dāng)前符號最近的符號個數(shù),N是從位圖中分離出來的符號個數(shù)。
4.根據(jù)權(quán)利要求1所述的利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,其特征在于所述的符號編碼過程表達(dá)為;for符號序列中的每一個符號符號相似性判別,在字典中尋找匹配符號if在字典中找到匹配字符編碼匹配符號在字典中的索引編碼當(dāng)前符號在圖像中的坐標(biāo)信息(與前一符號的坐標(biāo)差)編碼當(dāng)前符號的長寬尺寸信息else直接對當(dāng)前符號的位圖數(shù)據(jù)進(jìn)行編碼編碼當(dāng)前符號在字典中的索引,索引為-1編碼當(dāng)前符號的圖像中的坐標(biāo)信息(與前一符號的坐標(biāo)差)編碼當(dāng)前符號的長寬尺寸信息將當(dāng)前符號加入字典中end ifend for這一過程涉及了這樣幾項(xiàng)關(guān)鍵技術(shù)符號相似性判別技術(shù),符號要的位圖數(shù)據(jù)編碼技術(shù)及對符號的索引及位置尺寸信息進(jìn)行編碼時所使用到的整數(shù)編碼技術(shù)。
5.根據(jù)權(quán)利要求1或4所述的利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,其特征在于所述符號相似性判別技術(shù)包括(1)符號尺寸比較,先比較兩符號的尺寸,如果兩符號的長度差值或?qū)挾炔钪党^兩個像素點(diǎn),則判定兩個符號不相匹配。如果兩符號的尺寸合乎要求,就要進(jìn)一步對兩符號的像素點(diǎn)進(jìn)行比較。(2)像素點(diǎn)比較,對兩符號的像素點(diǎn)進(jìn)行比較時,要將待比較的兩個符號的質(zhì)心對齊后再把兩符號的像素點(diǎn)逐點(diǎn)比較,并創(chuàng)建兩符號的誤差圖。
6.根據(jù)權(quán)利要求1或4所述的利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,其特征在于所述位圖數(shù)據(jù)編碼技術(shù)包括利用統(tǒng)計模型提供的概率信息,使用二值低精度算術(shù)編碼方法進(jìn)行編碼,在我們的算法中使用的編碼寄存器的精度為32位;二值算術(shù)編碼方法是將0和1出現(xiàn)的概率表示成一個區(qū)間中的一個子區(qū)間,這一子區(qū)間與其所在的區(qū)間的比值就是正被編碼的信號(0或者1)出現(xiàn)的概率,然后,這一子區(qū)間就作為當(dāng)前的編碼區(qū)間,在對下一信號進(jìn)行編碼時,再在這個新的編碼區(qū)間中分出與編碼信號出現(xiàn)概率相應(yīng)的子區(qū)間;當(dāng)這個區(qū)間小于某一預(yù)設(shè)值時,則要對編碼區(qū)間進(jìn)行歸一化處理,并根據(jù)情況輸出編碼位,按照這些步驟反復(fù)操作,直至所有信號都被編碼為止。
7.根據(jù)權(quán)利要求1或4所述的利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,其特征在于所述整數(shù)編碼技術(shù)包括以下三個步驟(1)編碼整數(shù)的符號位;(2)存貯該整數(shù)所需的位數(shù),采用一元編碼方式編碼;(3)編碼整數(shù)本身。
全文摘要
本發(fā)明公開了一種利用計算機(jī)對數(shù)字化檔案文件壓縮的方法,它本發(fā)明包括計算機(jī)和數(shù)字化的二值圖文檔案文件,所述數(shù)字化的二值圖文檔案文件在計算機(jī)的處理過程中,要經(jīng)過如下的壓縮算法的運(yùn)行,該算法的步驟包括;從二值圖文中提取符號和重排序,以及符號編碼兩大部分。對檔案文件進(jìn)行基于符號的非圖像素的壓縮,壓縮率較超星PDG的壓縮算法提高了50個百分點(diǎn),較國圖的NLC壓縮算法提高了30個百分點(diǎn)以上。適用于對檔案文件的壓縮處理和管理。
文檔編號G06T9/20GK1545067SQ20031011146
公開日2004年11月10日 申請日期2003年11月24日 優(yōu)先權(quán)日2003年11月24日
發(fā)明者廖宏, 廖 宏 申請人:廖宏, 廖 宏