專利名稱:給數字圖像分段和產生緊湊表示的制作方法
技術領域:
本發(fā)明一般地涉及數字圖像處理領域,并且更具體地涉及產生數字圖像的高等級描述。
背景技術:
圖像分段是將圖像劃分為或分開為語義上或視覺上連貫的區(qū)域。每個區(qū)域是具有類似屬性或多個屬性的一組連通的像素。對于單色圖像,用于分段的一個基本屬性是亮度幅度,而對于彩色圖像是顏色分量。
與不斷增加的計算處理能力相結合的掃描技術的激增導致文檔分析系統(tǒng)領域中的許多進展。這些系統(tǒng)可用于,通常借助于OCR技術,從掃描文檔中提取語義信息。這種系統(tǒng)還可以用于通過根據頁的每個部分的內容選擇性地使用適當的壓縮方法改進文檔圖像的壓縮。改進的文檔壓縮使其自身適合于諸如存檔和電子分發(fā)的應用。
分段是用于文檔圖像分析的處理階段,其中在可以執(zhí)行高等級處理諸如區(qū)域分類和布局分析之前,必須首先將低等級像素分段為原語對象。布局分析根據關于文檔布局的一些預定規(guī)則,將原語對象分類為已知的對象類型。典型地,布局分析不分析原始掃描圖像數據,而是工作于可替代的數據組,諸如來自頁的分段的斑點或連通組分。除了各個對象屬性之外,布局分析還可以使用對象分組,以便確定它們的分類。
下面描述用于圖像分段的若干已知方法。
閾值劃分是用于分段的最簡單的方法,并且如果將處理的圖像是兩級的(例如,黑白文檔圖像),其可能是快和有效的。然而,如果圖像是復雜的,具有多個亮度或顏色等級的區(qū)域,在二值化過程中可能丟失這些區(qū)域中的某一些。更復雜的閾值劃分技術采用自適應或多級閾值劃分,其中按局部等級執(zhí)行閾值估計和二值化處理。然而,這些方法仍然不能正確地分段對象。
基于聚類(clustering)的方法,諸如k均值和向量量化,往往產生好的分段結果,但是它們是需要多輪的迭代算法。因此,這種方法可能慢,并且難以實現。
分裂和合并圖像分段技術基于四元樹數據表示,其中如果原始圖像段的屬性不是一致的,則將正方形圖像段分裂為4個象限。如果發(fā)現4個相鄰的正方形一致,將這些正方形合并為由這4個相鄰的正方形構成的單個正方形。分裂和合并處理通常開始于全圖像等級。因此,僅在緩沖了整個頁之后才能開始處理,這需要高的存儲器帶寬。另外,這種方法往往是計算密集的。
區(qū)域生長是一種用于圖像分段的公知方法,并且是概念上最簡單的方法之一。將具有類似屬性或多個屬性的相鄰像素分為一組,以便形成段區(qū)域。然而,在實際中,必須對生長模式施加相當復雜的約束以便達到可接受的結果。已有的區(qū)域生長方法可能具有若干不理想的效果,因為這些方法往往偏向于初始種子的位置。不同的種子選擇可能帶來不同的分段結果,并且如果種子點位于邊緣上,則可能出現問題。
與不斷增加的計算處理能力相結合的掃描技術的激增導致在文檔分析系統(tǒng)領域內的許多進展。這些系統(tǒng)可用于,通常借助于OCR技術,從掃描文檔中提取語義信息。這種技術被用在數目日益增加的應用內,諸如自動表格閱讀,并且還可以用于通過根據頁的每個部分的內容選擇性地使用適當的壓縮方法,改進文檔的壓縮。改進的文檔壓縮使其自身適合于諸如存檔和電子分發(fā)的應用。
某些文檔分析系統(tǒng)執(zhí)行布局分析,以便將文檔分為根據它們的內容分類的區(qū)域。典型地,布局分析不分析原始掃描的圖像數據,而是工作于可替代的數據組,諸如來自頁的分段的斑點或連通組分。除了各個對象屬性之外,布局分析還可以使用對象分組,以便確定它們的分類。
一般地,執(zhí)行頁的二值分段以便產生用于布局分析的數據,并且這可以通過簡單地給原始圖像設置閾值獲得。這種二值分段的一個優(yōu)點是分段的對象位于有助于進行布局分析的簡單的包含分層結構內。不幸的是,許多復雜的顏色文檔的布局不能完全以二值圖像完整地表示。從顏色到二值圖像轉換中固有的信息內容的減少可能導致重要特征的退化,并且甚至導致文檔的詳細結構的丟失。
因此頁文檔分析的顏色分段在保持頁的內容方面具有優(yōu)點,但是也給其帶來了附加的復雜性。首先,分段分析本身變得更棘手,并且增加了處理要求。第二,由于分段的頁對象不形成包含分層結構,復雜化了對這些分段頁對象的分析。這限制了布局分析的準確性和有效性。
文檔布局分析系統(tǒng)還可以采用用于驗證文檔區(qū)域的文本分類的技術。這些方法中的某一些使用像素和、陰影(shadowing)和投影輪廓的直方圖分析。這些方法通常是不可靠的,因為難以將健壯的統(tǒng)計量應用于這種方法,并且難以為可能是單行或許多行并且不知道文檔中的字符集和文本對齊的文本進行調整。
發(fā)明內容
根據本發(fā)明的第一個方面,提供了一種給包括多個像素的數字圖像分段的方法。該方法包括步驟從數字圖像產生像素的多個塊;和以單輪的方式使用像素塊為每個塊生成至少一個連通組分。生成步驟又包括將像素塊分段為至少一個連通組分,每個連通組分包括空間上相連并且語義相關的一組像素;將該塊的該至少一個連通組分與從以前處理過的至少一個其它塊分段出的至少一個連通組分合并;并且以緊湊的形式存儲該塊的連通組分在圖像中的位置。
語義相關的像素可以包括顏色類似的像素。
產生步驟可以包括子步驟將數字圖像布置成多個帶,每個帶包括預定數目的連貫的像素行;并且一個接一個地緩沖和處理這些帶。該處理步驟又包括對每個當前緩沖的帶執(zhí)行的子步驟將當前帶布置成像素的多個塊;和為生成步驟一個接一個地緩沖和處理當前帶的塊。
存儲子步驟可以包括存儲M-1個二值位圖,其中M個連通組分在一個塊內,M是整數。
存儲子步驟可以包括存儲索引圖。
分段子步驟可以包括為每個塊估計若干代表性的顏色;將每個塊量化為代表性的顏色;和從每個量化的塊形成連通組分。分段子步驟還可以包括將形成的連通組分的子集合并。合并子步驟可以包括收集連通組分的統(tǒng)計量。統(tǒng)計量可以包括邊界框、像素計數、邊界長度和平均顏色中的一個或多個。該方法還可以包括步驟將被認為是噪聲的所形成的連通組分刪除。噪聲可以包括具有低于預定閾值的像素計數和高于另一個預定閾值的邊界長度與像素計數比的連通組分。合并步驟可以包括將塊的連通組分與左邊和上邊的塊的連通組分合并;和更新合并的連通組分的統(tǒng)計量。統(tǒng)計量可以包括邊界框、像素計數、填充比率和平均顏色中的一個或多個。
估計子步驟可以包括基于每個塊中的像素的YUV數據,形成與多個顏色庫有關的直方圖;基于直方圖統(tǒng)計量對每個塊分類;和基于塊分類合并庫顏色,以便形成代表性顏色。該方法還包括在一輪中為每個像素形成索引圖的步驟。量化步驟可以包括將非空庫量化為代表性顏色;創(chuàng)建到代表性顏色的庫映射;和使用庫映射將索引圖重新映射為代表性顏色。形成子步驟可以包括基于Y值確定亮度帶;基于U和V值確定顏色列;將像素顏色累積到映射庫;和遞增映射庫的像素計數。確定亮度帶的步驟還可以包括亮度帶抗混疊。確定顏色列的步驟還可以包括顏色列抗混疊。
合并步驟可以包括為接觸左和上邊界的當前塊內的各個連通組分執(zhí)行的下面的子步驟尋找沿著公共邊界觸及當前連通組分的一列連通組分;和確定合并的最佳候選。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面的方法中的任意一個方面給包括多個像素的數字圖像分段。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面的方法中的任意一個方面給包括多個像素的數字圖像分段的計算機程序。
根據本發(fā)明的另一個方面,提供了一種自動產生顏色文檔的緊湊表示的方法。該方法包括步驟在一輪中按塊光柵順序,將顏色文檔頁的數字圖像分段為連通組分;基于整個頁的緊湊的、連通組分統(tǒng)計量,使用布局分析將頁的數字圖像劃分為前景和背景圖像;在前景圖像的至少一個部分遮蔽了背景圖像的位置,在一個輪中以塊光柵順序修復背景圖像的至少一個部分;及合并前景圖像和背景圖像以形成緊湊的文檔。
該方法還可以包括對背景圖像下采樣的步驟。此外,該方法可包括壓縮背景圖像的步驟。壓縮步驟可以涉及有損壓縮。另外,該方法可以包括對有損壓縮的背景圖像的不同壓縮。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面的方法中的任意一個方面自動產生顏色文檔的緊湊表示。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面的方法中的任意一個方面自動產生顏色文檔的緊湊表示的計算機程序。
根據本發(fā)明的另一個方面,提供了一種分析包括多個像素的數字圖像的方法。該方法包括步驟將數字圖像分段為對象,其中以多于兩個標簽表示分段;為每個對象提供一組屬性;為對象的子集,使用包含測量確定在共享邊界的相鄰對象間是否存在父親-孩子關系;基于對象的屬性,形成共享共同父親的多組對象;和根據它們的屬性和分組給對象分類。
可以使用每個對象周圍的邊界框和描述對象間的觸及關系的信息確定包含。如果兩個對象在邊界接觸,并且一個對象的邊界框完全包含另一個對象的邊界框,則該對象包含該另一個對象。
形成組步驟可以包括考慮共同父親的一列孩子中的孩子對象的對;和使用對象屬性,確定每個對是否應被分組到一起。僅可以考慮對具有相同父親的一列孩子對象中的相鄰對象進行分組??梢曰谶吔缈蚝皖伾畔⒔o對象分組。
可以根據組內對象的文本類質量測試將一組對象分類為文本。用于文本類質量的測試可以包括為每個對象識別表示對象位置的單個值;形成這些值的直方圖;和按照直方圖的屬性識別文本。
本發(fā)明還可以包括步驟根據其它對象的屬性將它們添加到對象的文本分類組,而不管它們的父親-孩子屬性如何。
根據本發(fā)明的另一個方面,提供了一種分析包括文檔頁的多個像素的數字圖像的方法。該方法包括步驟給數字圖像分段,以便基于圖像形成對象;形成對象的組;和確定每個對象組是否表示文本。確定步驟包括根據對象在頁上的位置,為每個對象識別單個值;形成這些值的直方圖;和按照直方圖的屬性識別文本。
直方圖的屬性可以是具有多于指定的對象數目的直方圖中的庫內的對象的總數??商鎿Q地,屬性可以是直方圖內的計數的平方和。
表示對象位置的每個對象的單個值可以是對象的邊界框的邊。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據按照前面任意一個方面的方法,分析包括多個像素的數字圖像。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據按照前面任意一個方面的方法分析包括多個像素的數字圖像的計算機程序。
根據本發(fā)明的另一個方面,提供了一種修復包括多個像素的數字圖像的方法。該方法包括步驟從數字圖像產生多個像素塊;和按照光柵順序為至少一個塊改變至少一串(run)像素的像素值。改變步驟包括對每個塊執(zhí)行的如下的子步驟確定與一個對象有關的塊內的一串像素的開始和結束像素,該串包括被分組到一起的相鄰的像素;根據該串外的像素的像素值,修改所述串內的對象的至少一個像素值;和確定該塊內不相應于對象的像素的活性(acitivity)測量值;以及如果該塊的活性測量值小于預定的閾值,將具有至少一串像素的每個塊內的所有像素值改變?yōu)樵O置值。
該方法還包括步驟根據擴大的對象之外的像素的像素值,修改對象之外擴大的對象像素的至少一個像素值。
該產生步驟可以包括子步驟將數字圖像布置為多個帶,每個帶包括預定數目的連貫的像素行;和一個接一個地緩沖和處理這些帶。該處理步驟可以包括對每個當前的緩沖帶執(zhí)行的如下的子步驟將當前帶布置為多個像素塊;和為改變步驟一個接一個地緩沖和處理當前帶的塊。
所述串包括塊的像素的光柵行中的相鄰像素。
該方法還包括使用基于塊的壓縮方法壓縮各個塊的步驟。基于塊的壓縮方法可以是JPEG。該方法還可以包括使用另一種壓縮技術進一步壓縮基于塊壓縮的塊的步驟。
可以根據對象之外的像素的像素值,使用根據串的左邊和右邊的像素值內插的值,或來自串的左邊的一個像素的值,修改對象的至少一個像素值。
可以將具有至少一串像素的每個塊的所有像素值改變?yōu)橐郧疤幚磉^的塊的平均值,或該塊內的可視像素的平均值。
該方法還可以包括步驟如果未發(fā)現擴大的對象像素串的結尾,則將像素的顏色值設置為不相應于擴大的對象像素串左邊的對象的像素的顏色值。
像素值可以是顏色值。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面任意一個方面的方法,修復包括多個像素的數字圖像。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面任意一個方面的方法,修復包括多個像素的數字圖像的計算機程序。
根據本發(fā)明的另一個方面,提供了一種改變包括多個像素的數字圖像的像素值的方法,這些像素的至少一部分相應于圖像中的一個對象,該方法包括步驟將數字圖像布置為多個帶,每個帶包括預定數目的連貫的像素行;和依次一個接一個緩沖和處理這些帶。該處理步驟可以包括對每個當前的緩沖帶執(zhí)行的如下的子步驟將當前帶布置為多個像素塊;和依次一個接一個處理這些塊。塊處理步驟包括針對每個塊的如下子步驟確定塊內不相應于圖像內的對象的像素的活性測量值;如果活性測量值小于預定的閾值,則將該塊內的所有像素的像素值改變?yōu)橐粋€像素值;使用JPEG壓縮該塊;和使用另一種壓縮方法壓縮JPEG壓縮的塊。
每個帶可包括數字圖像的16行像素,塊包括16×16個像素,并且以流水線方式執(zhí)行壓縮步驟。
改變塊內的所有像素的顏色值的步驟可以包括將像素的顏色值設置為在不相應于緊挨著擴大的對象像素串的左邊和右邊的對象的像素間進行線性內插而獲得的顏色值,擴大的對象像素是串外并且與串相鄰的像素。
該方法還可以包括步驟將塊內的像素的顏色值設置為不相應于塊內的對象的像素的平均顏色值。
該方法還可以包括步驟將塊內的像素的顏色值設置為之前的塊的平均顏色。
可以通過擴大定義對象的位置的掩蔽,確定擴大的對象的像素。
其他的壓縮方法可以包括ZLIB。
像素值可以是顏色值。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面任意一個方面的方法,改變包括多個像素的數字圖像的像素值,這些像素的至少一部分相應于圖像中的對象。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面任意一個方面的方法,改變包括多個像素的數字圖像的像素值的計算機程序,這些像素的至少一部分相應于圖像中的對象。
根據本發(fā)明的另一個方面,提供了一種給包括多個像素的數字圖像分段的方法。該方法包括步驟從數字圖像產生多個像素塊;和以一輪的方式使用像素塊為每個塊生成至少一個連通組分。生成步驟又包括將像素塊分段為至少一個連通組分,每個連通組分包括一組空間上相連并且語義上相關的像素;將塊的至少一個連通組分與從以前處理過的至少一個其他塊分段出的至少一個連通組分合并;和以緊湊形式存儲該塊的連通組分在圖像中的位置。
語義相關的像素可以包括顏色類似的像素。
存儲子步驟可以包括存儲M-1個二值位圖,其中M個連通組分在一個塊內,M是整數。
存儲子步驟可以包括存儲索引圖。
分段子步驟可以包括為每個塊估計若干代表性的顏色;將每個塊量化為代表性的顏色;和從每個量化的塊形成連通組分。分段子步驟還可以包括將形成的連通組分的子集合并。合并子步驟可以包括收集連通組分的統(tǒng)計量。統(tǒng)計量可以包括邊界框、像素計數、邊界長度和平均顏色中的一個或多個。該方法還可以包括步驟將被認為是噪聲的所形成的連通組分刪除的步驟。噪聲可以包括具有低于預定閾值的像素計數和高于另一個預定義閾值的邊界長度與像素計數比的連通組分。合并步驟可以包括將塊的連通組分與左邊和上邊的塊的連通組分合并;和更新合并的連通組分的統(tǒng)計量。統(tǒng)計量可以包括邊界框、像素計數、填充比率和平均顏色中的一個或多個。
估計子步驟可以包括基于每個塊中的像素的YUV數據,形成與多個顏色庫有關的直方圖;基于直方圖統(tǒng)計量對每個塊分類;和基于塊分類合并庫顏色,以便形成代表性顏色。該方法還包括在一輪中為每個像素形成索引圖的步驟。量化步驟可以包括將非空庫量化為代表性顏色;創(chuàng)建到代表性顏色的庫映射;和使用庫映射將索引圖重新映射到代表性顏色。形成子步驟可以包括基于Y值確定亮度帶;基于U和V值確定顏色列;將像素顏色累積到映射庫;和遞增映射庫的像素計數。確定亮度帶的步驟還可以包括亮度帶抗混疊。確定顏色列的步驟還可以包括顏色列抗混疊。
合并步驟可以包括為接觸左和上邊界的當前塊內的各個連通組分執(zhí)行的下面的子步驟尋找沿著公共邊界接觸當前連通組分的一列連通組分;和確定合并的最佳候選。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面的方法中的任意一個方面給包括多個像素的數字圖像分段。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面的方法中的任意一個方面給包括多個像素的數字圖像分段的計算機程序。
根據本發(fā)明的另一個方面,提供了一種自動產生顏色文檔的緊湊表示的方法。該方法包括步驟在一輪中以塊光柵的順序,將顏色文檔頁的數字圖像分段為連通組分;基于整個頁的緊湊的、連通組分的統(tǒng)計量,使用布局分析將頁的數字圖像劃分為前景和背景圖像;在前景圖像的至少一個部分遮蔽了背景圖像的位置,在單輪中以塊光柵的順序修復背景圖像的至少一個部分;和合并前景圖像和背景圖像形成緊湊的文檔。
該方法還可以包括對背景圖像下采樣的步驟。另外,該方法可包括壓縮背景圖像的步驟。壓縮步驟可以涉及有損壓縮。另外,該方法可以包括對有損壓縮的背景圖像的不同壓縮。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面的方法中的任意一個方面自動產生顏色文檔的緊湊表示。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面的方法中的任意一個方面自動產生顏色文檔的緊湊表示的計算機程序。
根據本發(fā)明的另一個方面,提供了一種分析包括多個像素的數字圖像的方法。該方法包括步驟將數字圖像分段為對象,其中以多于兩個標簽表示分段;為每個對象提供一組屬性;為對象的子集,使用包含測量確定在共享邊界的相鄰對象間是否存在父親-孩子關系;基于對象的屬性,形成共享共同父親的多組對象;和根據對象的屬性和分組對它們分類。
可以使用每個對象周圍的邊界框和描述對象間的觸及關系的信息確定包含。如果兩個對象在邊界接觸,并且一個對象的邊界框完全包含另一個對象的邊界框,則該對象包含該另一個對象。
形成組步驟可以包括考慮共同父親的一列孩子中的孩子對象的對;和使用對象屬性,確定每個對是否應被分組到一起。僅可以考慮為具有相同父親的一列孩子對象中的相鄰對象進行分組??梢曰谶吔缈蚝皖伾畔ο蠓纸M。
可以根據組內對象的文本類質量測試將一組對象分類為文本。用于文本類質量的測試可以包括為每個對象識別表示對象位置的單個值;形成這些值的直方圖;和按照直方圖的屬性識別文本。
本發(fā)明還可以包括步驟根據其它對象的屬性將它們添加到對象的文本分類組,而不論的它們的父親-孩子屬性如何。
根據本發(fā)明的另一個方面,提供了一種分析包括文檔頁的多個像素的數字圖像的方法。該方法包括步驟給數字圖像分段,以便基于圖像形成對象;形成對象的組;和確定每個對象組是否表示文本。確定步驟包括根據對象在頁上的位置,為每個對象識別單個值;形成這些值的直方圖;和按照直方圖的屬性識別文本。
直方圖的屬性可以是直方圖中具有多于指定的對象數目的庫中的對象的總數。可替換地,屬性可以是直方圖內的計數的平方和。
表示對象位置的每個對象的單個值可以是對象的邊界框的邊緣。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據按照前面任意一個方面的方法,分析包括多個像素的數字圖像。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據按照前面任意一個方面的方法,分析包括多個像素的數字圖像的計算機程序。
根據本發(fā)明的另一個方面,提供了一種修復包括多個像素的數字圖像的方法。該方法包括步驟從數字圖像產生多個像素塊;和為至少一個塊,按照光柵順序改變至少一串像素的像素值。改變步驟包括對每個塊的執(zhí)行如下的子步驟確定塊內與一個對象有關的一串像素的開始和結束像素,該串包括被分組到一起的相鄰的像素;根據該串外的像素的像素值,修改所述串內的對象的至少一個像素值;和確定不相應于該塊內對象的像素的活性測量值;以及如果塊的活性測量值小于預定的閾值,將具有至少一串像素的每個塊內的所有像素值改變?yōu)樵O置值。
該方法還包括步驟根據擴大的對象之外的像素的像素值,修改對象之外的擴大的對象像素的至少一個像素值。
該產生步驟可以包括子步驟將數字圖像布置為多個帶,每個帶包括預定數目的連貫的像素行;和一個接一個地緩沖和處理這些帶。該處理步驟可以包括對每個當前緩沖的帶執(zhí)行的如下的子步驟將當前帶布置為多個像素塊;和為改變步驟一個接一個地緩沖和處理當前帶的塊。
所述串包括塊的像素的光柵行中的相鄰像素。
該方法還可以包括使用基于塊的壓縮方法壓縮各個塊的步驟。基于塊的壓縮方法可以是JPEG。該方法還可以包括使用另一種壓縮技術進一步壓縮基于塊壓縮的塊的步驟。
可以根據對象之外的像素的像素值,使用根據串的左邊和右邊的像素值內插的值,或來自串的左邊的一個像素的值,修改對象的至少一個像素值。
可以將具有至少一串像素的每個塊的所有像素值改變?yōu)橐郧疤幚磉^的塊的平均值,或該塊內的可視像素的平均值。
該方法還可以包括步驟如果未發(fā)現擴大的對象像素串的結尾,則將像素的顏色值設置為不相應于擴大的對象像素串左邊的對象的像素的顏色值。
像素值可以是顏色值。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面任意一個方面的方法,修復包括多個像素的數字圖像。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面任意一個方面的方法,修復包括多個像素的數字圖像的計算機程序。
根據本發(fā)明的另一個方面,提供了一種改變包括多個像素的數字圖像的像素值的方法,這些像素的至少一部分相應于圖像中的對象,該方法包括步驟將數字圖像布置為多個帶,每個帶包括預定數目的連貫的像素行;和依次一個接一個緩沖和處理這些帶。該處理步驟可以包括用于每個當前的緩沖帶的如下的子步驟將當前帶布置為多個像素塊;和依次一個接一個處理這些塊。塊處理步驟包括針對每個塊的如下子步驟確定塊內不相應于圖像內的對象的像素的活性測量值;如果活性測量值小于預定的閾值,則將該塊內的所有像素的像素值改變?yōu)橐粋€像素值;使用JPEG壓縮該塊;和使用另一種壓縮方法壓縮JPEG壓縮的塊。
每個帶可包括數字圖像的16行像素,塊包括16×16個像素,并且以流水線方式執(zhí)行壓縮步驟。
改變塊內的所有像素的顏色值的步驟可以包括將像素的顏色值設置為通過在不相應于緊挨著擴大的對象像素串的左邊和右邊的對象的像素間進行線性內插而獲得的顏色值,擴大的對象像素是串外并且與串相鄰的像素。
該方法還可以包括步驟將塊內的像素的顏色值設置為不相應于塊內的對象的像素的平均顏色值。
該方法還可以包括步驟將塊內的像素的顏色值設置為在前塊的平均顏色。
可以通過擴大定義對象的位置的掩蔽,確定擴大的對象的像素。
其他的壓縮方法可以包括ZLIB。
像素值可以是顏色值。
根據本發(fā)明的另一個方面,提供了一種包括處理器和存儲器的裝置,用于根據前面任意一個方面的方法,改變包括多個像素的數字圖像的像素值,這些像素的至少一部分相應于圖像中的對象。
根據本發(fā)明的另一個方面,提供了一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據前面任意一個方面的方法,改變包括多個像素的數字圖像的像素值的計算機程序,這些像素的至少一部分相應于圖像中的對象。
下面參考附圖描述若干實施例,其中圖1是提供根據本發(fā)明的實施例的分段、分析和壓縮數字圖像的概要的高層流程圖;圖2是圖1的顏色分段步驟的流程圖;圖3是圖2的獲得下一個像素的步驟的詳細流程圖;圖4是圖1的布局分析步驟的流程圖;圖5是圖1的產生壓縮輸出圖像的步驟的流程圖;圖6是包括字符“i”和相關聯(lián)的連通組分的圖像的方框圖;圖7是可以實施本發(fā)明的實施例的通用計算機系統(tǒng)的方框圖;圖8是根據本發(fā)明的實施例的用于為掃描的輸入頁產生壓縮輸出的系統(tǒng)的方框圖;圖9是圖10的顏色連通組分分析和斑點統(tǒng)計步驟的詳細流程圖;
圖10是圖2的顏色分段步驟的流程圖;圖11是圖10的顏色量化步驟的詳細流程圖;圖12是圖9的形成新斑點或生長已有斑點的步驟的詳細流程圖;圖13是圖10的貼片(tile)間合并步驟的流程圖;圖14是圖13的處理最佳斑點和CC對的步驟的流程圖;圖15是示出了斑點合并處理的例子的方框圖;圖16是示出了當前貼片和兩個相鄰貼片的狀態(tài)間的合并的方框圖;圖17是示出了貼片間合并的條件的表;圖18是圖14的CC映射處理的結果的例子;圖19是圖10的貼片內合并步驟的流程圖;圖20是圖4的分組CC步驟的流程圖;圖21是圖4的檢查CC組的步驟的流程圖;圖22是圖20的尋找一個組的孩子CC的步驟的流程圖;圖23是圖20的初始分組步驟的流程圖;圖24是圖21的檢查對齊步驟的流程圖;圖25(a)是示出了基于多于兩個量化等級的分段的簡單例子的圖像;圖25(b)和(c)是示出了圖25(a)的圖像的二值分段的相應結果的圖像;圖26是包含兩個對象即字母“g”和“h”的文檔的區(qū)域的圖示;圖27(a)示出了圖27(b)的圖像的邊界框的底的值的直方圖;圖27(b)示出了對從圖像中分段出的部分的不規(guī)則布置的邊界框的選擇;圖27(c)示出了圖27(d)的頁的相應的直方圖;圖27(d)示出了用于文本組的頁上的邊界框的布置;圖28是顏色斑點劃分系統(tǒng)的方框圖;圖29(a)到29(c)是顏色直方圖輸出的圖像,包括原始貼片,索引圖和調色板,其中調色板的上部和下部的灰色部分表示空庫;
圖30是圖5的修復貼片的步驟的流程圖;圖31是圖30的形成貼片前景位掩蔽的步驟的流程圖;圖32是圖30的修復像素和測量貼片活性的步驟的流程圖;圖33是圖30的貼片平坦化步驟的流程圖;圖34是背景圖像貼片中的示例像素和在全分辨率前景掩蔽中被檢查的相應像素的方框圖;圖35包括一維修復的例子的曲線圖;圖36是示出了使用6×6貼片的例子的顏色斑點處理的方框圖;圖37包括示出了斑點合并的例子的圖像;圖38包括示出了用于比較目的的原始貼片和合并斑點輸出的圖像;圖39是示出了以光柵順序合并貼片上的斑點的方框圖;圖40是示出了圖11的形成2D直方圖和第一調色板的步驟的流程圖;圖41是示出了圖11的形成第二調色板的步驟的流程圖;圖42是示出了圖41的產生兩顏色調色板的步驟的流程圖;圖43是示出了圖41的產生多顏色調色板的步驟的流程圖;圖44是示出了圖11的將像素和第二調色板相關聯(lián)的步驟的流程圖;圖45是示出了圖44的映射兩級貼片的步驟的詳細流程圖;圖46是示出了圖44的映射多顏色貼片的步驟的詳細流程圖;圖47是圖11的分析直方圖和對貼片分類的步驟的流程圖;圖48是示出了對所有操作條件進行更新之前和之后的CC和斑點候選計數的表;圖49是示出了合并斑點和CC候選的例子的方框圖;圖50是示出了圖10的后合并處理的步驟的流程圖;圖51是根據本發(fā)明的另一個實施例的系統(tǒng)的方框圖;圖52是圖51的顏色分段模塊的方框圖;和圖53是示出了設置點的Delaunay三角測量和Voronoi圖的圖。
具體實施例方式
公開了用于處理和壓縮數字圖像的方法、裝置和計算機程序產品。在下面的描述中,提出了若干特定細節(jié),包括具體的無損壓縮技術、顏色空間、空間分辨率、貼片大小等。然而,本領域的技術人員從該公開可以明了,可以做出修改和/或替代而不脫離本發(fā)明的范圍和精神。在其他情況中,可能忽略特定的細節(jié)以便不會使得本發(fā)明模糊不清。
在附圖的任意一個或多個內引用具有相同附圖標記的步驟和/或特征的情況下,出于本說明書的目的,這些步驟和/或特征具有相同的功能(多個)或操作(多個),除非出現相反的意圖。
在本說明書的上下文中,單詞“包括”具有開放式的,非排他的含意“主要包括但不必僅包括”,但既不是“基本上由...組成”,也不是“僅由...組成”。詞“包括(comprising)”的變體,諸如“包括(comprise)”和“包括(comprises)”,具有相應的含意。
詳細說明的內容被組織為如下的章節(jié)。
1概述2顏色分段2.1獲得輸入圖像的下一個貼片2.2形成貼片的顏色分段2.2.1顏色量化2.2.1.1形成2D直方圖和第一調色板2.2.1.2分析直方圖和對圖像分類2.2.1.3形成第二調色板2.2.1.3.1產生2顏色調色板2.2.1.3.2產生多顏色調色板2.2.1.4關聯(lián)像素與第二調色板2.2.1.4.1映射兩級貼片
2.2.1.4.2映射多級貼片2.2.2顏色CC分析和斑點統(tǒng)計量2.2.2.1形成斑點2.2.2.2斑點合并的例子2.2.3貼片內合并2.2.4貼片間合并2.2.4.1貼片間合并條件2.2.4.2貼片間合并例子2.2.4.3處理最佳斑點和CC對2.2.4.4 CC映射結果2.2.5后合并處理2.3分段例子3布局分析3.1對CC分組3.1.1尋找父親CC的孩子3.1.2初始化分組3.1.2.1兩個CC的分組測試3.2檢查分組3.2.1檢查對齊3.2.2對齊的例子4產生壓縮的輸出圖像4.1修復貼片4.1.1形成貼片前景位掩蔽4.1.2修復像素和測量貼片活性4.1.3修復例子4.1.4貼片平坦化5硬件實施例5.1顏色分段模塊6計算機實現
7工業(yè)實用性在下文中以上述順序詳細描述以上部分。
1概述本發(fā)明的第一個實施例是運行在通用計算機上的處理。圖1提供了分段、分析和壓縮數字圖像的處理100的高層概述。處理100的輸入優(yōu)選地是分辨率為300dpi的RGB圖像。然而,適當地修改處理100,也可以輸入其他顏色空間的圖像。同樣,可以輸入不同分辨率的圖像。在步驟110,使用對輸入圖像進行的單輪處理,執(zhí)行圖像到連通組分(CC)的顏色分段。使用單輪處理,可以迅速地處理數字圖像,從而可以處理大量高分辨率的圖像。連通組分是全部連接在一起(接觸)的類似的顏色像素的組。例如,形成以白紙上的黑墨水打印的字母“i”的主體或主干的像素構成一個連通組分,“i”上的點構成另一個CC,且圍繞字母“i”作為背景的任何白像素構成另一個CC。圖6示出了包括字符“i”的圖像600,其中黑點表示黑像素,并且白點表示白像素。示出了“i”的主干CC 610和“i”的點CC 612。還示出了空白像素的另一個結果CC 614。
作為分段的一部分,計算描述CC的緊湊信息和統(tǒng)計量。對數字下采樣,并且直接提供到步驟130。在步驟120,使用這個緊湊CC信息和統(tǒng)計量對CC執(zhí)行布局分析。該布局分析確定頁上的特征的布局,頁例如包括文本字符、段落、表和圖像。在步驟130,使用該布局信息創(chuàng)建一個或多個前景圖像。一般地由在步驟120中識別出的文本字符構成前景圖像,并且優(yōu)選地是二值圖像??梢杂幂斎敕直媛?例如,300dpi)存儲前景圖像,而可以用較低的分辨率(例如,150dpi)存儲背景圖像。前景元素被從背景圖像中去除。然后,使用不同的技術壓縮前景和背景,并且以復合圖像格式存儲。復合格式可以是,例如,PDF文檔。下面在單獨的章節(jié)中描述顏色分段、布局分析和壓縮數字圖像中的每一個。
用于本發(fā)明的實施例的一個應用是分析來自掃描儀的光柵像素圖像,并且盡可能多地提取高層信息。根據該信息,可以生成頁的高層描述。為了該目的,系統(tǒng)可以被設計為通過以硬件執(zhí)行像素分析,更快地運行。然而,從下面描述中將明了,該系統(tǒng)也可以完全以軟件實現。另外,雖然下面描述了特定輸出格式PDF,可以對系統(tǒng)進行修改,以便利用其他頁描述格式作為輸出格式。
圖8是根據本發(fā)明的實施例的用于生成掃描輸入文檔810的壓縮或緊湊表示850的系統(tǒng)800的高層方框圖。系統(tǒng)800包括前端模塊820、中間模塊830和后端模塊830。前端模塊820是優(yōu)選地以硬件實現的基于貼片的前端,但是可以是ASIC和由嵌入式處理器執(zhí)行的軟件的組合。貼片光柵順序是一種基于貼片的處理方法,其中每次一個地從上到下和從左到右處理貼片。該模塊對輸入圖像執(zhí)行顏色分段,并且將貼片的背景圖像提供給后端模塊840(由箭頭指示)。前端模塊820以整頁的分辨率(例如,300dpi)執(zhí)行顏色連通組分分析。前端模塊820還從數字圖像810生成連通組分(CC),并且將CC提供給執(zhí)行布局分析的中間模塊。該模塊可以完全以軟件實現。前端模塊820向模塊840提供下采樣圖像。將中間模塊830的輸出提供給后端模塊840,其執(zhí)行基于貼片的修復,并且生成數字圖像810的緊湊表示。與前端模塊820類似,后端模塊840可以至少部分地以帶有在嵌入式處理器和ASIC上執(zhí)行的軟件的硬件實現。該緊湊輸出可以包括較低空間分辨率的數字圖像和較高分辨率的前景位圖。
前端模塊820執(zhí)行涉及檢查每個像素的所有分析工作,并且形成語義上相關的像素的區(qū)域的顏色CC。來自前端模塊820的輸出是關于頁上的所有顏色CC的信息。用于每個CC的信息包括邊界框、平均顏色、接觸列表和像素數目。當為了最佳性能以硬件實現算法時,算法應當是在帶寬方面有效的。對于圖像處理任務,算法不隨機訪問整個掃描頁。而是,算法每次工作于小貼片上。
2顏色分段圖2更詳細地示出了圖1的步驟110。圖2中所示的處理工作于輸入圖像的貼片上,這些貼片的大小,例如,可以是32×32像素。可以按光柵順序處理貼片-即,從左到右,和從上到下。第一個被處理的貼片是輸入圖像的左上角的貼片,并且最后處理的貼片是輸入圖像的右下角的貼片。出于效率的目的進行這種貼片劃分。
在步驟210,獲得將處理的輸入圖像的下一個貼片??梢允褂弥羔樞畔⒂行У卦L問每個貼片。參考圖3更詳細地描述步驟210。步驟220、230、240和250的處理局限于當前貼片的像素。在步驟220,可選擇地對當前貼片執(zhí)行去半色調處理。例如,以該方法處理的掃描輸入文檔可能包含來自打印處理的半色調。半色調可以使得難以進行后續(xù)分析,并且可能不能很好地壓縮。因此,可以使用本步驟220檢測和去除半色調。僅作為例子,可以進行下面的去半色調處理。去半色調處理可以工作于16×16的貼片上??梢詫⒚總€32×32RGB像素的輸入貼片劃分為4個16×16的貼片,并且分別處理每一個。半色調檢測可以每次工作于一個顏色通道(即,R、G和B)上。如果在任何通道中檢測到半色調,可以在所有通道上執(zhí)行半色調去除。為了檢測半色調,將貼片中的每個像素量化為4個等級。輸入顏色通道值的范圍是0-255。該4個等級是范圍0-63、64-127、128-191和192-255??梢詼y量彼此鄰接的像素間的等級變化數??梢运降睾痛怪钡剡M行這種測量。
由于半色調通常為小點,該檢測要求改變數是大的,并且水平改變數小于垂直改變數。這防止將由文本字符的邊緣引起的等級的改變檢測為半色調。可以指定用于檢測的閾值。如果在16×16的貼片中檢測到半色調,可以使用,例如,空間模糊去除半色調。半色調檢測器還可以使用來自以前分析過的貼片的信息。例如,如果接觸當前貼片的貼片中具有在貼片中檢測到的半色調,當前貼片可能也包含半色調。當使用該信息時,可以調整閾值,以便放松半色調檢測要求或使其更嚴格。
在步驟230,如果當前貼片的顏色空間已經不在YUV顏色空間中,則執(zhí)行轉換,以便將貼片內的像素轉換到YUV顏色空間。因此,該步驟可選擇地取決于輸入圖像的顏色空間。雖然在該實施例中使用YUV顏色空間,可以采用其他顏色空間而不脫離本發(fā)明的范圍和精神。用于從RGB轉換到YUV的轉換公式可以與,例如,獨立JPEG組(IJG)JPEG庫中所使用的相同。
在步驟240,對當前貼片執(zhí)行形成連通組分(CC)的顏色分段,并且計算關于貼片中的CC的緊湊信息和統(tǒng)計量。顏色CC包括一個或多個語義上相關的跨一個或多個貼片的斑點。例如,語義上相關的斑點可以有類似的顏色。斑點是單個貼片中具有類似著色特性的一組連通的像素。斑點劃分是一種顏色分段并且形成連通組分表示的處理。每個CC具有如下的統(tǒng)計量像素大小、平均顏色、二值掩蔽、斑點邊界長度和邊界框。圖10更詳細地示出了該步驟。
在步驟250,對當前貼片下采樣,以便形成背景圖像的相應部分。例如,可以使用庫式濾波器在兩個維度上以2∶1下采樣,但是可以采用其他方法而不脫離本發(fā)明的范圍和精神。在決定步驟260,進行檢查,以便確定是否剩余任何更多的貼片要處理。如果步驟260的結果為否(即,已經處理了圖像中的所有貼片),處理終止。然而,如果步驟260的結果為是,處理在步驟210處繼續(xù)。
2.1獲得輸入圖像的下一個貼片圖3詳細示出了圖2的步驟210。處理210工作在輸入數字圖像的帶上。圖像的帶是若干連貫的圖像行。每個帶的高度可以與貼片的高度相同。因此,例如,圖像的第一個32行形成一個帶,并且在該情況下,圖像的第一個帶;下面的32個圖像行形成下一個帶,并且依此類推。每個帶的寬度可以是輸入圖像的寬度。在決定步驟310,進行檢查以便確定是否需要讀入另一個帶。當已經處理了當前帶的所有貼片時,需要讀入另一個帶。另一次需要讀入另一個帶是第一次執(zhí)行步驟310,這是因為此時還未讀帶。如果步驟310的結果為是,處理在步驟320繼續(xù)。否則,處理在步驟340處繼續(xù)。
在步驟320,從輸入圖像讀取數據的下一個帶,例如,從盤讀入存儲器內的緩沖器。存儲器緩沖器可以布置為在連續(xù)的存儲器位置包含帶的每行像素。另外,保持每行的開始的存儲器位置的記錄即,每個帶行的指針。在步驟330,初始化確定要訪問的貼片-當前貼片-的變量tx(即,設置為0)。在步驟340,將行指針信息更新為指向當前貼片。調用圖3的處理210的其他處理通過引用在步驟340更新的行指針信息獲得新的貼片。行指針信息可以包括每個貼片行的指針。因此,每個貼片可以有32個行指針。給定行指針指向給定行中貼片的第一個像素的存儲器位置。通過沿著指向每個相應帶線的開始的指針之外的(貼片寬度*tx)個存儲器位置步進每個行指針,可以更新行指針信息。在步驟350,將變量tx增加1,從而下一次調用圖3的處理210時,將另一個貼片輸入處理。
2.2形成貼片的顏色分段顏色斑點劃分是一種以貼片光柵順序工作的圖像分段算法。斑點是單個貼片內的相同量化標簽的像素的連通組。每個斑點具有如下的統(tǒng)計量像素大小、平均顏色、二值掩蔽、斑點邊界長度和邊界框。其目的是將文檔圖像分段為一組非重疊的連通組分,其中每個連通組分包含連通的語義相關的像素的集合,例如,特定文本字母內的像素集合形成一個連通組分,圍繞著該文本的圖像的一部分內的像素形成另一個連通組分等。
圖28是具有4個模塊2810、2820、2830和2840的顏色斑點劃分系統(tǒng)2800的方框圖。顏色量化模塊2810接收輸入的顏色貼片(例如,對于RGB顏色空間,24位的像素值),確定貼片中主顏色的數目,并且根據主顏色量化貼片。將主顏色和量化的貼片作為輸入提供給連通組分和斑點統(tǒng)計模塊2820,其在單個光柵輪中對量化的貼片執(zhí)行8路連通組分分析。在同一個光柵輪中,收集斑點統(tǒng)計量,諸如像素數、平均顏色、斑點邊界長度和邊界框信息。將斑點和統(tǒng)計量作為輸入提供給貼片內合并模塊2830,其通過基于顏色、大小和邊界統(tǒng)計量合并斑點,減少貼片內的假的和小的斑點的數目。將來自該模塊2830的結果斑點和統(tǒng)計量作為輸入提供給貼片間合并模塊2840,其根據斑點統(tǒng)計量,將當前貼片內的斑點與相鄰貼片(左邊和上邊)內的接觸斑點分組在一起,以便形成作為系統(tǒng)2800的輸出的連通組分。將參考圖10的處理進一步對其進行描述。
圖10是用于將圖像分段為顏色CC的步驟240的詳細流程圖。作為分段處理的一部分,計算描述CC的緊湊信息和統(tǒng)計量。通過接收來自步驟230的像素的輸入貼片開始分段處理。在決定塊1005,進行檢查以便確定該貼片是否是平坦的。如果貼片是平坦的,處理在步驟1040處繼續(xù)到貼片間合并階段。否則,處理在步驟1010處繼續(xù)。在步驟1010,對貼片執(zhí)行顏色量化。顏色量化使用三個主要步驟找到貼片內的主顏色,而不考慮像素幾何形狀1)顏色減少,2)貼片分類,和3)尋找主顏色和量化。通過顏色直方圖方法確定輸入貼片內的主顏色。通過根據主顏色量化輸入貼片像素,創(chuàng)建顏色標簽的量化貼片。主顏色是被人類觀看者察覺為是貼片內的視覺上明顯的顏色。該算法適合于硬件(HW)實現,并且以軟件(SW)實現也相當快。
步驟1020在單個光柵輪中對量化的貼片執(zhí)行8路連通組分分析以便形成斑點。在步驟1030,執(zhí)行貼片內合并處理,以便通過基于顏色、大小和邊界信息合并斑點,減少貼片內假的和小的斑點的數目。在步驟1040,執(zhí)行貼片間的合并。將量化的貼片中識別出的斑點與當前貼片左邊和上邊的兩個以前處理的貼片內所識別出的斑點進行比較,以便合并為顏色CC。從而,一個顏色CC包括跨越一個或多個貼片的一個或多個類似著色的斑點。這樣,除了邊界信息之外,顏色CC具有針對斑點的相同類型的上述統(tǒng)計量。
在步驟1050,將當前貼片內的斑點和這些斑點形成的顏色CC存儲在緊湊的貼片狀態(tài)數據結構中。這個貼片狀態(tài)不包含像素數據。貼片狀態(tài)僅包含將新創(chuàng)建的斑點合并到已有的顏色CC內所需的信息??梢杂酶叩拇鎯ζ餍蕡?zhí)行貼片間合并處理1040,因為在分段處理的任意階段,對于與當前貼片合并來說,僅需兩個或更少的貼片狀態(tài)。另外,步驟1050更新每個顏色CC的接觸列表。接觸列表描述哪些連通組分彼此鄰接。在前端中作為顏色CC分析的一部分產生該接觸列表。圖2中的步驟240產生接觸列表。然后處理終止。
2.2.1顏色量化顏色量化的目的是將整個顏色輸入減少到縮減的顏色集合,以便為連通組分產生做準備。為了找到主顏色,對每個輸入像素進行一次檢查,并且產生直方圖。本發(fā)明的實施例采用這樣的直方圖,其使用亮度作為第一個維度,并且組合兩個色度分量作為第二個維度。這與根據三個顏色分量的軸將庫劃分為三維的傳統(tǒng)的顏色直方圖不相類似。本發(fā)明的實施例產生有助于更容易地找到好的主顏色的緊湊的直方圖。根據直方圖的特性,將貼片分類為三類-平坦的、兩級的、多顏色的。根據貼片分類產生用于貼片的調色板。在產生調色板后,根據像素映射到的調色板顏色,給每個像素分配量化標簽。該方法設計為用于高速處理和低的存儲器需求。平坦的貼片僅具有一個量化標簽。兩級貼片具有兩個量化標簽。多顏色貼片具有多至4個量化標簽。
圖10的顏色量化步驟1010在圖11中進一步展開。此處給出圖11中的每個步驟的簡要描述,并且跟著給出每個步驟的詳細描述。在步驟1110,使用第一調色板同時形成2D直方圖和索引圖。圖40提供了步驟1110的進一步的細節(jié)。在步驟1120,根據2D直方圖的統(tǒng)計量執(zhí)行貼片分類。圖47提供了步驟1120的進一步細節(jié)。在步驟1130,基于貼片分類形成第二調色板。這涉及壓縮第一調色板。圖41提供了步驟1130的進一步細節(jié)。在步驟1140,將像素與第二調色板相關聯(lián)。將索引圖重新映射到第二調色板顏色中的一個,以便產生具有量化標簽的量化貼片。然后,處理終止。
2.2.1.1形成2D直方圖和第一調色板圖40更詳細地示出了圖11的步驟1110的處理。通過預定的映射方法,以像素光柵順序在一輪中將輸入的整個顏色貼片量化為索引圖。圖29(a)示出了輸入的原始貼片的例子,和產生的結果索引圖。映射可以配置為針對組織為8個亮度帶和4個顏色列的32個顏色庫。每個顏色庫可以具有顏色累積器、像素計數器和注冊ID,以放置在該庫內的第一個像素的YUV值設置該注冊ID??梢愿鶕?D直方圖的狀態(tài)改變預定的映射方法。結果,沒有針對每個庫的預定顏色且像素顏色順序可以影響第一調色板的組成。最后每個非空庫的平均顏色構成第一調色板。圖29(c)示出了產生的調色板,其中上部和下部的灰部分代表空庫。
在步驟4010,從貼片獲得具有顏色值(YUV)的像素。在步驟4015中執(zhí)行預定的映射,以便將像素映射到亮度帶和顏色庫(即,bin_mapped)。預定的映射可以如下band=Y>>5,且column=(|U-REF_U|+|V-REF_V|)*NORMALISING_FACTOR[band].
灰色的色度值可以用于REF_U和REF_V(即,對于8位的RGB輸入數據,REF_U=128,REF_V=128)。使用選擇的REF_U和REF_V預先計算用于每個帶的NORMALISING_FACTOR,以便將每個帶標準化到RGB顏色空間中的4個庫。可以使用表1的偽碼產生NORMALISING_FACTOR。
表1
Set max_dist
to 0for each r in 0to 255{for each g in 0 to 255{for each b in 0 to 255{c=RGB2YUV(r,g,b);band=c.y>>5;dist=|c.u-128|+|c.v-128|;if(dist>max_dist[band])max_dist[band]=dist;}}}for each band in 0 to 7NORMALISING_FAGTOR[band]=1/max_dist[band]*4
步驟4020到4025執(zhí)行用于兩級貼片輪廓增強的可選擇的“帶抗混疊”。在步驟4020,如果允許進行“帶抗混疊”,并且映射帶和上邊的帶或下邊的帶之間的亮度差未超過指定的閾值(例如,16),在步驟4025執(zhí)行“帶抗混疊”。否則處理在步驟4035處繼續(xù)。
在步驟4025,執(zhí)行帶抗混疊。嘗試找到上邊帶或下邊帶內的接近的非空庫。候選庫是以band-1或band+1映射的一個。在下面兩個條件的任意一個中,以候選庫替換映射庫(bin_mapped)1候選庫非空,并且其注冊ID(Y)距離小于16,并且bin_mapped為空。
2候選庫和bin_mapped兩個不為空,并且Y比bin_mapped的注冊ID(Y)更接近候選庫的注冊ID(Y)。
步驟4035到4055執(zhí)行“庫抗混疊”處理。步驟4035檢查映射庫(bin_mapped)是否為空。如果映射庫不為空,步驟4040如下檢查映射誤差max(|U-registration ID(U)|,|V-registration ID(V)|)<MAX_BIN_ERROR[band],其中MAX_BIN_ERROR[band]是上面用于產生標準化因子的偽碼中定義的每個帶內的max_dist的八分之一。
如果步驟4035返回假(否),處理在步驟4040處繼續(xù)。否則,處理在步驟4045處繼續(xù)。在決定步驟4040中,進行檢查以便確定映射誤差是否超過了指定的閾值,該閾值是針對該帶的最大庫誤差。
如果映射誤差在閾值內,處理在步驟4060處繼續(xù)。否則,執(zhí)行步驟4055以尋找更接近的庫。在步驟4055,從列0開始搜索,并且向前移動到映射帶中的列3。當滿足下面的條件中的任何一個時終止搜索1發(fā)現空庫,和2發(fā)現具有在允許的閾值內的映射誤差的庫如果步驟4055的搜索在條件1上終止,將(YUV)值注冊在空庫內,并且該空庫替代bin_mapped。如果兩個條件都失敗了,以具有最小映射誤差的庫替代bin_mapped。然后處理在步驟4060處繼續(xù)。
在步驟4035的測試之后,如果映射庫為空,處理在步驟4045處繼續(xù)。在決定步驟4045中,進行檢查以便確定已經發(fā)現了同一個帶內的接近的非空庫。步驟4045從列0到3搜索,試圖尋找滿足以前定義的映射誤差閾值的非空庫。如果找到這種庫,在步驟4052中以空庫替代bin_mapped,并且然后處理在步驟4052處繼續(xù)。否則如果步驟4052返回假(否),以步驟4050中的顏色(YUV)值記錄bin_mapped,并且處理在步驟4060處繼續(xù)。
在步驟4060,將像素顏色(YUV)累積在映射庫(bin_mapped)內,并且遞增bin_mapped內的像素計數。在步驟4065,為當前像素記錄bin_mapped的位置。在步驟4070,進行檢查以便確定貼片中是否存留有更多的像素。如果結果為是,處理在步驟4010處繼續(xù)。否則,它在步驟4075處繼續(xù),其中每個非空庫的像素計數除以其累積的顏色。每個非空庫的平均顏色形成第一調色板。然后處理終止。
2.2.1.2分析直方圖和對圖像分類貼片分類是發(fā)現貼片內的主顏色的方法?;谡{色板內的分布和顏色變化,將貼片分類為3組平坦的、兩級的和多顏色的。平坦的貼片具有對于人類的眼睛來說在視覺上不變的顏色,并且通常形成2D直方圖內的一個簇。平坦調色板具有多至3個顏色,并且顏色變化小。兩級貼片具有兩個獨特的顏色,并且通常在2D直方圖內垂直排成列。兩級調色板具有跨越少數亮度帶的顏色,但是每個亮度帶內的顏色變化是小的。多顏色貼片通常在2D直方圖內的大量庫上展開。多顏色調色板包括前兩個測試失敗的貼片。
圖11的步驟1120分析2D直方圖中的庫分布和顏色特性,并且從而對貼片進行分類。將貼片分為3組平坦的、兩級的和多顏色的。圖47更詳細地示出了步驟1120的處理。在步驟4710中,執(zhí)行平坦貼片測試。如果結果為是,在步驟4712中將貼片分類為是平坦的。否則,在步驟4720執(zhí)行第二個測試,以便確定貼片是否是兩級的。如果兩級測試的結果為是,在步驟4722將貼片分類為是兩級的。否則,在步驟4724將貼片分類為多顏色的。下面更詳細地描述步驟4710和4720。
關于步驟4710,第一LumRange定義為庫不為全空的最高和最低亮度帶間的范圍。對于通過平坦測試的貼片,貼片必須滿足下面所有3個條件1 非空庫的數目<=32 LumRange<=2;和3 FlatColourVariance<FLAT_COLOUR_VARIANCE其中FlatColourVariance定義為最大庫和其余庫之間的像素計數加權曼哈頓距離的總和。閾值參數可以是FLAT_COLOUR_VARIANCE=15。
關于對于通過兩級測試的貼片的步驟4720,貼片必須滿足下面所有3個條件1 非空庫的數目<=BILEVEL_MAX_BIN_CNT2 LumRange>2;和3 MaxColourVariance<BILEVEL_COLOUR_VARIANCEMaxColourVariance定義為max(ColourVariance[band]),其中ColourVariance[band]是帶內的最大庫和其余庫之間的像素計數加權的曼哈頓距離的總和。參數值可以是BILEVEL_MAX_BIN_CNT=16,和BILEVEL_COLOUR_VARIANCE=40。
2.2.1.3形成第二調色板圖41更詳細地示出了圖11的步驟1130的處理。步驟4110測試貼片是否是平坦的。如果貼片是,則步驟4120形成平坦顏色。這可以通過計算非空庫的加權平均實現。如果步驟4110中的測試結果為否,處理在步驟4130處繼續(xù),測試貼片是否被分類為是兩級的。如果測試結果為是,處理移動到步驟4140。在步驟4010,產生兩種顏色的調色板。否則,如果步驟4130返回假,處理在步驟4150處繼續(xù)。在步驟4150中,產生多顏色調色板。
2.2.1.3.1產生兩顏色調色板圖42提供了步驟4140中產生用于兩級貼片的兩種顏色調色板的進一步的細節(jié)。目的是形成對比顏色表示該圖像。由于打印中的半色調和配準(registration)誤差,表示原始的兩種對比顏色的顏色一般會受到污染。結果,前景和背景區(qū)域的平均顏色不是原始圖像的良好表示。排除過渡區(qū)域內的顏色使得圖像看上去更銳化了。
在步驟4210中,選擇最暗的和最亮的顏色,以便形成主顏色的初始調色板。在步驟4220中,使用6個被最多填充的庫產生庫列表。根據像素計數從該調色板中找到頂部的6個庫。步驟4230到步驟4270順序地處理列表中的顏色。在步驟4230中,從列表中獲得下一個庫顏色C。決定步驟4240測試顏色C是否已經包括在初始調色板內,或該顏色是否離兩個極端太遠。如果結果為是,忽略該顏色,并且處理返回步驟4230,取得下一個庫顏色進行處理。如果步驟4240的結果為否,處理在步驟4250處繼續(xù)。決定步驟4250測試該顏色是否適合于合并到初始調色板。適合于合并的顏色是位于初始調色板的任何顏色附近的顏色。如果步驟4250的測試結果為是,基于與加權的像素計數的較近的曼哈頓顏色距離,將該顏色合并到初始調色板顏色中的一個。將C的像素計數增加到要合并到的調色板顏色的像素計數。處理在步驟4270處繼續(xù)。如果步驟4250的結果為否,忽略該顏色,并且處理進到步驟4270,以便檢查是否有任何未處理的顏色。如果步驟4270的測試返回是,處理返回步驟4230。否則,處理終止。
2.2.1.3.2產生多顏色調色板圖43展開了圖41的步驟4150,其產生用于多顏色貼片的多顏色調色板。在步驟4310中,選擇最暗和最亮的顏色形成作為初始主顏色的初始調色板。在步驟4320中,如果下面兩個條件為真,則將第三個顏色添加到調色板1 LumRange>THIRD_COLOUR_MIN_LD;和2 LargestVar>THIRD_COLOUR_MIN_VARLargestVar定義為距離最暗和最亮亮度帶之間的庫中的最亮和最暗顏色的均值顏色的最大曼哈頓顏色距離。如果上面的測試為真,將產生LargestVar的顏色添加為第三個初始調色板顏色。閾值可以是THIRD_COLOUR_MIN_LD=4和THIRD_COLOUR_MIN_VAR=40。
在步驟4330中,將頂部(即,被最多填充的)6個庫添加到一個庫列表。步驟4340到4395順序地處理該列表的顏色。在步驟4340中,從該列表獲得下一個庫顏色C。步驟4350測試該顏色是否已經包含在初始調色板內。如果結果為是,忽略該顏色,并且處理返回步驟4340。否則,步驟4360嘗試將該顏色合并到調色板顏色中的一個。將該顏色合并到調色板中具有最近的曼哈頓顏色距離的顏色,如果該距離在BIN_MERGE_THRESHOLD1內(其中閾值可以是BIN_MERGE_THRESHOLD1=10)的話。如果步驟4360的嘗試成功了,處理在步驟4395處繼續(xù)檢查是否有更多的顏色要處理。否則,處理進入步驟4370。
步驟4370測試是否可將另一種顏色添加到調色板。如果步驟4370返回真(是),處理在步驟4380處繼續(xù)。如果下面的偽碼內的測試為真,在步驟4380中添加額外顏色。
Number_palette_colours<MAX_NUM_PALETTE_COLOURS&&
(minDist>BIN_MERGE_THRESHOLD2‖(minDist>BIN_MERGE_THRESHOLD3&&
(minDist*pCnt)>BIN_NEW_MIN&&
pixel_count_closest_palette_colour>BFN_DONT_TOUCH_CNT))MinDist是C到調色板顏色的最近曼哈頓顏色距離。PCnt是C的像素計數。Pixel_count_closest_palette_colour是產生minDist的調色板顏色的像素計數。閾值可以是MAX_NUM_PALETTE_COLOURS=4,BIN_MERGE_THRESHOLD2=70,BIN_MERGE_THRESHOLD3=40,BIN_NEW_MIN=4000和BIN_DONT_TOUCH_CNT=150。
從步驟4380,處理在步驟4395處繼續(xù)。
如果步驟4370中的測試為假,處理在步驟4390處繼續(xù)。在步驟4390中,將庫顏色C與具有最近的曼哈頓顏色距離的調色板顏色合并。以加權的像素計數合并顏色,并且將C的像素計數增加到要合并到的調色板顏色的像素計數。處理在步驟4395處繼續(xù)。如果在步驟4395沒有更多的顏色要處理,處理終止。
2.2.1.4將像素與第二調色板相關聯(lián)一旦發(fā)現了主顏色,將貼片內的像素量化為主顏色之一。與用于連通組分分析的主顏色列表一起產生量化映射。針對每個組的量化處理如下1)平坦的-不量化;2)兩級的-將調色板重新映射到兩個主顏色之一,或尋找一個閾值將原始像素二值化;和3)多顏色的-將調色板重新映射到主顏色之一。
二值化產生更銳化的輪廓,但是由于二值化需要找到合適的閾值,所以要花費較長時間。尋找閾值的步驟是1)在亮度通道上執(zhí)行一階導數,2)識別邊緣像素,和3)使用來自邊緣像素的平均亮度值作為閾值。邊緣像素是這樣的像素,其中它們周圍的3×3一階導數輸出全部在預定閾值以上。
圖44提供了圖11的步驟1140的進一步的細節(jié)。步驟4410測試貼片是否被分類為是兩級的。如果測試結果為是,處理在步驟4420處繼續(xù)。在步驟4430中,映射多顏色的貼片。否則,處理在步驟4430處繼續(xù)。在步驟4420映射兩級貼片。
2.2.1.4.1映射兩級貼片圖45提供了步驟4420的進一步的細節(jié)。整個處理4420以量化誤差檢查將所有非空庫映射到第二調色板內的兩種顏色。步驟4510到步驟4570對每個非空庫執(zhí)行量化和誤差檢查。如果沒發(fā)現大的量化誤差,處理在庫量化之后,將所有像素重新映射到第二調色板。如果發(fā)現了大的量化誤差,將貼片重新分類為是多顏色的,并且使其進行多顏色貼片映射。下面解釋映射兩級貼片的細節(jié)。
步驟4510確定是否需要輪廓增強,并且為進行輪廓增強的庫選擇用于量化的優(yōu)選的極端顏色。如果兩個調色板顏色的一個像素計數超出了另一個4倍,則需要輪廓增強。設第二調色板內的兩個顏色具有第一顏色C1和像素計數P1以及第二顏色C2和像素計數P2。如果(P1/P2)或(P2/P1)大于5,則需要輪廓增強,并且將OUTLINE_ENHANCE設置為真。優(yōu)選的極端顏色可以是具有較小像素計數的顏色。
步驟4515得到具有像素計數pCnt的下一個非空庫。步驟4520計算兩個顏色的量化誤差。計算到兩個調色板顏色的曼哈頓距離(D1和D2),并且將較小的一個定義為minDist。MinDist是量化誤差。然后處理在決定步驟4525繼續(xù),檢查量化誤差是否太大。下面的偽碼定義量化誤差太大時的條件(minDist*pCnt)>BIN_NEW_BILEVEL_THRESHOLD‖(minDist>BIN_NEW_BILEVEL_COLOUR_DIFF&&
pCnt>BIN_MERGE_BILEVEL_CNT_MIN)其中閾值可以是BIN_NEW_BILEVEL_THRESGOLD=6000,BIN_NEW_BILEVEL_COLOUR_DIFF=50和BIN_MERGE_BILEVEL_CNT_MIN=100。
如果步驟4525處的測試為真,處理在步驟4540處繼續(xù)。在步驟4540中,將當前庫添加到額外主顏色列表。然后處理在步驟4570處繼續(xù)。如果步驟4525中的測試為假,處理在決定步驟4530處繼續(xù),檢查額外主顏色列表是否為空。如果該列表不空(否),處理轉換到步驟4570,查看是否有更多的非空庫要處理。否則,如果步驟4530的結果為是,處理在步驟4545處繼續(xù),確定是否需要輪廓增強,以及兩個距離是否接近。以下面的偽碼給出測試條件
OUTLINE_ENHANCE&&
abs(D1-D2)<BILEVEL_THRESHOLD_MARGIN其中閾值可以是BILEVEL_THRESHOLD_MARGIN=16。
如果步驟4545中的測試為真,處理在步驟4550處繼續(xù)。在步驟4550中,將庫量化為優(yōu)選的顏色。處理在步驟4570處繼續(xù)。否則,處理在步驟4555處繼續(xù),基于D1和D2將庫量化為較接近的顏色。然后處理在步驟4570處繼續(xù),檢查是否有更多的非空庫要處理。如果有更多的非空庫,處理返回步驟4515。如果沒有更多的非空庫,處理在步驟4560處繼續(xù),檢查額外主顏色列表是否為空。其確定在庫量化處理過程中是否有大的量化誤差。如果該列表為空,處理在步驟4575處繼續(xù),并且根據步驟4550或4555中的庫映射(視合適情況而定),將所有像素重新映射到兩個調色板顏色之一。然后,處理終止。如果在步驟4560中列表非空,處理在步驟4565處繼續(xù),將一個額外的顏色添加到調色板。將額外主顏色列表內的具有最高像素計數的庫選擇為第三調色板顏色。在步驟4430中,將貼片重新映射為多顏色貼片。然后處理終止。
2.2.1.4.2映射多級貼片在圖46上展開圖44的步驟4430。步驟4610得到下一個非空庫。步驟4620將庫量化為調色板顏色之一。這可以基于最近的曼哈頓顏色距離進行。步驟4630檢查是否有更多的非空庫要處理。如果步驟4630中的測試為真,處理在步驟4610處繼續(xù)。如果步驟4630中的測試返回否,處理在步驟4640處繼續(xù)。在步驟4640中,根據步驟4620中的庫映射,將所有像素重新映射到調色板顏色之一。然后,處理終止。
2.2.2顏色CC分析和斑點統(tǒng)計量圖10的本處理1020采用來自以前步驟的量化貼片,并且形成斑點。每個斑點具有下面的統(tǒng)計量邊界框、大小、均值顏色、位掩蔽、斑點邊界長度。以快速和有效的方式在單個光柵輪中形成斑點。以光柵順序,將屬于相同顏色類的量化貼片中的相鄰像素分為一組,以便形成“串”。在每串(段)的結尾,將串與上一行上的接觸段(在8路連通性方面)比較,以便進行生長或合并。如果將被給予斑點標簽的串觸及相同類的斑點,則發(fā)生生長。相反,當相同類的兩個斑點相接觸時發(fā)生合并。如果不可能出現生長,則形成新的斑點。在每串的結尾處更新斑點統(tǒng)計量。
圖36是使用示例的6×6的輸入貼片3610的顏色斑點劃分處理3600的圖示。對具有若干顏色的輸入貼片3610應用顏色量化,以便產生量化貼片3620。量化貼片3620包含相應于主顏色類的類標簽。在該情況下,貼片中有兩個主顏色,因此給出類標簽0和1。在一行中,通過將相同類的相鄰標簽分組在一起以便形成串,開始連通組分分析。例如,在圖36中,第一行的前4個“0”形成一個串,并且接下來的兩個“1”形成另一個串。通過將來自量化貼片3620中的連續(xù)行的相同類的串結合在一起形成斑點。貼片3630示出了貼片內的串。當將當前段與上行中的接觸段進行比較時,有三種可能的行為1通過將當前段添加到已有斑點,生長該斑點;2通過將兩個斑點的統(tǒng)計量統(tǒng)一為一個合并兩個斑點;3通過使用當前段初始化斑點形成新斑點。
貼片3640示出了得到的斑點,斑點0和斑點1,其中斑點0具有外部邊界框,并且斑點1具有內部邊界框。在形成串和斑點的同時累積斑點的統(tǒng)計量。所以,在該處理階段的結尾,每個斑點具有針對斑點0和斑點1的圖36中所示的所有統(tǒng)計量。位掩蔽3650和3660是代表性的。實際上不在該階段形成示例性的位掩蔽3650和3660。將量化的顏色用作斑點的均值顏色??商鎿Q地,可以通過累積斑點中的實際像素值而不是量化的顏色確定斑點的均值顏色。這給出更準確的均值顏色。再次地,斑點統(tǒng)計量可以包括大小、均值顏色、邊界長度、邊界框和位掩蔽。
圖9更詳細地示出了圖10的步驟1020,步驟1020采用循環(huán)結構從量化貼片中形成斑點,從上到下地一次處理一個貼片行。在步驟910中,獲得當前貼片行以便進行處理。在步驟920中,形成相同量化標簽的像素的連續(xù)的段。這可以通過記錄其開始和結束位置進行。該段是當前段Sc。開始位置是前一個段的結束位置右邊的像素。在新貼片行的情況下,開始位置是該行的第一個像素。結束位置是在從左到右在當前貼片行上一個像素接一個像素地檢查量化標簽的過程中,在量化標簽發(fā)生變化之前的最后的像素。在當前貼片行在檢測到變化之前結束的情況下,結束位置是該行的最后的像素。出于稍后的重新估計斑點的顏色的目的,在從其開始到結束位置的檢查過程中,累積原始的全色貼片內的段內的每個像素的YUV值。可替換地,可以使用該段的量化顏色,而不進行顏色重新估計。
在步驟930中,使用該段形成新斑點或生長已有斑點。圖12提供了該步驟的進一步的細節(jié)。在決定步驟940中,進行檢查以便確定該行中是否剩余有未處理的像素。如果決定步驟940返回真(是),處理返回步驟920。直到處理了當前貼片行內的所有像素,這才發(fā)生。如果步驟940返回假(否),處理在步驟950處繼續(xù)。在決定步驟950中,進行檢查以便確定是否剩余未處理的行。如果步驟950返回真(是),處理在步驟910處繼續(xù)。直到沒有更多的未處理的貼片行,這才發(fā)生。如果步驟950返回假(否),處理終止;量化貼片內的每個像素已經分配到斑點。
2.2.2.1形成斑點圖12更詳細地示出了步驟930。圖12的處理采用圖9的步驟920中識別出的當前段Sc作為輸入。在步驟1205中,將變量k初始化為1。該值引用與當前段Sc連接的當前貼片行之上的貼片行的第k個段Sk。優(yōu)選地,連接是8路連接。在步驟1210中,執(zhí)行Sk和Sc間的比較。在決定步驟1215中,進行檢查以便確定Sc和Sk是否是相同的類。如果兩個段Sk和Sc具有相同的量化標簽,處理從步驟1215移動到步驟1220。否則,處理在決定方框1235處繼續(xù)。在決定步驟1220中,進行檢查以便確定Sk是否是相同類的第一個相連段。因此,如果Sk是具有與Sc相同的量化標簽的第一個相連段,處理在步驟1225處繼續(xù)。否則,處理在步驟1230處繼續(xù)。在步驟1225中,生長當前斑點。因此,基于第k個段所屬的斑點生長當前段。生長斑點涉及更新斑點的大小、邊界信息、邊界框和累積的YUV值。然后,處理在步驟1235處繼續(xù)。相反,如果決定步驟1220返回假,這指示著已經給當前段分配了斑點標簽,即,斑點[i],并且與另一個斑點,即,斑點[j]接觸,并且處理在步驟1230處繼續(xù)。如果這兩個斑點具有不同的斑點標簽,即,i≠j,則在步驟1230將這兩個斑點合并在一起。圖15中給出了步驟1230中的斑點合并處理。然后,處理在步驟1235處繼續(xù)。
從步驟1215、1225和1230,處理繼續(xù)到決定框1235。在決定框1235中,進行檢查以便確定是否已經處理了最后的相連段。如果第k個段不是與當前段相連的最后的段,處理在步驟1240處繼續(xù),并且將k增加1。然后,處理返回步驟1210處理下一個相連的段。否則,如果決定步驟1235返回真,處理移動到決定框1245。在決定框1245中,進行檢查以便確定是否沒有相連的段是相同的類(即,與當前段相同的量化標簽)。如果步驟1245返回真(是),處理在步驟1250處繼續(xù)。在步驟1250中,使用當前段形成新斑點。形成新斑點涉及給當前段分配新的斑點標簽,將斑點數目增加1,并且使用當前段的信息初始化斑點統(tǒng)計量。在步驟1250后處理終止。類似地,如果決定框1245返回假(否),處理終止。
2.2.2.2斑點合并的例子圖15示出了斑點合并1500的例子。段1510和1520都屬于斑點[i],其與屬于斑點[j]的段1530相連。示出了段1520的當前開始和當前結尾,同樣示出了段1530的上開始和上結尾。圖15中還示出了段1520和1530的重疊。斑點合并處理1500涉及結合兩個斑點的統(tǒng)計量,將一個斑點標簽映射到另一個,并且將斑點數目減少1。例如,在圖15中,將標簽j映射到標簽i。使用下面的偽碼指令組合斑點統(tǒng)計量
83 blob[i].boundingBox=combine(blob[i].botmdingBox,blob[j].boundingBox)83 blob[i].size+=blob[j].size83 blob[i].tileBorderPixelCount+=blob[j].tileBorderPixelCount83 blob[i].horizontalEdges+=blob[j].horizontalEdges-2 overlap83 blob[i].vertiealEdges+=blob[j].verticalEdges83 blob[i].YUV+=blob[j].YUV2.2.3貼片內合并一旦通過連通組分分析形成了貼片的斑點,下一個階段是使用顏色、大小和斑點邊界長度統(tǒng)計量將語義相關的斑點合并在一起。從這個階段起,斑點僅可以被合并而不是分段。因此,貼片從被過度分段變?yōu)楦咏_的分段等級。圖37和38中示出了貼片內合并的一個例子,其中使用斑點統(tǒng)計量評估是否合并斑點的給定部分。在例子中,有4個量化顏色,并且連通組分分析返回10個斑點。圖37示出了在左邊進行合并3710之前的斑點。這些斑點中的許多是由于殘留的半色調圖案和兩個不同顏色區(qū)域間的顏色“滲色”的影響。在應用貼片內合并之后,具有相對長的邊界長度的小斑點被合并到具有較小顏色特征的較大的斑點內。在例子3700中示出了合并3720之后的斑點。圖38包含原始貼片3810與合并的斑點3820的比較3800。
量化和斑點形成處理通常創(chuàng)建許多小的不需要的或不正確的斑點。它們是由輸入圖像內的噪聲斑點、剩余半色調而導致的小斑點,或由較大的連通組分的邊緣處的滲色影響而導致的細的、大高寬比的斑點的形式。通過將這些斑點與不正確的斑點觸及的顏色接近的斑點相合并,可以去除不正確的斑點。
通過限制由分段和連通組分處理產生的貼片內的斑點的數目,可以改進速度和存儲器使用率。如果貼片內有太多斑點,可以通過合并一些類似著色的斑點減小其數目,即使這些斑點不相接觸。這產生了具有獨立的不連通部分,但是被作為單個元素對待的斑點。由于這僅發(fā)生在被在稍后的步驟中丟棄的具有大量小的噪聲元素的貼片內,所以質量不會受到影響。
圖19詳細地示出了圖10的步驟1030。在步驟1905中,獲得當前貼片內的斑點。在步驟1910中,檢查斑點的周長與面積的比,以便確定其是否是高的。如果發(fā)現該參數高于閾值等級,處理在步驟1915處繼續(xù)。否則,如果步驟1910返回假,處理在步驟1930處繼續(xù)。在步驟1915中,檢查斑點內觸及貼片邊緣的像素的比。如果該比值在閾值之上,處理在步驟1920處繼續(xù)。在步驟1920中,將斑點標記為“強制合并貼片間”。設置用于該斑點的強制合并標志,其使得該斑點在圖14的步驟1420中更可能與相鄰貼片內的連通組分合并。在步驟1920之后,處理在步驟1930處繼續(xù)。如果在步驟1915中斑點的貼片邊緣比低于閾值,處理在步驟1925處繼續(xù)。在步驟1925中,將斑點與具有最接近的顏色的相鄰斑點合并。找到觸及當前斑點的所有斑點以及它們的顏色與當前斑點的距離。然后將當前斑點與相鄰的顏色最接近的斑點合并。然后,處理在步驟1930處繼續(xù)。在決定步驟1930中,進行檢查以便確定貼片中是否有更多的斑點要處理。如果步驟1930返回真(是),處理返回步驟1905。否則,處理在步驟1935處繼續(xù)。
在決定步驟1935中,檢查貼片內的斑點的當前數目,以便確定是否太多。如果發(fā)現斑點數目高于預定限制,處理在步驟1940處繼續(xù)。否則,處理結束。在步驟1940中,將未觸及貼片邊緣的相同量化顏色類的斑點合并在一起。為每個量化顏色類進行該處理。不合并觸及貼片邊緣的斑點,因為這些斑點可以形成大得多的CC的一部分,并且合并它們可能對質量具有有害的影響。在步驟1945中,再次檢查貼片內的斑點的當前數目,以便確定貼片內是否仍然有太多斑點。如果現在發(fā)現該數目在預定限制之下(否),處理終止。否則,處理在步驟1950處繼續(xù)。在步驟1950中,合并觸及貼片邊緣的各個顏色的斑點。步驟1950執(zhí)行類似于步驟1940的處理,但是將觸及貼片邊緣的斑點考慮在內,以便將斑點數目減少到限制之下。然后,處理終止。
2.2.4貼片間合并圖13詳細地示出了步驟1040的貼片間合并處理。不以特定的順序為當前貼片的左和上邊界中的每一個重復該處理。下面的描述適合于沿著當前貼片的左或上邊界進行合并。例如,32×32的貼片具有與其相鄰貼片狀態(tài)的32像素的邊界,并且每個像素具有斑點標簽。相鄰貼片狀態(tài)也具有32像素的邊界,并且每個像素具有CC標簽。所以,對于沿著邊界的每個像素階躍,存在當前貼片內的斑點標簽,以及相鄰貼片狀態(tài)內的相應的CC標簽。通過獲得用于下一個貼片邊界像素的當前貼片內的斑點標簽和其相鄰貼片狀態(tài)內的CC標簽,在步驟1310中處理沿著公共邊界開始。
在決定框1320中執(zhí)行測試,以便隨著處理沿著邊界移動,檢測CC標簽、斑點標簽或最后的像素的改變。如果當前像素是最后的邊界像素,決定框1320返回是。如果步驟1320返回假(否),處理在步驟1380處繼續(xù)。否則,如果步驟1320返回真(是),處理在步驟1330處繼續(xù)。步驟1330檢查可用作合并候選的斑點數目和CC數目。在決定步驟1340中,進行檢查以便確定是否滿足候選計數條件。如果斑點和CC的合并候選計數滿足如圖17中所示的并且在下面描述的預定條件1700,決定框1340返回是。
如果圖13的決定步驟1340返回假(否),處理在步驟1370處繼續(xù)。否則,處理在步驟1350處繼續(xù)。步驟1350基于顏色距離度量識別合并候選中用于合并的最佳的斑點和CC對。設(Ycc,Ucc,Vcc)和(Yblob,Ublob,Vblob)是CC和斑點候選對的YUV顏色值,由下式給出顏色平方距離sdsd=Wy(Ycc-Yblob)2+Wu(Ucc-Ublob)2+Wv(Vcc-Vblob)2,其中Wy,Wy,Wy分別是Y,U和V通道的權重。權重Wy,Wy,Wy可以分別設置為0.6,0.2和0.2。最佳斑點和CC對是具有最小平方距離值的一個。
由步驟1360處理這個最佳斑點和CC對,步驟1360執(zhí)行各種合并操作,并且參考圖14更詳細地描述。在步驟1360之后,或從決定框1340的否之后,處理在步驟1370處繼續(xù),其中更新斑點和CC候選計數。圖48示出了對所有操作條件進行更新之前和之后的CC和斑點候選計數。如果發(fā)現已經改變了CC和斑點標簽兩者,將CC和斑點候選計數為在合并之前所有可能的計數組合設置為1(更新前的“x”表示“無關緊要的”)。如果僅發(fā)現改變了一個標簽,并且貼片邊界的任意一側上有兩個候選,根據合并兩個候選中的哪一個,計數可以設置為0或1。如果選擇第二個斑點進行合并(見圖49中的4920),則在合并已經發(fā)生之后,將兩個候選計數設置為0。然而,如果選擇第一個斑點或沒有選擇斑點進行合并,則將兩個計數設置為1。在需要候選計數更新的其余情況中,將已經改變的標簽的計數增加1,而未改變的標簽的計數設置為1。
在步驟1320或1370之后,處理在步驟1380處繼續(xù)。在決定框1380中,進行檢查以便確定當前像素是否是最后的邊界像素。如果步驟1380返回假(否),處理在步驟1310中移動到下一個像素位置。否則,處理終止。
2.2.4.1貼片間合并條件根據圖17,除CC和斑點標簽兩者同時改變(在該情況下,對于合并來說,每側上有一個候選就足夠了)時之外,當在一側上有兩個候選,并且在另一側上有一個時通常發(fā)生合并。這使得避免了將一側上的兩個相鄰候選合并到另一側上的相同候選。圖17示出了可以執(zhí)行貼片間合并操作的條件。如果當前CC和斑點計數是(1,1),則為了發(fā)生合并,兩個標簽必須同時改變。然而,如果當前CC和斑點計數是(1,2)或(2,1),則任何標簽的改變足以發(fā)生合并。情況(2,2)從不會出現。
2.2.4.2貼片間合并的例子圖49提供了在斑點和CC候選間進行合并的示例。存在3種情況i)在4910中,每側僅有一個候選;ii)4920具有一個CC和兩個斑點,和iii)4930具有兩個CC和一個斑點。在情況4920中,CC候選與兩個斑點候選相連。假設兩個斑點的顏色與CC接近,但是僅有一個可以與CC合并。如果按每次每側一個候選地從上到下的順序執(zhí)行合并,則頂部的斑點與CC合并,剩下底部的斑點不合并。當底部斑點對于合并可能是更好的候選時,這可能不能產生最理想的結果。因此,對于類似于4920和4930中的情況,一側上需要兩個候選。情況4910在每側上僅需要一個候選,因為對于4連通,沒有可替換的合并組合。
通過以貼片光柵順序的貼片間合并斑點,形成跨越多于一個貼片的顏色相連的組分。如圖39的例子3900中所示,這被以光柵順序執(zhí)行,其中貼片3910內的斑點與分別位于貼片3910左邊和上邊的兩個相鄰貼片3930和3920的任意一個內的斑點合并。
每個CC存儲在保持關于其邊界框、均值顏色、以像素衡量的尺寸和接觸的CC的信息的數據結構內。在貼片間合并處理中,給當前貼片內的每個斑點分配CC標簽,并且使用斑點統(tǒng)計量更新相應的CC數據結構。在當前貼片1630和沿著如圖16中所示的當前貼片1630的左和上邊界的兩個相鄰貼片1610,1620內的狀態(tài)1612、1622間執(zhí)行合并。當前貼片1630是一塊已經被處理以便形成斑點的像素數據,并且具有用于沿著公共邊界的像素的斑點標簽1634。相反,以前的貼片狀態(tài)1612、1614不包含像素數據,僅有斑點統(tǒng)計量和與這些斑點鏈接的連通組分信息。貼片狀態(tài)1612、1622是壓縮的數據結構,其包含關于沿著該貼片1610、1620中的邊界的斑點的信息,以及指向這些斑點所屬的CC1614、1624的指針。具體地,有兩種貼片狀態(tài)左貼片狀態(tài)1612和上貼片狀態(tài)1622;每一個具有用于分別與它們右邊和下邊的貼片合并的,沿著它們與當前貼片1630的公共邊界的每個像素的CC標簽信息1614、1624。以前的貼片中的斑點現在是連通組分的一部分。
2.2.4.3處理最佳斑點和CC對圖14更詳細地示出了圖13的步驟1360,其中采用在步驟1350識別出的最佳斑點和CC對作為輸入。處理在步驟1410中開始。在決定步驟1410中,進行檢查以便確定該斑點是否已經與另一個CC合并。如果在決定框1410中識別出的斑點已經被分配了CC標簽,處理在步驟1440處繼續(xù)。否則,處理移動到決定框1420。在決定框1420中,將在步驟1330中計算的識別出的斑點和CC對間的顏色距離與顏色合并閾值比較。該閾值可以是450。如果設置了強制合并標志,則閾值可以是900。如果顏色距離小于閾值,處理在步驟1430處繼續(xù)。否則,處理在步驟1460處繼續(xù)。在步驟1430中,將該斑點和識別出的CC合并在一起。這可以通過使用斑點的統(tǒng)計量更新CC的統(tǒng)計量,并且將CC的標簽分配給斑點進行。然后處理終止。在步驟1460中,為當前斑點形成新的CC。然后處理終止。
在決定框1440中,將識別出的CC和識別出的斑點所屬的CC間的顏色距離與用于合并的顏色閾值進行比較。如果兩個CC間的顏色距離在閾值之下,處理在步驟1450處繼續(xù)。在步驟1450中,將這些CC映射在一起。這可以通過將它們的統(tǒng)計量組合在一起,并且設置將CC鏈接在一起的“映射到”指針進行。然后處理終止。類似地,如果步驟1440返回假(否),處理終止。
2.2.4.4 CC映射結果圖18是根據圖14的步驟1450的CC映射處理的結果的圖示。該圖示出了作為合并CC1805、1810、1820、1830的結果,可以形成CC的鏈表1850。在該圖示中,CC(k)1830具有指向NULL 1840的映射到指針1832,其指示它從未被合并到另一個CC內,因此它稱為根CC。另外,通過在若干合并上累積各個CC統(tǒng)計量,確定根CC的統(tǒng)計量1834。例如,CC 1830的最終統(tǒng)計量是在將CC(h)1805,CC(i)1810,CC(j)1820和CC(k)1830被合并在一起之前,這些CC的組合統(tǒng)計量。合并這些統(tǒng)計量的次序不重要。在圖18中,CC(i)1810指向CC(j)1820,CC(h)1805和CC(j)1820指向CC(k)1830。
2.2.5后合并處理圖50是圖10的后合并處理步驟1050的流程圖。在步驟5010,為當前貼片中的在與圖14的步驟1460相同的處理中的每個未合并的斑點形成新CC。在步驟5020中,使用斑點標簽輸出用于存儲斑點的形狀和外觀的二值圖像。對于具有n個斑點的貼片,僅需要輸出n-1個二值圖像,因為第n個二值圖像被隱含地存儲為去掉n-1個區(qū)域后剩余的區(qū)域。因此,包含單個斑點的平坦貼片不需要存儲任何二值圖像。在可替換的實施例中,可以將二值圖像存儲在單個壓縮的數據結構諸如索引圖內,其中每個像素位置具有一個斑點索引,并且被使用log2(n)位表示。例如,如果每個貼片的最大斑點數目是16,使用4位的數字編碼每個像素位置處的斑點索引。在另一個可替換的實施例中,可以使用1位位圖存儲用于兩級貼片的二值圖像。在步驟5030中,更新當前貼片內的每個CC的接觸列表。這可以通過識別出該貼片內所有相鄰的CC進行。在步驟5040中,輸出貼片狀態(tài)。顏色分段處理將斑點和CC信息存儲在用于與下一個輸入貼片合并的壓縮的貼片狀態(tài)數據結構內。如上所述,有兩個貼片狀態(tài),其中左邊的貼片狀態(tài)具有沿著右貼片邊界的CC標簽信息,上部的貼片狀態(tài)具有沿著下貼片邊界的CC標簽信息。
2.3分段例子圖25(a)示出了一個簡單的例子,其示出了基于多于2個量化等級分段的優(yōu)點。背景2510是黑色的,并且其上放置了一個白色的三角形2520和灰色的單詞“text”的字母2530。如圖25(b)和(c)所示,該圖像的二值分段典型地導致文本2530與背景2510或三角形2520的合并。這些分段中的任何一個都不能用于文檔布局分析以便選擇文本區(qū)域-文本特征已經丟失了。
同時,存在允許簡化連通組分的布局分析的二值分段的某些特征??紤]具有連通外邊界和由4路連通形成的CC的頁的情況。在該情況下,除了頁的邊緣在,在邊界處接觸另一個CC的每個CC或是被該CC包含,或是包含該CC,并且一個CC僅可以由一個其他CC包含??梢援a生一個明確的包含分層結構,并且以樹結構表示。樹中的每個連續(xù)的層包含與前面相反極性的CC,并且每個分支由一組共享唯一父親的CC構成。由于該分層結構可用于選擇作為將被分組在一起的候選的CC的子集(共享唯一父親的那些),這種分層結構可用于對CC分組。由于一次需要考慮少數的CC,這在處理速度方面是有益的,并且在準確性方面也是有益的。來自頁的不同區(qū)域的CC可以在樹的不同分支上,并且不被分組在一起。另外,可以在樹的頂部開始CC的處理,并且可以為低于某種分類(例如,文本)的CC的樹分支終止,以便進一步改進處理時間。
如果分段不是二值的,一般地不能有幫助地產生明確的分層結構??紤]圖25(a)中的字母“e”。該字母的外邊界與黑色背景和白色三角形兩者接觸,從而背景或三角形可以被認為是該CC的父親。三角形的情況甚至更復雜,因為其外邊界接觸背景和所有字母。盡管有這種不確定性,可以實現在對對象進行分組時使用分層結構的益處。這是通過定義在邊界相接觸的兩個CC間的父親-孩子關系特性,而不需要針對每個孩子的唯一的父親完成的。例如,如果這些CC在邊界處接觸,并且一個CC(父親)的邊界框完全包圍第二個(孩子)的邊界框,則可以在兩個CC間定義父親-孩子關系。為圖25(a)中所示的例子使用這個定義,三角形和單詞“text”的所有字母都定義為背景CC的孩子。
3布局分析布局分析是該系統(tǒng)的一部分,其中識別頁的前景內容。中間(布局分析)模塊采用來自前端模塊的一列連通組分和“接觸列表”作為輸入。布局分析的輸出基本上是關于掃描圖像中哪些連通組分表示前景內容(即,文本、表、黑點(bullet point))的決定。布局分析基于顏色分段,而不是二值圖像。在可能發(fā)現的前景對象的分類方面這具有若干益處,但是不存在類似對于二值圖像來說存在的清楚的包含分層結構。出于效率,布局分析僅使用邊界框和少許其它一般的連通組分的統(tǒng)計量,以便作為其分組的基礎。布局分析不訪問原始像素數據或甚至是位級別的分段。
布局分析的主要步驟是基于接觸列表形成包含分層結構,基于CC的邊界框和顏色對它們分組,和測試這些組,以便確定CC是否類似文本的行那樣被很好地對齊了。使用接觸列表提供用于CC的分層結構,它是兩級包含分層結構的多顏色等同物。給定的CC可以被認為是它的接觸列表元素的一個子集的父親。具體地,給定CC可以是該給定CC所接觸的,并且其邊界框完全包含在父親CC的邊界框內的那些CC的父親。
圖4詳細地示出了圖1的步驟120,其采用壓縮CC信息、統(tǒng)計量和由步驟110產生的“接觸列表”信息作為輸入。接觸列表描述哪些CC彼此鄰接-即,哪些CC共享邊界。圖4的處理不訪問輸入圖像。該信息的一部分是輸入圖像中的所有CC的列表。
在步驟410中,基于CC的統(tǒng)計量對其分類,從而從CC列表形成顏色包含分層結構。顏色包含分層結構是這樣的結構,其中每個節(jié)點是一個CC。父親節(jié)點具有父親節(jié)點接觸到的、并且其邊界框完全包含在父親CC的邊界框內的CC作為其孩子。孩子節(jié)點可以有多于一個父親節(jié)點。分析可以僅基于邊界框大小和形狀。具有寬度和高度均小于1/100英寸(例如300dpi分辨率的3個像素)的CC被認為是噪聲,并且被去除。具有寬度或高度在1英寸以上,或寬度和高度均在8/15英寸以上的連通組分被分類為圖像。任何其它的東西被分類為潛在的文本??商鎿Q的實施例可以包括涉及其它文檔布局特征的分類(諸如表、連通組分中的像素數目),并且可以使用其它值。
在步驟420中,將潛在文本CC分組在一起,表示文本區(qū)域。CC通常被與附近的CC分組在一起,并且有效的分組算法通過在確定分組之前尋找相鄰CC利用這個事實。前端中使用的高分辨率顏色分段方法可以找到在典型的掃描文檔上進行分組時考慮的數千個同胞(sibling)。在這些情況下,使用簡單的對式比較尋找相鄰CC,一種O(N2)的方法,可能是慢的,并且必須使用確定鄰居的更復雜的方法??梢栽陬伾謱咏Y構的節(jié)點上執(zhí)行三角測量。如果頁上的CC的邊界框的中心在平面上定義節(jié)點,有效的三角測量方法可用于此目的,諸如Delaunay三角測量。這些方法通常是O(NlogN)個處理。
圖53示出了平面內的一組節(jié)點的Delaunay三角測量(由虛線指出)以及Voronoi圖(由實線指出)的示例5300。Voronoi圖是頁到區(qū)域的一種分段,所述區(qū)域到給定的點比到其它點更近。Delaunay三角測量是兩重Voronoi圖,該圖可以通過將共享Voronoi圖中的邊界的點連接在一起產生。在這個三角測量中,平面內隨機放置的點中的平面內的典型的點具有大約5個連接到它的點??梢詫⑦@些點考慮為分組階段中好的鄰居候選。
三角測量的輸出使其適合于作為形成CC分組的方法。基于在Delaunay三角測量內相鄰的那些CC的邊界框的對式比較,將這些CC分組在一起。然后在這種初始分組之后在相鄰CC對上進行后續(xù)輪,以便將這些組結合在一起,或將未分組的CC放置在已有組內。處理還可以在單個輪中通過該數據尋找不同類型的分組(文本、表等)。文本CC的組一般有如下特征類似的顏色;邊界框的類似大??;沿著水平或垂直軸粗略對齊(取決于文本對齊);和相對于CC的大小沿著對齊軸靠近在一起。
在步驟430中,檢查或驗證CC組,以便確定哪些CC組是文本字符。由處理器存儲關于組內容和在分組階段產生的合并的信息??梢詫㈥P于各個單獨分組的信息存儲在一個數據結構內,該數據結構包括顏色、邊界框和組的內容。在分組階段中當組的內容改變時,更新這些結構。在可替換的實施例中,將分組標記包括在CC數據結構內,并且可以從CC數據重構數據,諸如組顏色和邊界框。在步驟430中,對文本字符CC進行對齊測試作為額外的檢查,以便確保CC是文本。
形成的組一般包括全部文本,但是可能還包括不希望被分類為文本的圖像部分。為了減輕這個問題,檢查這些組,以便查看組中的連通組分是否類似于文本以整齊的行(或列)排列,或類似于噪聲或圖像的類似著色的區(qū)域往往表現出的那樣隨機排列。
這主要可以通過形成邊界框的邊的4個直方圖,每側(即,左、上、右或下邊)一個來完成。它們中的一個應當是滿庫,文本的基線在那里,并且其它位置為空。為了對其進行檢查,可以找到這些直方圖庫的平方和,并且與預期值比較。如果發(fā)現4個直方圖庫的任意一個比隨機布置的邊界框所預期的高得多,可認為該組是文本。使用所有4個邊界框的邊,從而允許以側面或從上向下方式掃描的頁或以列而非行進行排列的文本。
3.1對CC分組圖20詳細地示出圖4的步驟420,其對由步驟110分段的一組CC分組。通過獲得根CC,處理在步驟2010處開始。根CC是在顏色分段階段未被合并到其它CC內的一個。在步驟2020中,找到根CC的孩子CC。形成該根CC的孩子CC列表。孩子可以定義為其邊界框完全包含在當前根CC的邊界框內,并且在邊界接觸該邊界框的CC。參考圖22更詳細地描述步驟2020。
從步驟2020,處理移動到步驟2030。在步驟2030中,對當前CC的孩子進行鄰居分析。對于每個孩子,找到在某個定義的路徑上接近的一組相鄰的CC。這可以通過例如找到每個孩子CC的邊界框的中心的Delaunay三角測量實現。三角測量中的邊表示相鄰CC間的連通??商鎿Q的方法可以使用邊界框數據和該CC列表的顏色信息的不同元素定義接近。在步驟2040中,使用鄰居數據執(zhí)行初始分組。該處理步驟2040形成相同孩子列表內的類似屬性(例如,幾何形狀和顏色)的對象組,以便確定文檔布局的特征。圖23更詳細地描述步驟2040。
在決定步驟2050中,進行檢查以便確定是否剩余有更多的根CC要處理。如果有更多的根CC,處理返回步驟2010,并且獲得下一個根CC,并且隨后進行處理。否則,分組階段(420)終止。
3.1.1尋找父親CC的孩子圖22示出了尋找孩子CC和形成給定父親CC的孩子列表的步驟2020。在步驟2210中,從父親CC的接觸CC列表中獲得接觸CC。在步驟2220中,找到根CC。這可以使用與該接觸CC相關聯(lián)的來自顏色分段階段的任意合并信息完成。在決定步驟2230中,檢查來自圖4的步驟410的CC分類,以便確定CC是否滿足類測試(即,將該CC存儲在孩子列表內是否適合)??梢源鎯Τ嗽肼暣笮C之外的所有CC,但是可替換的實施例可以存儲類的其它組合,例如,僅存儲潛在的文本。如果接觸CC的類是適合的,處理在步驟2240處繼續(xù)。否則,處理在步驟2260處繼續(xù)。在決定步驟2240中,檢測CC與父親CC的包含性。包含測試涉及檢查該CC的邊界框是否完全被父親CC的邊界框覆蓋,但是可替換的方法也是可行的。如果滿足包含測試,處理在步驟2260處繼續(xù)。在步驟2250中可以將該CC包括在孩子列表內,然后處理繼續(xù)到步驟2260。在孩子列表中任何CC僅應出現一次,從而步驟2250包括檢查該CC未包括在列表內??梢允褂蒙⒘斜磉@些檢查。然后處理在決定步驟2260處繼續(xù)。步驟2260測試父親的接觸列表中是否有任意更多的元素。如果是的,處理在步驟2210處繼續(xù)。否則,完成了當前CC的孩子列表,并且處理終止。
3.1.2初始分組圖23示出了使用來自圖20的步驟2030的鄰居數據執(zhí)行的初始分組的圖20的步驟2040。該方法可以設計為僅分組文本,但是在可替換的實施例中,該方法還可以對其它文檔對象(諸如表)分類或分組。初始分組可以是兩輪處理,其中第一輪將CC結合到組內,并且第二輪將組結合在一起成為更大的組。在步驟2305中,將計數器PASS設置為1。在步驟2310中,獲得孩子。在步驟2320中,獲得孩子的鄰居。在步驟2330中,進行檢查以便確定孩子和鄰居是否滿足分組測試。使用一系列測試對這些對象進行分組測試。測試可以基于初始分類、幾何形狀和顏色,并且可以在第一和第二輪中不同。下面描述的圖26提供了對文檔的一個區(qū)域的提取,以該文檔解釋步驟2320的分組測試。
參考圖23,如果滿足分組測試,在步驟2340將孩子和鄰居CC分組在一起。然后,處理在步驟2350處繼續(xù)。否則,如果步驟2330返回假,處理在步驟2350處繼續(xù)。如果兩個CC被分組在一起,將每一個標記為屬于相同組。CC被標記的組取決于這兩個CC的在先分組。如果還未對任何一個分組,則形成包含兩個CC的新分組。如果僅僅已經對兩個中的一個進行了分組,將另一個CC包括在該組內。如果已經對兩個進行了分組,并且組是相同的,不采取行動。最后,如果兩個已經被分組,并且組不同,將兩個組合并為單個組,并且將另一個組標記為空。
在步驟2350,進行檢查以便確定是否有當前CC的更多的鄰居。如果存在更多鄰居,處理在步驟2320處繼續(xù)。否則,處理在步驟2360處繼續(xù)。在步驟2360中,處理檢查父親CC更多的孩子。如果存在更多的孩子,處理在步驟2310處繼續(xù)。否則,處理在步驟2370處繼續(xù)。在步驟2370中,進行測試以便確定是否完成了兩輪(PASS>1?)。如果是這種情況,處理終止。如果僅完成了第一輪,處理在步驟2380處繼續(xù),并且遞增計數器PASS。處理在步驟2390處繼續(xù)。在步驟2390中,處理返回孩子列表的開始。然后處理返回步驟2310,并且開始第二輪。
在可替換的實施例中,處理2040在三角測量數據的邊而不是孩子CC和鄰居對中循環(huán)。由于每個鄰居對僅被考慮一次,這稍微更有效。
3.1.2.1對兩個CC的分組測試為了示出對兩個相鄰CC的優(yōu)選分組測試,圖26示出了從剛好包含兩個對象-字母“g”和“h”的文檔區(qū)域中的簡單提取。虛線表示每個字母的邊界框的坐標。第i個CC的左和右x坐標以及上和下y坐標分別位于xi1,xir,yit,yib。下標1和2分別指示第一個和第二個CC(即,字母“g”和“h”)。本實施例的處理還使用YUV空間內的每個CC的顏色[yi,ui,Vi]和邊界框的寬度wi和高度hi。
將兩個CC的水平重疊距離定義為由兩個CC覆蓋的水平部分的長度,或如果CC不重疊則為0。類似地定義垂直重疊距離dyov,并且如圖26中所示。在圖26中水平重疊是0,并且從而未標注。重疊距離可以表示如下dxov=max(0,min(x1r,x2r)-max(x1l,x2l)),]]>(1)dyov=max(0,min(y1b,y2b)-max(y1t,y2t)).]]>兩個CC的水平內部距離定義為一個CC的左邊和另一個的右邊間的最短距離,或如果水平重疊距離不為0則其為0。使用CC的上和下邊以相同的方式定義垂直內部距離。圖26中示出了水平距離dxin,而對于這個例子,垂直內部距離為0,并且未被表示。這些內部距離可以表示如下dxin=max(x2l-x1r,x1l-x2r,0)]]>(2)dyin=max(y2t-y1b,y1t-y2b,0)]]>在第一輪中,如果兩個相鄰CC滿足基于顏色、大小和對齊的3個條件的要求,這些CC被作為文本分組在一起。如果(yi-yj)2+(ui-uj)2+(vi-vj)2<Tc,---(3)]]>則滿足顏色條件,其中閾值參數可以是Tc=500。
如果max(wminwmax,hminhmax)>TR,---(4)]]>則滿足大小測試,其中wmin是兩個CC的最小寬度,wmax是最大寬度,hmin是最小高度,并且hmax是最大高度。閾值參數可以是TR=0.55。
如果滿足下面條件中的任意一個,則滿足對齊條件[(dxov>0)and(dyin/max(wmin,hmin)<Ts)],或[(dyov>0)and(dxin/max(wmin,hmin)<Ts)],(5)閾值參數可以是Ts=0.65。
第二輪使用基于組而不是單個CC的參數??梢允褂妹拷M元素的均值顏色[Yi,Ui,Vi]、寬度Wi和高度Hi。對于未分組的CC的情況,將這些值設置為單獨CC的顏色、寬度和高度參數。測試還使用被考慮的CC的中心間的距離D,其定義如下D=(x1l+x1r2-x2l+x2r2)2+(y1t+y1b2-y2t+y2b2)2.---(6)]]>如同對于第一輪,如果滿足一系列條件則將組合并。這些條件涉及顏色類似性Tc,大小TR和間隔To,并且由下式描述(Y1-Y2)2+(U1-U2)2+(V1-V2)2<TCg,]]>max(Wmin/Wmax,Hmin/Hmax)>TR,(7)min(Wmin/Wmax,Hmin/Hmax)>TR2,D/max(Wmin,Hmin)<TD,其中,參數值可以是如果任意組包含3個或更少元素,TCg=500,TR=0.55,TR2=0.3,和TD=1,以及否則TCg=100,TR=0.55,TR2=0.3,和TD=2。在第二分組階段中不使用對齊測試。
閾值可以取決于被進行分組測試的CC的特征,例如,每個CC的像素計數。
3.2檢查組圖21詳細地示出了用于檢查組的圖4的步驟430。該處理確定每個組是否由文本構成。主要基于是否發(fā)現組內的對象在行或列上對齊進行該決定。假設組是文本,對其進行文本類屬性測試,并且如果組未通過這些測試,則將其否決。
在步驟2110中,獲得在步驟420中形成的下一個組。在步驟2120中,估計組內的文本字符的大小。估計的大小基于單個字符的長度的統(tǒng)計量。這些長度可以定義為對象的邊界框的寬度和高度的最大值。該測量對傾斜和頁上文本的對齊相當不靈敏,并且對于給定大小的典型字體內的字符集足夠統(tǒng)一。在可替換的實施例中,可以使用邊界框面積、像素計數和/或筆劃寬度作為長度的測量值??梢孕纬勺址L度的直方圖,并且估計的大小可以基于與具有多于庫內元素閾值數目的直方圖庫相關聯(lián)的最大長度。使用的閾值最少為3個對象,并且至少為組內對象數目的15%。如果不存在這樣的庫,不返回估計。
在決定步驟2125中,進行檢查以便確定是否找到字符的大小。如果未能找到適合的字符大小,拒絕該組,并且處理在步驟2160處繼續(xù)。否則,處理在步驟2130處繼續(xù)。
步驟2130處理組內的CC和該組的邊界框內包含的其它適合的、但是仍未分配到任何組的CC。該處理2130對于增加可能被初始分組錯過的文本,以及小對象諸如可能從基于分類的初始分組中被忽略的標點符號是有益的。僅有與該組中的對象共享父親、并且顏色足夠類似的對象可以被添加到該組。如果滿足下面的條件,則滿足組和包含的CC的顏色類似性條件(Y-y)2+(U-u)2+(V-v)2<TCg2---(8)]]>其中[Y,U,V]是組的顏色,[y,u,v]是CC的顏色。參數值可以是TCg2= 500。
可替換地,可以在步驟2130中應用幾何測試,并且可以放松CC的邊界框完全包含在組的邊界框內的要求,從而將接近組的對象結合到組內。步驟2130的其它可替換方案可以合并某些對象以便形成字符。這旨在針對具有復雜字符的腳本,諸如中文的,這些字符可能被分段為多于一個單獨對象,并且有益于改進后面處理中的對齊測試的準確性。僅在兩個對象的邊界框重疊時,可以合并兩個對象。如果合并將創(chuàng)建大于1.6的縱橫比,或創(chuàng)建比步驟2120中估計的字符大小大的合并對象,則限制不發(fā)生合并。
在步驟2150中,檢查組內的對象的對齊。該測試將文本組與其它組區(qū)分開,并且在下面更詳細地描述。在該步驟后,在步驟2160執(zhí)行測試,以便確定是否有更多組要處理。如果有更多的組,處理返回步驟2110。否則,處理430結束。
3.2.1檢查對齊圖24更詳細地給出了圖21的步驟2150。在該步驟過程中,將組內的CC的子集定義為字符。字符可以是具有大于2120中估計的字符大小的一半,并且小于該大小的兩倍的大小的那些對象。
基于關于組元素的一系列參數的直方圖分析,步驟2430到2450進行組的接受測試。這些參數是每個字符的邊界框的左、上、下和右邊。使用多個參數允許識別出不同對齊的文本,由于文本在頁上的對齊取決于許多因素,諸如語言和文本在頁上的傾斜??商鎿Q地,可以使用水平和垂直邊界框參數的各種組合識別更寬范圍的文本對齊。
在步驟2430中,為下一個參數的組元素值形成直方圖??梢愿鶕M字符的大小縮放直方圖內的庫的大小??梢詾樯虾拖逻吔缈蜻吺褂媒M內字符的平均高度的1/5的值(取整),并且可以為左和右邊界框邊使用組內字符的平均寬度的1/5(也取整)。設置直方圖內的庫范圍,從而所有數據被包括在該范圍的每一端處的非空庫內。可以將直方圖覆蓋的最低值設置為組內的參數的最低值。
決定步驟2440測試直方圖內的值是否很好地對齊,形成離散的簇(cluster)(理想地表示不同行文本的基線),而不是隨機散開。步驟2440測試組內的字符數N是否大于具有優(yōu)選值T=7的閾值T。
對于小組(N<T),步驟2440檢查3個參數AL1,AL2和OV。AL1是直方圖內的最大庫的計數。AL2是直方圖內第二大庫的計數。OV是組內重疊字符的最大子集的大小。表2內的偽碼描述了用于該組的測試。如果偽碼返回Y,則組通過對齊測試,并且如果偽碼返回N,測試失敗。
表2
IF(N<3)return NELSE IF(N=3)IF(AL1>=2 and OV>=3)return YENDELSE IF(N=4)IF(AL1>=2 and OV>=4 and AL2>=2)return Y
ELSE IF(AL1>=3 and OV>=4)return YENDELSE IF(N=5)IF(AL1>=4 and OV>=5)return YENDELSE IF(N=6)IF(AL1>=2 and OV>=6 and AL2>=2)return YELSE IF (AL1>=4 and OV>=6)return YELSE IF(AL1>=3 and AL2>=3)return YENDELSE IF(N=7)IF(AL1>=2 and OV>=6 and AL2>=2)return YELSE IF(AL1>=6)return YELSE IF(AL1>=3 and OV>=4 and AL2>=3)returnYENDENDreturn N
對于大組,進行直方圖庫的平方和與組內隨機布置的CC的預期值的比較的測試。下面給出用于該測試的等式
Σi=1mhi2≥2×(n+n(n-1)m),]]>其中m是直方圖庫的總數,n是字符總數,并且hi是直方圖第i個庫的填充率。該等式右手側的項是期望值(均值)的2倍,并且對于足夠大的m和n,近似為這樣的值,對于該值存在隨機布置的字符被接受的0.1%的可能性。在下面描述的圖27中示出了該處理的例子。
參考圖24,如果根據該測試接受組,并且處理在步驟2470處繼續(xù)。在步驟2470中,保持該組,對齊檢查結束。然后處理終止。否則,如果步驟2440返回假(否),處理在步驟2450處繼續(xù)。決定步驟2450檢查是否有更多參數要測試。如果有,處理針對下一個參數在步驟2430處繼續(xù)。否則,如果已經測試了所有參數,處理在步驟2480處繼續(xù),其中拒絕該組。然后處理終止。
前面的描述公開了一次基于一個參數的測試和拒絕那些所有測試都失敗了的組。然而,以本公開來看,本領域的技術人員將明了,可以實踐針對不同參數的組合測試的可替換的方法,而不脫離本發(fā)明的范圍和精神,諸如接受差不多足夠好地在兩個不同但類似的參數(諸如,邊界框的上和下邊)中對齊的組,或基于許多參數創(chuàng)建該組的整體評分。
3.2.2對齊例子圖27(b)示出了可能從圖2700中分段的部分得出的不規(guī)則布置的邊界框2710、2712、2714,...的選擇。圖27(b)示出了隨機布置的連通組分。圖27(a)示出了該圖的邊界框的底的值的直方圖2720。圖27(d)示出了具有很好地對齊的連通組分的文本組的邊界框2740、2742在頁上的布置,并且圖27(c)示出了相應的直方圖2730。如圖所示,文本的直方圖2730具有少許大的值簇,而其它直方圖2720具有更均勻散布的值。使用直方圖庫的值的平方和作為測量值,圖27(a)給出了值19,并且圖27(c)給出了值47。m=19并且n=13的上面的接受測試的右手側的項是45。因此根據該測試,拒絕圖27(b)的圖像數據,而接受圖27(d)的文本數據??商鎿Q地,接受測試可以基于其它統(tǒng)計量,諸如明顯大于平均計數的庫內的值的總數。
4產生壓縮的輸出圖像通過以估計的背景顏色在前景區(qū)域上繪制,后端模塊使用修復處理,使得背景圖像更可壓縮。優(yōu)選地在較低分辨率(例如,150dpi)的背景圖像上執(zhí)行修復。修復算法是單輪的、基于貼片的算法,并且努力增強可壓縮性。通過從左邊和右邊的周圍像素進行內插,而不是使用大區(qū)域的一個平均顏色,選擇每個像素的顏色。
該算法執(zhí)行下面的步驟1)組合用于所有前景組分的掩蔽,形成用于該貼片的一個前景掩蔽;2)擴大該掩蔽,從而修復圍繞該前景組分的小的附加區(qū)域;3)在貼片上以光柵順序a如果像素未被掩蔽,更新貼片的活性;和b如果像素被掩蔽了,以從左邊和右邊最近的未掩蔽像素的顏色內插出的顏色繪制像素;4)如果未掩蔽區(qū)域的活性低于某個閾值,以未掩蔽像素的均值顏色繪制整個貼片(這給出了以ZLib壓縮JPEG的改進的壓縮);和5)如果掩蔽了整個貼片,以前面的貼片的均值顏色繪制整個貼片。上面的步驟2)消除了滲色影響,并且改進了壓縮,并且銳化了輸出質量。
圖5詳細地示出了圖1的步驟130。步驟510到540使用類似于在圖2和3中描述的基于貼片的處理系統(tǒng)。在步驟510中,獲得將處理的下一個貼片。在步驟520中,在當前貼片上執(zhí)行修復處理,以便去除圖1的步驟120中識別出的任何前景CC,并且平坦化視覺上看上去接近平坦的任何貼片。在步驟530中,壓縮當前貼片。這可以使用具有以2∶1水平和垂直子采樣的2個色度通道的YCrCb顏色空間內的JPEG完成。每個縮小分辨率的背景圖像的貼片包括16×16個像素,其意味著這些像素可以直接編碼為針對Y通道的4個8×8像素的JPEG塊,以及針對Cr和Cb通道中的每一個的1個8×8 JPEG塊,而不需要貼片間所需的任何緩沖。
在步驟540中,進行檢查以便確定是否存在更多貼片要處理。如果有任何更多貼片要修復和壓縮,處理返回步驟510。否則,處理在步驟550處繼續(xù)。在步驟550中,壓縮前景,這涉及壓縮在步驟120中識別出的前景元素。根據顏色將前景元素分組,并且為每個類似著色的前景元素組創(chuàng)建完整輸入分辨率的一個二值圖像。然后可以將每個創(chuàng)建的圖像編碼為CCITT G4 Fax,如果圖像足夠大,使得編碼產生輸出文檔中的壓縮優(yōu)勢的話。
在步驟560中,產生輸出文檔。以復合壓縮格式存儲壓縮的背景和壓縮的前景圖像。該格式可以是,例如,PDF文檔。還可以使用Flate(Zlib)壓縮進一步壓縮JPEG編碼的背景圖像。對于包含由步驟520和530產生的大量重復的平坦塊的JPEG圖像,這帶來了明顯的空間節(jié)省??梢詫懞铣晌臋n,合成文檔包含Flate和JPEG壓縮的背景圖像,和包含大小、位置、順序和-在二值前景圖像的情況下-在頁上繪制每個圖像的顏色的細節(jié)的頁描述。
4.1修復貼片圖30詳細地示出了圖5的步驟520。該處理修改下采樣的背景圖像,以便增加可壓縮性,并且通過從背景中去除前景CC且以低可視活性平坦化圖像貼片,增強前景CC的銳度。還修復前景CC周圍的小區(qū)域,以便去除滲色影響,從而增強圖像并且增加可壓縮性。
通過以通過在選擇的前景CC的左邊和右邊的像素的顏色間進行內插估計的顏色繪制該前景CC,圖30中示出的處理520從低分辨率的背景中去除選擇的前景CC。這增加了可壓縮性。還修復圍繞著該CC的外部的小區(qū)域,以便進一步增加可壓縮性,并且增強圖像的外觀。通過識別具有低可視活性的背景圖像的貼片,并且將所有它們的像素設置為相同顏色,進一步增加可壓縮性。
圖30的處理的輸入是在圖2的步驟250中創(chuàng)建的下采樣的背景圖像,來自圖2的步驟240的CC列表,以及來自圖1的步驟120的前景或背景選擇信息。在步驟3010中,檢查貼片以便查看貼片是否被標記為是“平坦的”。如果是,處理在貼片平坦化步驟3040處繼續(xù),否則,處理在步驟3020處繼續(xù),其中為貼片形成全分辨率前景位掩蔽。其具有在相應于前景CC的每個位置設置的位。在步驟3030中,通過以從該CC的左邊和右邊的像素的顏色內插出的顏色修復它們,去除背景圖像中相應于前景CC的區(qū)域和圍繞它們的小區(qū)域。還測量貼片內未修復像素的活性。在步驟3040中,如果發(fā)現貼片活性足夠低,以致于在視覺上是平坦的,將整個貼片平坦化為恒定顏色。然后處理終止。
4.1.1形成貼片前景位掩蔽圖31更詳細地示出了用于形成貼片前景位掩蔽的圖30的步驟3020。在步驟3110中,創(chuàng)建用于貼片的初始位掩蔽。該位掩蔽的寬度與貼片相同,并且比貼片高一行。該位掩蔽的第一行被設置為與上面的貼片的最后一行相同,除非該貼片是文檔中的第一個帶,在這種情況下,將位掩蔽的第一行設置為空。這允許修復區(qū)域在具有與貼片邊界對齊的底邊的前景CC之下延伸。
在步驟3120中,獲得貼片內的下一個CC。在步驟3130中,檢查該CC以便確定該CC是否是前景CC(在步驟120中)。如果CC是前景CC,處理在步驟3140處繼續(xù)。否則,處理在步驟3150處繼續(xù)。在步驟3140中,使用逐位OR操作,將相應于該CC和當前貼片的位掩蔽與步驟3110中創(chuàng)建的位掩蔽組合在一起。然后,處理在步驟3150處繼續(xù)。在步驟3150中,進行檢查以便確定當前貼片內是否有更多CC。如果是,處理返回步驟3120。否則,如果已經處理了貼片內的所有CC,步驟3150的結果是否,并且處理在步驟3160處繼續(xù)。在步驟3160中,保存形成的掩蔽的最后一行,從而當處理頁上直接在該貼片之下的貼片時,可以在步驟3110中使用其。圖31的處理3020中創(chuàng)建的位掩蔽是輸入圖像的全分辨率。
4.1.2修復像素和測量貼片活性圖32更詳細地示出了圖30的步驟3030。以光柵順序檢查每個像素,直到發(fā)現應修復的一個,其標記著要修復的一串像素的開始。檢查后續(xù)像素,直到找到要修復的像素串的結尾。然后以在修復串的左邊和右邊的像素的顏色間線性內插的顏色給該像素水平串著色。
參考圖32,步驟3210得到貼片的一行。在步驟3220中,根據行的累積像素活性找到下一個像素串的開始。以光柵順序檢查行內的每個像素,并且累積貼片內的像素活性,直到找到應修復的像素。通過累積像素值和這些像素值的平方,并且保持測量的像素的數目的計數,記錄未修復的像素的像素活性。為了決定每個像素是否應修復,將像素位置和在圖30的步驟3020中創(chuàng)建的貼片前景位掩蔽內的相應位置進行比較。由于貼片位掩蔽的分辨率是背景圖像的兩倍,掩蔽中有4個相應于背景圖像內的一個像素覆蓋的區(qū)域的像素。為了改進壓縮和從前景CC中去除滲色邊影響,修復前景CC的邊周圍的小附加區(qū)域。為了進行該處理,檢查全分辨率前景掩蔽中的8個像素,以便決定是否修復當前背景像素。圖34示出了背景圖像貼片3430中的示例像素3410,以及檢查的相應的全分辨率掩蔽像素3420。如果在掩蔽3440中設置了由3420指示的這些8個像素中的任何一個,即,相應于前景CC的位置,修復像素3410。由于將位掩蔽3440存儲為位向量的矩陣,使用逐位AND運算可以快速檢查這些8個像素3420??商鎿Q地,這可以通過擴大位掩蔽3420內的設置像素,并且然后下采樣來實現。記錄每行上未修復的最后檢查的像素的顏色,并且如果將修復下一個貼片的相同行的第一個像素,使其在處理右邊下一個貼片時可用,從而將該顏色用作內插值。
參考圖32,在決定步驟3230中,進行檢查以便確定在行結尾之前是否找到了要修復的任何像素。如果找到了要修復的像素,處理在步驟3250處繼續(xù)。否則,處理在步驟3240處繼續(xù)。在步驟3250中,以光柵順序檢查該行內剩余的像素,以便找到該行內應修復的像素串的結尾。此處使用與步驟3220中使用的測試相同的測試確定是否應修復像素。在步驟3260中,進行檢查以便確定在行的結尾之前是否找到了要修復的像素串的結尾。如果在達到行的結尾之前找到了要修復的像素串的結尾,處理在步驟3270處繼續(xù)。在步驟3270中,將要修復的像素串內的每個像素設置為在左邊和右邊的最近的未修復像素的顏色間線性內插的顏色。如果要修復的像素串延伸到貼片的左手邊,在前一貼片中為相同行保存的最后的值被用作左內插值。然后,處理在步驟3220處繼續(xù),并且搜索要修復的下一個像素串。如果在步驟3250中達到了行的結尾而未找到不應修復的任何像素,決定步驟3260指揮處理在步驟3280繼續(xù)。在步驟3280中,將要修復的像素串內的每個像素設置為左邊最近的未修復的像素的值,其可以是在以前貼片內為相同行保存的值。在步驟3280之后,處理在步驟3240處繼續(xù)。
在步驟3240中,進行檢查以便確定貼片內是否有更多的行要處理。如果貼片內有更多的行,處理在步驟3210處繼續(xù)。否則,如果沒有更多的行,處理結束。
4.1.3修復的例子圖35示出了某些一維修復的例子。給兩個例子3510、3520提供之前和之后的曲線圖,其中像素強度被繪制為位置X的函數。在第一個例子3510中,要修復的像素串完全在貼片內,并且以緊接著左邊和右邊的未修復像素的值之間線性內插的值代替修復像素的值(以對角影線指示)。修復區(qū)域稍微大于前景組分以便去除任何滲色影響;這被以擴大的掩蔽區(qū)域示出。通過在左邊和右邊的未掩蔽像素顏色間進行內插找到修復每個像素的顏色。在圖25的第二個例子3520中,要修復的像素串越過了貼片邊3530。當處理左手貼片時,以緊接著左邊的未修復像素的值替代要修復的像素的值。當處理例子3520的右手貼片時,將修復像素的值設置為該行最后記錄的未修復像素的值和右邊第一個未修復像素的值間的線性內插的值。
4.1.4貼片平坦化圖33更詳細地示出了圖30的步驟3040。在決定步驟3310中,進行檢查以便確定是否修復了所有像素。尤其是,檢查在步驟3220中記錄的被修復的像素的數目。如果修復了貼片內的所有像素,則認為貼片的可視區(qū)域是低的,并且處理在步驟3320處繼續(xù)。在步驟3320中,將當前貼片內的所有像素著色(設置)為光柵順序的以前貼片的均值顏色。當使用基于塊的壓縮技術例如JPEG時,這明顯地增加了背景圖像的可壓縮性。然后處理終止。如果步驟3310確定不是修復了貼片內的所有像素,處理在決定步驟3330處繼續(xù)。在步驟3330中,對照預定的閾值檢查在步驟3220中測量的未修復像素的活性。如果發(fā)現活性小于該閾值,認為重構圖像內的貼片的活性可視區(qū)域接近平坦。在該情況下,處理在步驟3340處繼續(xù),并且通過以貼片內未修復的可視像素的均值顏色繪制貼片內的所有像素,使得該貼片完全平坦。這顯著提高了背景圖像的可壓縮性。在步驟3340后,或如果發(fā)現貼片內的活性高于閾值在步驟3330后,圖33的處理結束。
5硬件實施例圖51示出了根據本發(fā)明的第二實施例的系統(tǒng)5100。系統(tǒng)5100以處理流水線的不同階段間的高效的數據流為特征。該設計極大地減少了存儲器帶寬,并且能夠使得系統(tǒng)5100快速運行。
掃描儀通常按像素光柵順序獲得掃描數據。然后存儲像素數據,并且通常為進一步的圖像處理進行壓縮。在傳統(tǒng)的掃描到文檔應用中,通常需要從存儲設備中檢索掃描數據,解壓縮,并且然后保持在用于分段和布局分析的存儲器內以便處理圖像數據。這通常是高速掃描儀的情況,這只是因為分段處理不能跟上掃描儀一頁接一頁流式傳輸光柵數據的速度。
這不僅需要大的存儲器緩沖器,而且由于每個圖像像素必須至少被寫和讀兩次,還需要高存儲器帶寬。首先必須由掃描儀將像素寫到存儲器,并且然后壓縮器從存儲器讀取數據并且壓縮數據。稍后,解壓縮器必須讀取壓縮數據,并且將數據解壓縮到存儲器內。最后,圖像處理器可給解壓縮數據分段。對于每個原始的圖像像素,至少有一次冗余的存儲器讀和寫,更不要說壓縮的數據。對于高分辨率掃描儀(例如,600dpi),這意味著超過200MB的額外數據。
本發(fā)明的這個實施例采用高速、自動分段,其直接工作于來自掃描儀5105的實時的一頁接一頁流式傳輸的光柵數據。結果,完全消除了冗余的存儲器讀和寫,并且還極大地減少了存儲器緩沖器的大小。
總線5110從掃描儀5105運送掃描的光柵數據,其被寫到模塊5115(線緩沖器)中。在該例子中,使用64線緩沖器,但是可以根據后面解釋的帶的高度使用其它的大小。線緩沖器5115存儲由代碼分段模塊5125處理的數據帶,同時收集新的進入的掃描數據帶。模塊5125通過總線5120從線緩沖器5115讀取數據貼片,并且以貼片為基礎將該數據顏色分段為連通組分。當模塊5125結束一個數據帶時,從線緩沖器5115讀取新的數據帶以便處理。然后舊的帶緩沖器用于收集新的進入的光柵數據。由貼片的高度確定帶的高度,并且線緩沖器5115需要兩倍帶的高度。在該實施例中,優(yōu)選的貼片大小為32×32。
在這個實施例中以硬件實現模塊5125,從而帶的處理速度可以跟上掃描儀5105產生新數據帶的速度。模塊5125的輸出是到布局分析模塊5140的總線5135上的壓縮的連通組分(CC),和到修復模塊5150的總線5130上的未壓縮或壓縮的下采樣圖像??梢詫⒖偩€5135上的數據寫到存儲器,直到產生了頁的明顯區(qū)域或CC的整個頁。模塊5140僅使用緊湊的連通組分數據執(zhí)行布局分析。由于數據是緊湊的,執(zhí)行布局分析所需的處理能力是小的。因此,布局分析模塊可以實現為由嵌入式處理器實時執(zhí)行的軟件(SW)。布局分析模塊的輸出是在總線5145上提供的前景信息,其緊隨來自總線5135的數據。也可以將總線5130上的數據寫到存儲器內,直到產生了頁的明顯區(qū)域或CC的整個頁。
修復模塊5150逐貼片地對下采樣圖像(通過總線5130提供)執(zhí)行前景去除。該模塊5150可以實現在運行布局分析軟件5140的同一個嵌入式處理器上,或可替換地,它可以用硬件(HW)實現。模塊5150然后在下采樣的圖像上以估計的背景顏色修復前景區(qū)域,以便產生背景圖像。在總線5155上輸出前景去除的背景圖像,并且在總線5175上產生前景掩蔽。
輸出產生模塊5160從在總線5175上產生的前景圖像和在總線5155上產生的背景圖像創(chuàng)建經布局分析的文檔,諸如PDF文件。模塊5160可以用運行在同一個嵌入式處理器上的軟件實現。
在第二實施例中,模塊5115和5125工作在實時的一頁接一頁的掃描數據上,并且產生頁N上的緊湊的連通組分和下采樣圖像。模塊5140、5150和5160使用由模塊5125在頁N-1上產生的數據順序地工作。因此,系統(tǒng)可以實時地送出來自高速掃描儀的實時數據的經布局分析的文檔。
可以用針對第一實施例中相應步驟所描述的方式實現模塊5125、5140、5150和5160。
5.1顏色分段模塊圖52詳細地示出模塊5125。顏色分段為CC模塊5125的組件包括去半色調模塊5220,其按貼片順序取得像素流,并且去除由于掃描使用打印的半色調系統(tǒng)(例如噴墨打印機)打印的材料引起的任何贗象。去半色調模塊5220是前面描述的軟件實施例的硬件實施例。該模塊內部可以使用靜態(tài)RAM和流水線處理以達到所需速度。
從去半色調模塊5220輸出的像素被傳遞到顏色轉換模塊5230,其將像素從輸入顏色空間(通常為RGB)轉換為YCbCr亮度/色度空間。該模塊5230執(zhí)行根據下面的公式對每個像素執(zhí)行必要的乘法和加法 以按比例縮放的定點算術執(zhí)行這些算術運算,以便減小復雜性并且增加模塊5125的速度。將來自顏色轉換模塊5230的輸出傳遞到兩個模塊,即下掃描模塊5240和連通組分分析模塊5260。下掃描模塊5240執(zhí)行一組4個(在2×2的方塊內)或16個(在4×4的方塊內)顏色的簡單平均,以便形成每個輸出像素。然后由硬件JPEG壓縮器5250壓縮從下掃描模塊5240輸出的像素。
6計算機實現可以使用一個或多個通用計算機系統(tǒng)、打印設備和其它適合的計算設備實施根據本發(fā)明的實施例的方法。參考圖1-52中的一個或多個描述的處理可以被實現為軟件,諸如在計算機系統(tǒng)內執(zhí)行的或被嵌入打印設備的應用程序。軟件可以包括一個或多個計算機程序,包括應用程序、操作系統(tǒng)、過程、規(guī)則、數據結構和數據。指令可以被構成為一個或多個代碼模塊,每一個用于執(zhí)行一個或多個特定任務。該軟件可以存儲在計算機可讀介質(包括例如下面描述的一個或多個存儲設備)內。計算機系統(tǒng)從計算機可讀介質裝入該軟件,并且然后執(zhí)行該軟件。
圖7示出了可以實施本發(fā)明的實施例的計算機系統(tǒng)700的例子。其上記錄有這種軟件的計算機可讀介質是一種計算機程序產品。該計算機程序產品在計算機系統(tǒng)內的使用可以實現用于實現一個或多個上述方法的有利的裝置。
在圖7中,計算機系統(tǒng)700耦合到網絡。操作者可以使用鍵盤730和/或指點設備諸如鼠標732(或例如觸摸墊)給計算機750提供輸入。計算機系統(tǒng)700可以具有任意數目的輸出設備,包括線打印機、激光打印機、繪圖機和連接到計算機的其它再現設備。計算機系統(tǒng)700可以通過通信接口764使用適合的通信通道740諸如調制解調器通信路徑、路由器等連接到一個或多個其它計算機。計算機網絡720可以包括例如局域網(LAN)、廣域網(WAN)、內聯(lián)網和/或互聯(lián)網。計算機750可以包括處理單元766(例如,一個或多個中央處理單元)、存儲器770(其可以包括隨機訪問存儲器(RAM)、只讀存儲器(ROM)或兩者的組合)、輸入/輸出(IO)接口772、圖形界面760和一個或多個存儲設備762。存儲設備762可以包括下面的一個或多個軟盤、硬盤驅動器、磁光盤驅動器、CD-ROM、DVD、數據卡或存儲器棒、閃速RAM設備、磁帶或本領域的技術人員公知的其它若干非易失性存儲設備。雖然在圖7中存儲設備被示出為直接連接到總線,可以通過任意適合的接口連接這種存儲設備,諸如并行口、串行口、USB接口、火線(Firewire)接口、無線接口、PCMCIA槽等。出于本說明的目的,存儲單元可以包括存儲器770和存儲設備762中的一個或多個(如圖7中圍繞著這些元件的虛線框指示的)。
計算機750的每個組件典型地通過在圖7中概括地示出的一個或多個總線780連接到一個或多個其它設備,這些總線又包括數據、地址和控制總線。雖然在圖7中示出了單個總線780,本領域的技術人員應當理解,計算機、打印設備或其它電子計算設備可以有若干總線,包括處理器總線、存儲器總線、圖形卡總線和外圍總線中的一個或多個。可以采用適合的橋來接口這些總線間的通信。雖然描述了使用CPU的系統(tǒng),本領域的技術人員應當理解,可以使用能夠處理數據并且執(zhí)行操作的其它處理單元而不脫離本發(fā)明的范圍和精神。
僅出于說明的目的提供計算機系統(tǒng)700,并且可以采用其它配置而不脫離本發(fā)明的范圍和精神??梢詫嵤┻@些實施例的計算機包括IBM PC/AT或兼容機、膝上/筆記本計算機、PC的Macintosh(TM)族之一、Sun Sparcstation(TM)、PDA、工作站等。上面僅是可以實施本發(fā)明的實施例的設備類型的例子。典型地,下面描述的這些實施例的處理被作為軟件或記錄在作為計算機可讀介質的硬盤驅動器上的程序駐留,并且使用處理器讀取和控制??梢允褂冒雽w存儲器實現程序、中間數據和從網絡取得的任何數據的中間存儲。
在某些情況下,可以提供編碼在CD ROM或軟盤上的程序,或可替換地,可以通過,例如,連接到計算機的調制解調器設備從網絡讀取該程序。另外,可以從其它計算機可讀介質(包括磁帶、ROM或集成電路、磁光盤、計算機和另一個設備間的無線或紅外線傳輸通道、計算機可讀卡(諸如PCMCIA卡)、以及互聯(lián)網和內聯(lián)網(包括電子郵件傳輸和記錄在網站上的信息等))將軟件裝入計算機系統(tǒng)。前面僅是有關的計算機可讀介質的例子??梢允褂闷渌挠嬎銠C可讀介質而不脫離本發(fā)明的范圍和精神。
7工業(yè)實用性本發(fā)明的實施例適用于計算機和數據處理行業(yè)。前面僅描述了根據本發(fā)明的實施例用于處理和壓縮數字圖像的少量方法、裝置和計算機程序產品,并且可以對其作出修改和/或改變而不脫離本發(fā)明的范圍和精神,這些實施例是說明性的而不是限制性的。
權利要求
1.一種給包括多個像素的數字圖像分段的方法,該方法包括步驟從所述數字圖像產生多個像素塊;及以單輪的方式使用所述像素塊為每個塊生成至少一個連通組分,所述生成步驟包括將一個像素塊分段為至少一個連通組分,每個連通組分包括空間上相連并且語義相關的一組像素;將所述塊的所述至少一個連通組分與從以前處理過的至少一個其它塊分段出的至少一個連通組分合并;并且以緊湊的形式存儲所述塊的所述連通組分在所述圖像中的位置。
2.如權利要求1的方法,其中所述語義相關的像素包括類似著色的像素。
3.如權利要求1的方法,其中所述產生步驟包括子步驟將所述數字圖像布置為多個帶,每個帶包括預定數目的連貫的像素行;并且一個接一個地緩沖和處理所述帶,其中所述處理步驟包括對每個當前緩沖的帶執(zhí)行的如下子步驟將所述當前帶布置為多個像素塊;和為所述生成步驟一個接一個地緩沖和處理所述當前帶的所述塊。
4.如權利要求1的方法,其中所述存儲子步驟包括存儲M-1個二值位圖,其中M個連通組分在一個塊內,M是整數。
5.如權利要求1的方法,其中所述存儲子步驟包括存儲索引圖。
6.如權利要求1的方法,其中所述分段子步驟包括估計每個塊的若干代表性顏色;將每個塊量化為所述代表性顏色;和從每個量化的塊形成連通組分。
7.如權利要求6的方法,其中所述分段子步驟還包括將形成的所述連通組分的子集合并。
8.如權利要求7的方法,其中所述合并子步驟包括收集所述連通組分的統(tǒng)計量。
9.如權利要求8的方法,還包括去除被認為是噪聲的所述形成的連通組分的步驟。
10.如權利要求9的方法,其中所述噪聲包括具有低于預定閾值的像素計數和高于另一個預定閾值的邊界長度與像素計數比的連通組分。
11.如權利要求8的方法,其中所述統(tǒng)計量包括邊界框、像素計數、邊界長度和平均顏色中的任意一個或多個。
12.如權利要求8的方法,其中所述合并步驟包括將一個塊的連通組分與左邊和上邊的塊的連通組分合并;和更新所述合并的連通組分的所述統(tǒng)計量。
13.如權利要求12的方法,其中所述統(tǒng)計量包括邊界框、像素計數、填充比率和平均顏色中的任意一個或多個。
14.如權利要求6的方法,其中所述估計子步驟包括基于每個塊中的像素的YUV數據,形成與多個顏色庫有關的直方圖;基于直方圖統(tǒng)計量對每個塊分類;和基于所述塊分類合并庫顏色,以便形成所述代表性顏色。
15.如權利要求14的方法,還包括在一輪中為每個像素形成索引圖的步驟。
16.如權利要求15的方法,其中所述量化步驟包括將非空庫量化為代表性顏色;創(chuàng)建到所述代表性顏色的庫映射;和使用所述庫映射將所述索引圖重新映射到所述代表性顏色。
17.如權利要求14的方法,其中所述形成子步驟包括基于Y值確定亮度帶;基于U和V值確定顏色列;將像素顏色累積到所述映射庫;和遞增所述映射庫的像素計數。
18.如權利要求17的方法,其中所述確定亮度帶的步驟還包括亮度帶抗混疊。
19.如權利要求17的方法,其中所述確定顏色列的步驟還包括顏色列抗混疊。
20.如權利要求12的方法,其中所述合并步驟包括為接觸左和上邊界的當前塊內的各個連通組分執(zhí)行的下面的子步驟尋找沿著所述公共邊界觸及所述當前連通組分的一列連通組分;和確定合并的最佳候選。
21.一種包括處理器和存儲器的裝置,用于根據權利要求1到20中任意一個的方法給包括多個像素的數字圖像分段。
22.一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據權利要求1到20中任意一個的方法給包括多個像素的數字圖像分段的計算機程序。
23.一種自動產生顏色文檔的緊湊表示的方法,所述方法包括步驟在一輪中按塊光柵順序,將顏色文檔頁的數字圖像分段為連通組分;基于所述整個頁的緊湊的、連通組分統(tǒng)計量,使用布局分析將所述頁的所述數字圖像劃分為前景和背景圖像;在所述前景圖像的至少一個部分遮蔽了所述背景圖像的位置,在一輪中以塊光柵順序修復所述背景圖像的至少一個部分;和存儲所述前景圖像和背景圖像,以形成緊湊的文檔。
24.如權利要求23的方法,還包括對所述背景圖像下采樣的步驟。
25.如權利要求23或24的方法,還包括壓縮所述背景圖像的步驟。
26.如權利要求25的方法,其中所述壓縮步驟涉及有損壓縮。
27.如權利要求26的方法,還包括對所述有損壓縮的背景圖像的不同壓縮。
28.一種包括處理器和存儲器的裝置,用于根據權利要求23到27中的任意一個的方法自動產生顏色文檔的緊湊表示。
29.一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據權利要求23到27中的任意一個的方法自動產生顏色文檔的緊湊表示的計算機程序。
30.一種分析包括多個像素的數字圖像的方法,所述方法包括步驟將所述數字圖像分段為對象,其中以多于兩個標簽表示所述分段;為每個對象提供一組屬性;為所述對象的子集,使用包含測量確定在共享邊界的相鄰對象間是否存在父親-孩子關系;基于對象的屬性,形成共享共同父親的多組對象;和根據對象的屬性和分組給對象分類。
31.如權利要求30的方法,其中使用每個對象周圍的邊界框和描述對象間的觸及關系的信息確定所述包含。
32.如權利要求31的方法,其中如果兩個對象在邊界接觸,并且一個對象的邊界框完全包含另一個對象的邊界框,則所述對象包含所述另一個對象。
33.如權利要求30的方法,其中所述形成組步驟包括考慮共同父親的一列孩子中的孩子對象的對;和使用所述對象屬性,確定每個對是否應被分組到一起。
34.如權利要求33的方法,其中僅考慮對具有相同父親的一列孩子對象中的相鄰對象進行分組。
35.如權利要求33的方法,其中基于邊界框和顏色信息給對象分組。
36.如權利要求30的方法,其中根據所述組內所述對象的文本類質量的測試,將一組對象分類為文本。
37.如權利要求36的方法,其中所述用于文本類質量的測試包括為每個對象識別表示所述對象的位置的單個值;形成所述值的直方圖;和按照所述直方圖的屬性識別文本。
38.如權利要求30的方法,還包括根據其它對象的屬性將它們添加到對象的文本分類組,而不管它們的父親-孩子屬性如何的步驟。
39.一種分析包括文檔頁的多個像素的數字圖像的方法,所述該方法包括步驟給所述數字圖像分段,以便基于所述圖像形成對象;形成所述對象的組;和確定所述對象組的每一個是否表示文本,所述確定步驟包括根據所述對象在所述頁上的位置,為每個對象識別單個值;形成所述值的直方圖;和按照所述直方圖的屬性識別文本。
40.如權利要求39的方法,其中所述直方圖的所述屬性是所述直方圖中具有多于指定的對象數目的庫內的對象的總數。
41.如權利要求39的方法,其中所述屬性是所述直方圖內的計數的平方和。
42.如權利要求39的方法,其中每個對象的表示所述對象的位置的所述單個值是所述對象的邊界框的邊。
43.一種包括處理器和存儲器的裝置,用于根據權利要求39到42中的任意一個的方法分析包括多個像素的數字圖像。
44.一種包括計算機可讀介質的計算機程序產品,該計算機可讀介質具有記錄在其中的用于根據權利要求39到42中的任意一個的方法分析包括多個像素的數字圖像的計算機程序。
全文摘要
公開了用于自動產生顏色文檔的緊湊表示的方法(100)、裝置和計算機程序產品。在該方法中,在一輪中按塊光柵順序,將顏色文檔頁的數字圖像分段(110)為連通組分?;谡麄€頁的緊湊的、連通組分統(tǒng)計量,使用布局分析(120)將頁的數字圖像劃分為前景和背景圖像。在前景圖像的至少一個部分遮蔽了背景圖像的位置,背景圖像的至少一個部分在一個輪中以塊光柵順序修復(520)。合并(130)前景圖像和背景圖像形成緊湊的文檔。還公開了用于給包括多個像素的數字圖像分段的方法、裝置和計算機程序產品。
文檔編號G06T7/00GK101091186SQ200580043979
公開日2007年12月19日 申請日期2005年12月20日 優(yōu)先權日2004年12月21日
發(fā)明者詹姆斯·P·安德魯, 詹姆斯·A·貝斯利, 斯蒂文·伊爾甘格, 陳玉玲, 艾瑞克·W-S·崇, 麥克爾·J·勞澤爾, 蒂默斯·J·沃克 申請人:佳能株式會社