專利名稱:連續(xù)具有相似特性的圖像數(shù)據(jù)的區(qū)域的系統(tǒng)和方法
技術領域:
本發(fā)明涉及與本申請同一日期提交的美國專利申請(代理案號117300.01,117521,117544,117746,117747,117748,118584,118591和118601),在這里引用其全部并作為參考。
本發(fā)明涉及將圖像數(shù)據(jù)組織到具有相似顏色特性的區(qū)域中。
背景技術:
在高分辨率下掃描的文檔通常要求很大量的存儲空間。另外,大量的圖像數(shù)據(jù)要求多得多的時間和帶寬來操縱,比如在局域網或廣域網上、在內聯(lián)網、外聯(lián)網或因特網或其他分布式網絡上傳遞。
在使用掃描儀等掃描文檔之后,通常使用RGB顏色空間(即以原始RGB(raw RGB)格式)定義所述文檔。然而,文檔圖像數(shù)據(jù)并不是以該原始掃描的RGB格式被存儲,而通常是受到某種形式的數(shù)據(jù)壓縮來減少其量,從而避免了存儲這樣的掃描的RGB文檔圖像數(shù)據(jù)的高成本。
諸如Lempel-Ziv(LZ)或Lempel-Ziv-Welch(LZW)的無損游程(run-length)壓縮方案,對掃描的圖像數(shù)據(jù)或一般來說對具有平滑變化的低空間頻率(諸如梯度和/或自然照片數(shù)據(jù))的圖像數(shù)據(jù)執(zhí)行得不是特別好,然而諸如JPEG的有損方法對于平滑變化的連續(xù)色調圖像數(shù)據(jù)工作良好。但是,有損方法通常例如對二元文本和/或線藝術(line art)圖像數(shù)據(jù)或一般來說對包含尖銳的邊緣或顏色過渡的任何高空間頻率圖像數(shù)據(jù)工作得不那么良好。
發(fā)明內容
描述了能識別屬于在圖像中共享顏色和邊緣連續(xù)性特性的區(qū)域的像素的系統(tǒng)和方法。通過首先從頂部到底部掃描一個圖像、并識別屬于同一組的每條掃描線中的像素來識別區(qū)域。接著,ylink字段鏈接在一條線中的像素組以及其他線中的像素組,這些像素組共享相同的顏色和邊緣連續(xù)性特性。這些組被鏈接在一起成為能作為一個組被處理的二維區(qū)域。
用于識別圖像中區(qū)域的該方法可被應用于混合光柵內容(MRC)格式圖像數(shù)據(jù)。MRC是特別適合處理具有與顏色和灰度信息相互混合的文本的合成圖像的圖像數(shù)據(jù),其中圖像被分段成兩個或更多平面。這些平面通常被稱之為背景平面和前景平面。選擇器平面被生成來為合成圖像中的每個像素指示哪些圖像平面包含應當用來重建最后輸出圖像的實際的圖像數(shù)據(jù)。按這種方式將圖像數(shù)據(jù)分段成平面往往會改善圖像的總體壓縮,因為數(shù)據(jù)可被安排到不同的平面中,使得每個平面比原始圖像數(shù)據(jù)更平滑和更可壓縮。分段還允許對不同的平面應用不同的壓縮方法。因此,對于每個平面中的數(shù)據(jù)類型的最適合的壓縮技術可被應用來壓縮該平面的數(shù)據(jù)。
不幸的是,一些諸如便攜文檔格式(PDF)的圖像文檔格式不完全支持原始文檔的這樣的三層混合光柵內容分解。結果,當試圖打印或呈現(xiàn)已經使用該圖像文檔格式被壓縮和被存儲為混合光柵內容圖像數(shù)據(jù)文件的文檔時,該文檔要么根本不能被呈現(xiàn),要么在呈現(xiàn)時包含討厭的偽像。
本發(fā)明提供用于將文檔變換為混合光柵內容格式的、具有多個二元前景平面的圖像數(shù)據(jù)的系統(tǒng)和方法。描述了用于將具有一個或多個相關特性的圖像數(shù)據(jù)的像素聚集到(被稱之為“斑點”的)區(qū)域中的系統(tǒng)和方法,所述區(qū)域具有封閉具有相似邊緣連續(xù)性數(shù)值的像素的連續(xù)閉合曲線邊界。描述了把標識出現(xiàn)在圖像的單個掃描線上的斑點的掃描表格作為輸入而獲得的模塊,并且該模塊將這些出現(xiàn)在單個掃描線中的斑點連接到在先前的掃描現(xiàn)中出現(xiàn)的那些斑點。因為模塊開始于頁面的底部,并工作回到頂部,該模塊被稱之為從底部到頂部的模塊。從底部到頂部的模塊接著生成一個斑點的全局表格,其用一致的標識號描述出現(xiàn)在圖像數(shù)據(jù)的一個頁面中的所有斑點。
一旦生成斑點的全局表格,該表格被輸出到下游處理模塊,其按照各個斑點的空間關系和顏色相似性把它們集群在一起。區(qū)域的每個集群可被放置到多個二元前景平面的其中之一中。特別地,被聚集到一個給定二元前景平面中的每個區(qū)域具有與該給定二元前景平面足夠類似的顏色,使得可利用在輸出圖像中呈現(xiàn)的可接受顏色來重現(xiàn)高質量的圖像。
下面參照附圖詳細描述本發(fā)明的系統(tǒng)和方法的不同的示例實施例,其中圖1說明被分解到多個二元前景圖像平面和一個背景平面中的示例文檔圖像;圖2說明其中能操作斑點識別模塊的一個示例系統(tǒng);圖3更詳細說明斑點識別模塊的一個示例實施例;圖4更詳細說明從底部到頂部模塊的一個示例實施例;圖5說明一個示例斑點ID圖像,其中所表示的區(qū)域參考掃描表格;圖6顯示一個示例掃描表格結構;圖7顯示一個示例掃描表格條目;圖8顯示一個示例臨時斑點表格ID棧分配結構;圖9顯示一個示例臨時斑點表格條目;圖10說明圖5所示的從底部到頂部模塊的示例數(shù)據(jù)流圖;圖11說明掃描表格如何被垂直地鏈接;和圖12說明一個示例斑點ID圖像,其中所表示的區(qū)域參考臨時斑點ID;圖13是概述用于生成斑點的全局表格和斑點ID圖像的一個示例方法的流程圖;圖14說明兩個翻譯表格的結構;圖15是概述圖13的選擇下一個掃描表格步驟的進一步細節(jié)的流程圖;和圖16是概述圖13的翻譯掃描表格步驟的進一步細節(jié)的流程圖。
具體實施例方式
公開了自動處理掃描的和/或打印的彩色文檔以生成小的、高壓縮的精確捕獲原始文檔內容的圖像數(shù)據(jù)文件的系統(tǒng)和方法的不同示例實施方式。通過在文檔中掃描并且分析給定掃描線中的數(shù)據(jù)以確定圖像的哪些像素可因為它們具有類似顏色和邊緣特性而被分組在一起來生成數(shù)據(jù)文件。接著根據(jù)鏈接域中的信息鏈接掃描線,以生成相似顏色的像素的二維區(qū)域,并且所述區(qū)域由封閉的曲線邊界定義。通過組合在空間上重疊的類似顏色的區(qū)域來把這些區(qū)域或“斑點”集群在一起。組合的區(qū)域(集群的區(qū)域)接著被放置在多個二元前景層的其中之一中,并且可例如可被壓縮以作為PDF文件被輸出。
圖1顯示被分解成一個背景連續(xù)色調或灰度層(背景層)210和N個二元前景層的文檔的圖像數(shù)據(jù)。在本例中,存在6(N=6)個二元前景層220-270。所述圖像數(shù)據(jù)包含被分離成6個不同顏色值的低空間頻率顏色數(shù)據(jù)。6個顏色值的每一個與多個二元前景層220-270中的特定一個關聯(lián),所述二元前景層220-270包括包含6個顏色其中之一的空間區(qū)域220’-270’。不包括在區(qū)域220’-270’其中之一中的數(shù)據(jù)保留在背景層210中。將描述用于生成其每一個將被集群到一個二元前景層中的空間區(qū)域220’-270’的系統(tǒng)和方法。
輸入像素只可能被分配到多個前景平面的其中之一或被留在背景平面中。因此,在多個二元前景層220-270的任何一個中的圖像數(shù)據(jù)部分不與其他多個二元前景層220-270的任何一個中的其他圖像數(shù)據(jù)重疊。結果,二元前景層220-270的每一個可單獨地與背景層210組合而不用考慮順序或次序。當所有多個二元前景層220-270與背景層210組合,就獲得重建的圖像280。
描述了用于識別將被集群到被分配到每個二元圖像平面的區(qū)域220’-270’中的斑點的系統(tǒng)和方法。
圖2顯示用于從掃描的文檔圖像生成N個二元前景層的示例系統(tǒng)。圖2顯示由掃描儀400掃描以生成例如在RGB顏色空間中的圖像數(shù)據(jù)的文檔300,并且圖像數(shù)據(jù)被輸入到N層圖像數(shù)據(jù)生成系統(tǒng)1000。由N層圖像數(shù)據(jù)生成系統(tǒng)1000產生的N層接著由壓縮模塊800壓縮并作為例如PDF文件輸出。
N層圖像數(shù)據(jù)生成系統(tǒng)1000中的第一模塊是顏色變換模塊500。顏色變換模塊500可例如將RGB數(shù)據(jù)變換到YCC顏色空間。如周知的那樣,YCC顏色空間包括亮度分量(Y)和兩個色度分量(CC)。所述色度分量可以以2∶1的比率至少在一個方向上(如果不是在全部兩個方向的話)作子采樣,使得色度分量中的數(shù)據(jù)點有亮度分量中的數(shù)據(jù)點的一半那么多。還可以使用諸如Lab的其他顏色空間。
在YCC顏色空間中的圖像可接著被輸入到斑點識別模塊600,該模塊生成出現(xiàn)在圖像中區(qū)域或斑點的列表。斑點是基于顏色和邊緣特性被識別的。斑點是具有連續(xù)邊界的區(qū)域,該邊界封閉具有相似顏色值的像素。斑點識別模塊600將斑點ID分配給圖像中的每個像素,以指示像素屬于那個斑點(如果有的話)。不屬于斑點的像素被分配給背景層。每個像素位置的斑點ID的映射是斑點標識(斑點ID)圖像,并由斑點識別模塊600生成。
斑點識別模塊600還生成斑點的全局表格(GTB),其是在文檔圖像280中找到的所有斑點的列表。在這里描述的系統(tǒng)和方法是用于生成斑點ID圖像和GTB。將在下面參考斑點識別模塊600和例子一起進一步描述斑點ID圖像和GTB。
斑點ID數(shù)據(jù)、GTB接著被輸入到斑點集群處理模塊700。然后,斑點集群處理模塊700把斑點的全局表格中的斑點(即類似顏色的且在空間上重疊的關聯(lián)斑點)組織到集群中。斑點集群處理模塊700將集群的區(qū)域分配到N個前景平面中的一個,這取決于組合的區(qū)域的顏色值。
斑點集群處理模塊700為二元前景層的每一個和背景層將二元數(shù)據(jù)輸出到壓縮模塊800。壓縮模塊800可使用適用于被壓縮的數(shù)據(jù)的特定類型的壓縮例程有差別地壓縮二元前景層的每一個和背景層,以便為二元前景層和背景層生成壓縮的圖像數(shù)據(jù)。壓縮模塊800接著可以以諸如PDF格式的適合的格式將壓縮的二元前景和背景層輸出到下游過程。
圖3進一步顯示示例斑點識別模塊600的細節(jié)。斑點識別模塊包括從頂部到底部模塊610和從底部到頂部模塊620。從頂部到底部模塊610檢查掃描線上的每個像素以及檢查多個環(huán)境像素,并且識別所涉及的像素屬于哪個斑點。從頂部到底部模塊610接著為每條掃描線輸出一個掃描表格,其包括達到255個斑點的標識,或可在圖像的任何特定掃描線中出現(xiàn)的其他方便的數(shù)目。由于由從頂部到底部模塊610識別的斑點被包含在單個掃描線內,這種情況下的斑點是一維“線性”斑點。從頂部到底部模塊610還生成斑點ID圖像,其給圖像中的每個掃描的像素分配列在掃描表格中的斑點的標識,特定像素屬于該標識。從頂部到底部模塊610的操作和掃描表格的生成在與本申請同一日期提交的共同待審定的美國專利申請(代理案號117521)中詳細描述,在這里引用其全部并作為參考。
圖5中示出初始斑點ID圖像的例子。該斑點ID圖像具有用于圖像中每個像素的斑點標識符。圖5中示出的斑點ID圖像具有大約如字符“A”的形狀的斑點,使用根據(jù)本發(fā)明的系統(tǒng)和方法來確定其范圍和身份。
圖4顯示從底部到頂部模塊620的進一步細節(jié)。從底部到頂部模塊620包括CPU655、輸入/輸出端口660、存儲器665、掃描表格翻譯器670、斑點內容更新器675和斑點的全局表格生成器680。上述部件655-680可經由總線685被耦合到一起。雖然使用總線體系結構圖說明從底部到頂部模塊620,可以使用任何其他類型的硬件配置,諸如使用特定用途集成電路(ASIC)來實現(xiàn)一個或多個部件,或寫一個在CPU655中執(zhí)行的計算機程序來執(zhí)行從底部到頂部模塊的所有功能。
從底部到頂部模塊620通過輸入/輸出端口660輸入來自從頂部到底部模塊610的初始斑點ID圖像、當前掃描線的當前掃描表格、和先前掃描線的先前掃描表格,并在存儲器665中存儲數(shù)據(jù)。從底部到頂部模塊可同時接收一條掃描線和一條先前掃描線的數(shù)據(jù),或它可接收整個圖像的數(shù)據(jù),并在存儲器665中存儲數(shù)據(jù)。
圖5的斑點ID圖像中的每條線與一個掃描表格關聯(lián),該表格存儲與在每條掃描線中識別的斑點有關的信息。在圖6中示出被標記為“例子”的線的掃描表格。在圖5中標記為“例子”的線具有多個關聯(lián)在一起的像素。該線的掃描表格具有四個表格條目一個用于斑點#4,一個用于斑點#3,一個用于斑點#2和一個用于斑點#1,如斑點ID圖像中標識的那樣。(標為“0”的斑點是指背景層)。屬于斑點的像素不需要是鄰接的,并且實際上對于示例線,它們不鄰接。初始斑點ID圖像中的斑點ID是指在當前掃描表格中的斑點ID。
一個掃描表格可以保存多達255個條目或其他方便的數(shù)量的條目,對于255個條目的掃描表格,每個條目使用兩個字節(jié)的存儲器。在圖7中示出掃描表格條目的例子。該掃描表格條目對應于在斑點ID圖像中被標識為#4的斑點。掃描表格條目的兩個字節(jié)包括xlink字段和ylink字段。xlink字段將每個斑點與在同一條線上的屬于同一斑點的像素鏈接。xlink字段連接可被維護成循環(huán)列表,從而沒有與任何其他斑點水平連接的斑點可與其自身連接,即鏈接指向它本身。Ylink字段將在當前掃描線上識別的斑點與在先前掃描線上識別的斑點鏈接。因此,示例線的斑點#4的掃描表格條目具有指向在同一掃描線上的斑點#4的第二次出現(xiàn)的xlink條目和把斑點#4鏈接到在下面的掃描線上的斑點#3的ylink條目。
每個掃描條目的大小為兩個字節(jié),并且每個掃描表格包括高達255個有效條目。因此,每個掃描線的掃描表格要求256個條目×2字節(jié)=512字節(jié)的存儲器。
從底部到頂部模塊620通過給斑點另一個臨時ID來垂直地獲得掃描表格條目和斑點,同時該模塊集合斑點的內容。如同掃描表格,臨時ID被存儲在包含高達255個臨時斑點ID的表格中。臨時斑點ID的一個例子在圖6中示出。
圖9中示出臨時斑點ID條目的例子。與掃描表格ID條目比較,臨時ID條目包含與臨時ID的二維方面有關的附加的信息。特別地,臨時ID條目包含四個附加的字段min_x 735,max_x 740,min_y 745和max_y 750,它們是圍繞臨時斑點的“邊界框”的x-和y-范圍。邊界框是完全封閉被分配給斑點的所有像素的最小矩形。隨著附加的像素被從底部到頂部模塊添加,邊界框持續(xù)地被更新,以反映在添加附加的像素之后的新邊界。
如同掃描表格條目,臨時斑點ID可維護關于斑點的顏色值的信息。該信息例如可包括顏色和sum Y 755、sum Cb 760以及sum Cr 765。最后,如同掃描表格條目,臨時斑點ID條目存儲像素計數(shù)770和差異數(shù)據(jù)775。該臨時斑點ID條目還標識斑點ID 780并在之后將其分配以跟蹤該斑點。
每個臨時斑點ID條目用以下值初始化(i)max_x和max_y被設置為-1(非最大位置)(ii)min_x被設置為圖像寬度+1(非最小)(iii)min_y被設置為圖像高度+1(非最小)計數(shù)、var、sum Y、sum Cb以及Sum Cr都被初始化為0。按相繼的順序從斑點ID棧分配斑點ID。
當從底部到頂部模塊首先遇到一個新的斑點時,它分配一個臨時ID給這個新的斑點。該臨時ID是從維護使用中的臨時ID列表的斑點ID棧表格中獲得的。在圖8中示出斑點ID棧表格的結構。斑點ID棧表格可保存高達256個臨時斑點ID條目。例如,諸如第一個條目的一個條目為背景平面保留。斑點ID棧表格的主要目的是回收臨時斑點ID。一旦一個斑點被完成,其就被輸出到下游過程,并且與該斑點關聯(lián)的臨時ID被釋放并通過斑點ID棧機制可用于重新分配給新的斑點。
當從底部到頂部模塊620確定斑點被完成(即斑點被連續(xù)的邊界封閉并且不再添加附加的像素)時,從底部到頂部模塊620將臨時斑點ID的內容輸出到斑點的全局表格(GTB)。從底部到頂部模塊620還遞增地更新斑點ID圖像,以參考新的斑點標識符,而不是那些在局部掃描表格中使用的標識符。更新的斑點ID圖像和GTB接著被輸出,以用于由斑點集群處理模塊700進行進一步處理。
從底部到頂部模塊620可實質上對掃描表格和斑點ID圖像輸入執(zhí)行四個步驟1)使用下面線上的先前翻譯表格將掃描表格條目翻譯成翻譯表格中的臨時斑點ID。
2)如果一個或多個條目被發(fā)現(xiàn)包含沒有以循環(huán)方式指向其本身的末端xlink值,可對翻譯表格內容執(zhí)行第二個回合(pass)。
3)將斑點ID圖像更新到臨時斑點表格內容,以反映與這些臨時斑點條目關聯(lián)的在當前掃描線上的附加的像素。
4)把任何關閉的臨時斑點ID導出到GTB,并釋放分配給閉合的斑點的資源并使其可用于按需分配給新的臨時斑點。
從底部到頂部模塊620中的數(shù)據(jù)流由圖10顯示。如圖10所示,當前線的掃描表格條目由掃描表格翻譯器670輸入。掃描表格翻譯器670使用下面的線的先前的翻譯表格將掃描表格條目翻譯成臨時斑點ID。斑點ID圖像和增強的顏色圖像ENH被輸入到斑點內容更新器675,其為當前線上的所有掃描表格條目更新臨時斑點表格信息和斑點BID圖像。GTB生成器680接著確定是否閉合了任何斑點,并且如果是這樣,通過將斑點信息輸出到GTB來閉合斑點。閉合的斑點信息被附著到當前GTB,并且當前的臨時斑點ID按相繼的順序被下一個可用的GTB條目替換。這些步驟的每一個將在下面詳細描述。
在接收來自從從頂部到底部模塊610的當前掃描表格并保留下面的線的先前翻譯表格時,從底部到頂部模塊620從1到255評估當前掃描表格中的每個條目,以檢查它是否具有有效的(非零)的xlink字段。
在此時,從底部到頂部模塊620已經處理了下面的線的先前的掃描表格,因為模塊是向上行進的。因此,先前掃描表格條目已經被翻譯成臨時斑點id并且相同的id在被垂直鏈接時被傳送到當前的線。因為第一個掃描線(圖像的底部線)不具有其可被鏈接到的先前掃描線,該第一個掃描線的所有ylink值是0,并且在第一個掃描線中的每個有效斑點條目被給予一個初始臨時斑點ID。隨著該過程從底部向上每次繼續(xù)一條線時,其“解開”垂直的ylink連接并且重新分配從一條線到另一條一致的唯一臨時斑點id。
從底部到頂部模塊620借助翻譯表格維護臨時斑點ID的分配。從底部到頂部模塊620使用兩個翻譯表格,一個用于當前線,一個用于維護來自下面的線的先前的翻譯表格。圖14顯示兩個翻譯表格的結構。所述兩個翻譯表格對于每條線交替。在當前線的末尾,當前翻譯表格變?yōu)橄乱粭l線的先前翻譯表格,以及因為不再需要了,因而通過由下一線的翻譯表格數(shù)據(jù)重寫來銷毀下面的線的翻譯表格。
圖14說明在下面的線的掃描表格中的有效斑點條目27的例子,該條目與當前線掃描表格中的有效斑點條目21垂直的鏈接。當下面的線被從底部到頂部模塊620處理時,掃描表格條目27例如被翻譯成所分配的臨時ID 33。因為當前線條目21是垂直鏈接到下面的線的27的,臨時ID3 3被拷貝和分配給當前線的翻譯表格中的條目21。這指明兩個看上去不相關的掃描表格條目屬于同一個臨時斑點,并從而被分配了同一臨時斑點ID 33。
經由ylink字段參考早先掃描線上的斑點的所有后續(xù)掃描線將共享來自早先掃描線上的斑點的臨時斑點ID。因此,從底部到頂部模塊的動作是建立所識別的斑點之間的垂直的關聯(lián),將來自掃描表格的實質上是一維的斑點轉換成在斑點的臨時表格中列出的二維斑點。
當xlink字段是非零時,在掃描表格中的當前斑點條目被認為是有效的。否則,如果xlink=0,其指明當前斑點被鏈接到背景平面(id=0)。
對于每個有效斑點條目,檢查ylink字段。如果ylink是非零的,當前斑點垂直鏈接到在下面的線上的另一個斑點。跟隨ylink到下面的線的先前的翻譯表格,并且臨時斑點ID內容被檢索并被拷貝到當前線的翻譯表格斑點條目。
但是在另一方面,如果當前斑點不具有到任何先前斑點的垂直鏈接(例如ylink=0),那么其可是第一次遇到的新的斑點。首先作出一個檢查來觀察當前掃描表格條目是否垂直鏈接到在當前線上的任何其他掃描表格條目。一個不垂直鏈接到任何其他斑點的有效的斑點具有如循環(huán)xlink列表所指的那樣的指回其自己的斑點條目的xlink值。如果當前斑點被確定為垂直鏈接到其他斑點,那么對應的斑點條目在翻譯表格中被設置為0,并且打開標志“HasTerminalX”以指示發(fā)生的這個條件。在后續(xù)的步驟中,從底部到頂部模塊620還可進一步檢查這樣垂直鏈接的翻譯表格斑點條目,以確定是否分配新的臨時斑點ID給它們。
如果當前斑點是有效的、具有一個零ylink并具有一個以循環(huán)的方式指回其本身的xlink值,那么其可被考慮為第一次遇到的有效的新的斑點。從ID棧分配下一個可用臨時ID給它,并且將所分配的ID插入到當前翻譯表格中,以指明當前的掃描表格條目現(xiàn)在與這個新的臨時ID關聯(lián)。同時,ID棧計數(shù)器將遞減1,此時指向下一個可用的自由的臨時ID。該當前臨時ID將保持使用直到由GTB生成器680釋放,這將在下面描述。從底部到頂部模塊620維護臨時斑點ID并在其繼續(xù)將掃描表格條目分配給臨時斑點時更新臨時斑點信息。
最后,如果當前斑點xlink字段是0,那么其就被考慮成與背景平面鏈接。該對應的翻譯表格條目被設置為0。
在掃描表格翻譯過程完成通過掃描表格條目的第一個回合以創(chuàng)建初始翻譯表格后,如果“HasTerminalX”標志是打開的(指明至少一個斑點被確定為垂直鏈接到當前線上的另一個斑點),執(zhí)行第二個回合。在第二個回合中,只檢查在翻譯表格中先前被設置為0的斑點條目。對于在當前翻譯表格中的每個這樣的斑點條目,再次從當前掃描表格檢索xlink和ylink值。如果ylink=0并且xlink非零,如上述的那樣從ID棧獲得新的臨時ID,并且將其分配給翻譯表格中的當前條目。另外,跟隨xlink字段到下一個垂直鏈接的斑點條目(如果有的話),并且該斑點的對應的翻譯表格條目也被分配了同一新的臨時ID號。該過程重復通過所有垂直鏈接的斑點,直達達到指回第一個開始斑點ID的下一個xlink值。該過程確保垂直鏈接的斑點的整個鏈被一致地分配了相同的新的臨時ID號。
當掃描表格翻譯器670完成其任務達到每線兩個回合時,在當前掃描表格中的所有有效斑點將具有在翻譯表格條目中的有效的臨時斑點ID號。這些值被稱之為臨時斑點ID號,因為只有到斑點閉合并被導出到GTB時才由GTB生成器680使用它們。
返回到圖5說明的例子,對于在圖中所示的示例線,在圖7中顯示第四個掃描表格條目。xlink字段是有效的(4.xlink>0)并且是垂直連接到下面的線上的斑點3。跟隨當ylink字段向下到下面的線上的掃描表格時,可以發(fā)現(xiàn)3.ylink=1,也就是說,在斑點的第一條(底部)線中的臨時斑點id#1是垂直鏈接到掃描表格斑點ID#3。新的ylink值1被拷貝到掃描表格中的當前斑點id#4的當前翻譯表格條目,使得現(xiàn)在4.ylink=1(臨時ID)。因為這個例子中的兩個掃描表格斑點是垂直鏈接的,來自下面的線的翻譯表格分配的臨時斑點ID被拷貝到當前翻譯表格條目中。通過向上擴展這個過程,與這個形成一個斑點的像素組關聯(lián)的第一臨時斑點ID(被分配到最底部的掃描表格斑點)將被向上傳播并且對于所有垂直連接的斑點是一樣的。
圖11說明圖5中所示的例子的翻譯表格的之前和之后的值??梢酝ㄟ^比較之前和之后的值看出,效果是(如在下面的線的翻譯表格中所指示的那樣)與下面的線上的鏈接關聯(lián)的臨時斑點ID(#1)作為當前的翻譯表格條目被插入。該過程為上面的線上的所有垂直連接的斑點重復其自身,由此將同一臨時ID分配給在它們的對應的翻譯表格中的所有斑點。
因此,從底部到頂部模塊620的任務是從由從頂部到底部模塊610生成的實質上是一維的掃描表格信息創(chuàng)建二維斑點,這是通過利用翻譯表格條目將一維斑點垂直地或水平地鏈接在一起。二維斑點的每一個由作為由從底部到頂部模塊620集合的二維斑點的臨時列表的臨時斑點ID標識。每次遇到掃描線上的新的斑點時(其還沒有垂直鏈接)它就被給予一個新的臨時斑點ID。如果它是水平鏈接到當前線上的其他斑點的新的斑點,同一新的臨時斑點ID一致地被分配給所有如此水平鏈接的斑點。當該ID被后續(xù)的掃描線參考時,新的像素被與該相同的臨時斑點ID關聯(lián)。
斑點內容更新器675過程在掃描表格翻譯器670已經完成處理當前線之后開始。斑點內容更新器675用每個臨時斑點ID的多個字段維護斑點結構。在每條線的末尾,斑點內容更新器675更新每個活躍的臨時斑點ID的斑點結構,以包括來自與每個開放的ID關聯(lián)的當前線的新的像素的信息。對于在當前掃描表格中的每個有效斑點條目,斑點內容更新器675查找翻譯表格,以確定對應的臨時斑點ID號。斑點內容更新器675接著更新與斑點表格中的特定臨時斑點ID條目關聯(lián)的不同的字段。
斑點內容更新器675接著從左到右(按光柵的順序)為當前的掃描線一次一個像素地掃描BID圖像。對于每個像素,初始BID值指示與當前像素關聯(lián)的局部掃描表格斑點ID。該掃描表格ID條目已經在當前掃描表格中(對于當前線)被查找,并且通過查找當前翻譯表格條目被跟隨到對應的臨時斑點ID。
對應于臨時斑點ID的斑點結構條目被更新以包括任何與在當前線上的該臨時斑點ID關聯(lián)的新的像素。特別的,在臨時斑點表格條目中的字段被更新如下(i)min_y被設置為當前線(如果線號<min_y)(ii)max_y被設置為當前線(如果線號>max_y)(iii)min_x被設置為當前像素(如果像素<min_x)(iv)max_x被設置為當前像素(如果像素>max_x)(v)在局部掃描表格斑點中的像素的數(shù)目被添加到計數(shù)(vi)在局部掃描表格斑點中的差異被添加到var(vii)在局部掃描表格斑點中的顏色總和被分別添加到sum Y,sum Cb以及sum Cr。
這有效地將與該局部掃描表格斑點關聯(lián)的像素的內容添加到對應的臨時斑點字段,并參照當前像素位置更新臨時斑點邊界框。
為了防止在臨時斑點表格中的每個有效(非背景)斑點條目的YCC和字段(sum Y,sum Cb以及sum Cr)的溢出,每次這些字段中的任何一個的值變得太大時,重新規(guī)格化這些字段。這可以通過將YCC和字段除以2并且也將像素的計數(shù)數(shù)目除以2來完成,以便維護相同的比率。
最后,斑點內容更新器675更新當前像素的斑點ID以指向(剛被更新的)臨時斑點而不是指向原始的局部掃描表格斑點。該過程更新BID圖像以參考臨時斑點ID號而不是原始的掃描表格斑點分段。圖12是來自圖4的斑點ID圖像,其中根據(jù)構成字母“A”的一部分的每條掃描線的臨時斑點ID信息,形成字母“A”的斑點中的所有像素的斑點ID已經被用來自臨時斑點ID表格的臨時斑點ID#1代替。min_x、max_x、min_y和max_y是如圖12所示的圍繞斑點#1的邊界框的坐標。斑點#1現(xiàn)在是閉合的,因為向上的下一線不包含與斑點#1關聯(lián)的其他像素。
保持臨時斑點ID有效直到確定該臨時斑點是否可以被閉合,即不再有與該臨時斑點關聯(lián)的當前線上的像素。臨時斑點ID可被閉合,只要(1)斑點沒有到達當前掃描線(min_y>當前線);和(2)斑點具有非零計數(shù)(像素的總數(shù))。另外如果當前線是最后的掃描線(line=0),那么斑點就被閉合,因為不再有要處理的線了。由于從底部到頂部模塊620從頁面的底部向頂部工作,最后的掃描線是圖像的第一條線。
對于滿足上面條件的每個斑點,GTB生成器680可通過將YCC和除以計數(shù)等來規(guī)格化臨時斑點信息。當斑點條目被導出到最后的GTB時,斑點信息內容被附著到GTB,并且臨時斑點ID被來自GTB的下一個可用ID(最后的斑點ID分配)替代。因此,從臨時斑點表格移除臨時斑點條目和關聯(lián)的信息。導出過程可包括以下步驟1)將三個臨時斑點顏色總和(sum Y/Cb/Cr)除以斑點像素計數(shù),并且將結果四舍五入成下一個整數(shù)值。該操作產生平均斑點顏色。為了避免耗時的操作,可通過使用查找表格乘法和右移操作來實現(xiàn)除法。
2)檢查以確保GTB中存在用于更多斑點的空間。如果沒有空間,分配能保存兩倍斑點的新的GTB,將舊的表格內容拷貝到新的表格,并接著刪除舊的表格。從此時開始使用新的GTB。當GTB大小是基于頁面內容變化且斑點的數(shù)目在之前未知時該步驟可能是必要的。步驟2允許在創(chuàng)建GTB時GTB的大小動態(tài)地增長(在本例中是2的冪)。
3)通過將GTB計數(shù)遞增1來將新的斑點添加到GTB。
4)將臨時斑點條目的所有字段的內容從臨時斑點表格拷貝到在最近的新的條目之下的GTB。
當閉合的斑點被導出到GTB時,其被分配給GTB中的一個新的順序斑點id號。與被限制為最多256個條目的臨時斑點表格不同,GTB中的斑點數(shù)量不被限制并且對于一個復雜頁面可包含數(shù)千個斑點。
在當前臨時斑點的內容被輸入到GTB之后,可從臨時斑點表格移除臨時斑點。移除過程可包括將各個斑點字段重置為它們的默認(初始)值。在初始化之后,當前臨時斑點ID被推回到臨時斑點ID棧。這使得臨時斑點ID作為最后的棧條目被添加并且棧計數(shù)器被遞增1。結果,斑點ID可用于重新使用。如果在找到新的斑點之前沒有附加的斑點ID被釋放,那么斑點ID可被馬上重新分配給新找到的斑點。
因此,通過拷貝關聯(lián)的臨時斑點條目的內容,閉合的臨時斑點被傳遞到GTB。GTB存儲由斑點識別模塊600識別的最后的斑點列表以及在GTB中的每個斑點的關聯(lián)的斑點信息。
GTB和斑點ID圖像BID隨后被斑點集群處理模塊700使用,該模塊根據(jù)顏色類似性和空間重疊集群GTB中的斑點。所述集群接著被分配給二元前景平面,其可接著被輸出到壓縮模塊800,并被包裝成PDF文件用于以后的操縱。
雖然參考了硬件實施例給出了先前的描述,斑點集群過程還可作為在微處理器上執(zhí)行的軟件實現(xiàn)。在這種情況下,所述方法的每個步驟由適當編程的微處理器或由硬件和軟件的組合執(zhí)行。
圖13是概述用于鏈接在線掃描設備中識別的斑點的示例方法的流程圖。方法起始于步驟S100,其中選擇第一條或下一條掃描線。過程進行到步驟S200,其中翻譯掃描表格。過程進行到步驟S300,其中確定HasTerminalX是否被設置成1。如果是,過程進行到步驟S400,其中新的ID被分配給所有水平鏈接的斑點。如果不是,過程進行到步驟S500,其中確定xilink是否大于0。如果是,過程進行到步驟S600。在步驟S600中,掃描表格的ylink字段被檢索,并被跟隨到先前的線。過程進行到步驟S700,其中中間的線的ylink被跟隨直到達到底部線,從這里檢索臨時斑點ID。過程進行到步驟S800,其中斑點ID圖像被臨時斑點ID替換而不是被掃描表格斑點ID替換。過程進行到步驟S900,其中臨時斑點ID條目被更新以反映添加到來自當前掃描線的斑點的附加的像素。在步驟S1000中,臨時斑點表格被評估以觀察是否有任何斑點可被閉合。如果是,在步驟S1100中通過將其顏色總和除以像素計數(shù)來規(guī)格化臨時斑點ID條目。過程繼續(xù)到步驟S1200,其中臨時斑點條目被拷貝到GTB。在步驟S1300中,臨時斑點ID被初始化并被返回到臨時斑點ID表格,用于將來的使用。過程進行到步驟S1400,其中確定當前掃描線是否是最后的掃描線。如果不是,過程跳回到步驟S100。如果是,步驟結束。
圖15是概述圖13的步驟S200的進一步的細節(jié)的流程圖。過程開始于步驟S210,其中標志“HasTerminalX”被設置為0。過程進行到步驟S215,其中選擇掃描表格中的下一個斑點條目。在步驟S220中,確定xlink是否等于0。如果是,過程進行到步驟S240,其中當前翻譯表格被設置為0。如果不是,在步驟S225中,確定ylink是否等于0。如果不是,來自下面的線的翻譯表格的當前條目被拷貝到y(tǒng)link字段中。在步驟S225中,如果ylink字段等于0,那么在步驟S230中確定xlink是否等于當前斑點條目。如果不是,過程進行到步驟S250,其中當前翻譯表格被設置為0,并且HasTerminalX被設置為1。在步驟S230中,如果xlink等于當前斑點表格條目,那么在步驟S235中分配新的ID。過程進行到步驟S255,其中確定條目是否是掃描表格中的最后的斑點條目。如果不是,過程跳回步驟S215。如果是,過程在步驟S260結束。
圖16是概述圖13的步驟S100的進一步的細節(jié)的流程圖。過程開始于步驟S110,其中選擇下一個掃描表格條目。過程進行到步驟S115,其中在掃描表格中查找xlink和ylink。在步驟S120中,確定xlink是否等于0。如果不是,過程進行到步驟S125,其中確定ylink是否等于0。如果是,過程進行到步驟S130,其中確定翻譯表格條目是否為0。如果是,從ID棧分配新的ID。過程接著進行到步驟S140,其中跟隨xlink到下一個斑點條目。在步驟S145,同一新的斑點ID被分配給斑點條目。在步驟S150中,確定是否評估了最后的xlink。如果不是,過程跳到步驟S140,其中跟隨xlink到下一個斑點條目。如果是,過程進行到步驟S155,其中確定最后的掃描表格條目是否已被評估。如果不是,過程跳到步驟S110,其中選擇下一個掃描表格條目。如果最后的掃描表格條目已經被評估,那么在步驟S160結束過程。
雖然已經結合各個示例實施例描述了本發(fā)明,但是這些實施例應當被看作是說明性的,而不是作為限制。各種修改、替換等等都可能落入本發(fā)明的精神和范圍內。
權利要求
1.一種用于識別圖像數(shù)據(jù)中的像素的區(qū)域的方法,包括a)識別一個包含圖像數(shù)據(jù)的第一條線中的像素的斑點,所述像素在顏色特性上的差別小于預定的量;b)將所述斑點與一個臨時斑點標識符關聯(lián);c)識別包含圖像數(shù)據(jù)的鄰近的線中的像素的附加的斑點,所述像素在顏色特性上的差別小于預定的量;d)如果附加的斑點被鏈接到所述斑點,將附加的斑點與所述臨時斑點標識符關聯(lián)。
2.一種用于識別圖像數(shù)據(jù)中的像素的區(qū)域的方法,包括識別一個包含圖像數(shù)據(jù)的周線中的像素的斑點,并將所述斑點與一個臨時斑點標識符關聯(lián),所述像素在顏色特性上的差別小于預定的量;緊接著從與所述周線相鄰的下一條鄰近線開始識別包含有在顏色特性上的差別小于預定的量的像素的下一個斑點;如果所述下一個斑點基于所述下一個斑點的鏈接信息而被鏈接到所述斑點或者與所述斑點鏈接的之前的下一個斑點,則將所述下一個斑點與所述臨時斑點標識符關聯(lián);緊接著繼續(xù)識別包含與新的下一條鄰近線相鄰的下一條鄰近線的、在顏色特性上的差別小于預定的量的像素的下一個斑點;繼續(xù)將下一條鄰近線的所述下一個斑點與所述臨時斑點標識符關聯(lián),直到達到一條不具有鏈接到所述斑點的斑點的線。
3.一種圖像數(shù)據(jù)處理設備,包括斑點處理器;和與斑點處理器耦合的存儲器,該存儲器存儲將圖像數(shù)據(jù)的兩個或多個線斑點鏈接在一起的鏈接信息,其中斑點處理器將一條線的線斑點和被鏈接到一起的連續(xù)鄰近的各線的斑點集合成單個斑點,并為該單個斑點分配一個唯一的斑點ID。
4.一種用于識別圖像數(shù)據(jù)中的區(qū)域的設備,包括一種裝置,該裝置用于根據(jù)周線中的像素的顏色和邊緣特性將所述周線中的像素分配給一個斑點、用于將下一個鄰近線中的像素分配給下一個斑點、用于根據(jù)所述下一個斑點和所述斑點的顏色特性提供把所述下一個斑點鏈接到所述斑點的鏈接信息、以及用于緊接著根據(jù)顏色特性識別在與所述下一個鄰近線相鄰一條新的下一個鄰近線上的新的下一個斑點;另一種裝置,該裝置用于在所述新的下一個斑點沒有被鏈接到先前的下一條鄰近線中的任何其他斑點的情況下將所述下一條線中的所述新的下一個斑點鏈接到一個新的臨時斑點標識符、用于將所述下一個斑點鏈接到一個先前的斑點、用于在所述先前的斑點被鏈接到所述斑點的情況下將所述先前的斑點鏈接到所述臨時斑點標識符、以及用于將所述下一條鄰近線上的所述下一個斑點與所述臨時斑點標識符關聯(lián),直到達到一條不具有鏈接到所述斑點的任何斑點的線為止。
全文摘要
一條線一條線地分析圖像數(shù)據(jù),以識別具有類似顏色和邊緣特性的像素。如果共享類似特性,在一條線上的像素被鏈接到另一條線上的像素。所鏈接的像素接著被一起分組到區(qū)域中,并且計算區(qū)域的平均顏色。生成標識像素所屬于的區(qū)域的圖像映像以及區(qū)域的最后的表格。
文檔編號G06K9/50GK1655582SQ200510009469
公開日2005年8月17日 申請日期2005年2月8日 優(yōu)先權日2004年2月12日
發(fā)明者D·J·庫里, A·納發(fā)里赫, D·克勒特, T·W·塔耶 申請人:施樂公司