具体实施方式
现在参照附图描述本发明,其中,相同的参考标号被用来全程地指示相似元素。在下列表述中,为了解释目的,阐明很多具体细节,以便提供对本发明的彻底理解。然而,本发明可能在没有这些具体细节的情况下被实行,这是是明显的。在其它的一些实例中,知名的结构和设备以框图形式被显示以便描述本发明。
如同在本申请中所用的,术语“部件”意图指一个计算机相关的实体,或者是硬件、硬件和软件的组合、或执行中的软件。例如,一个部件可以是但不局限于运行在处理器上的一个过程、处理器、一个对象、一个可执行的线程、程序以及计算机。通过举例说明的方法,运行在服务器上的一个应用程序和这个服务器都能够是一个部件。一个或多个部件能够驻留于一个过程和/或执行线程中,并且一个部件可能定位于一个计算机上和/或分布在两个或多个计算机之间。
此外,“文档图像”意图指包含一个或多个颜色的文档(例如,二元的(黑/白),灰度级和/或彩色文档)的数字表示。另外,一个文档图像能具有图像,文本,和/或有图像的,有文本和图像可能叠印的文本。文档图像能包含二元,RGB,YUV和/或其它文档的表示。一个RGB文档图像被表现为红色,绿色,和蓝色成分。一个YUV文档图像使用用Y表示的亮度成分和用U和V表示的色度成分来表示。该YUV表示通常更适合于压缩,因为人类的眼睛对U和V失真是较不敏感的,并且因此U和V能够通过因子2被二次采样,并且因为Y在R,G和B之间捕捉相关性。为了文本聚类的目的,Y表示特别引起注意,因为当亮度改变时,文本通常比较容易去读取。从色度的一个改变中得到的文本,例如在一个给定亮度上从红色变到绿色,一般较难读取。一个彩色文档,因此能被转换为一个YUV文档,它能随后被压缩或二进制化,而充分保持文本信息。一个文档图像包含一般被称为“像素”的图片元素。一个文档图像可基于任何形状或尺寸的单个或多个页面的文档。
图1说明了根据本发明的一个方面的一个聚类***100。这个聚类***100从一个文档中析取标志,通过避免已发现的标志对现存簇的大量逐位比较,以计算有效的方式,从标志中创建簇。聚类***100执行许多比较来识别标志和现存簇中的匹配和不匹配,从而避免许多计算开销大的逐位比较。
逐位标志析取器104从文档102中析取一个标志(例如,它典型地包括文本信息)。通常地,文档102是一个二元的文档图像,然而可以理解的是本发明的替代方面能包括具有任意适合数量的等级或色彩的文档。文档102有一页或更多页,并且可以是从另一个文档图像中析取的层或表征码。标志通常是一个给定颜色的多个连通像素,并且也能够被称为连通成分。常常,一个标志是一个例如“e”的字母数字字符。然而,不同于OCR,一个标志不被识别为一个具体字符。
在文档中的文本的普通表示表现为白底黑字。为了简单起见,***100通过文档102的文本表示为黑色来描述。然而,可以理解的是文本可以表示为任何适当颜色或底纹或任何其它颜色或底纹。
标志析取器104扫描文档102(例如,从左到右,从上到下)来识别或定位一个标志的“种子”。种子是标志析取器104识别/定位的第一个非白色像素。标志析取器104从一个开始位置或像素开始扫描。该开始位置一般在文档的左上角,并且在每个标志被析出后被更新。因此,例如,最先定位最高最左边标志。一旦种子被找到,应用算法去定位连通像素。标志析取器104随后析出标志,包括连通像素,并且从文档102中移出它。
匹配特性部件106接收来自标志析取器的标志。为了识别不匹配,匹配特性部件106把一个或多个标志特性与相对应的现存簇114的一个或多个特性相比较。这个比较也可称为是筛选。一个或多个特性可包括,例如,标志的位图图像,标志的重心,x尺寸,y尺寸,油墨尺寸,位置信息和重新调整大小的标志图像。存储部件112存储现存簇114的一个或多个特性,并提供诸特性到匹配特性部件106。存储部件112可以是存储设备,例如,存储器,硬盘驱动器,闪存存储器等等。如果需要,可由匹配特性部件106计算标志的一个或多个特性。类似地,如果需要的话,现存簇114的一个或多个特性也能由匹配特性部件106计算。
匹配特性部件106使用一个阈值为一个或多个特性计算可接受的值的范围。这个阈值可以是,例如,80%,意思是现存簇的特性能够落在标志的对应特性的80%内。可调整阈值来提高***的性能。然而,阈值越大,标志将被添加到一个现存簇中的可能性越小,并且将获得越少的压缩。客队诸特性中的每一个使用多个阈值。
一个或多个特性能被顺序地或并行地比较。例如,为了顺序比较,标志的x尺寸特性可与现存簇的x特性相比较,随后,标志的油墨尺寸可与现存簇的油墨尺寸相比较。顺序比较受益于这样一个事实,即由于从许多簇中寻找一个适当的簇而造成预期大多数比较都会失败。因此最先进行计算最低廉的特征比较,一旦一次比较失败,对这个簇的剩余比较就不需要被执行了。该簇就是一个不匹配簇,考虑下一个簇。如另外一个例子,为了并行比较,标志的x尺寸和油墨尺寸可与现存簇的x尺寸和油墨尺寸相比较。并行比较从同时执行多个比较中受益。并行比较能利用较大量的比较,但能通过执行并行计算来提高速度。
如果一个不匹配被识别出,意为现存簇的一个或多个特性中的一个不能落在可接受的范围内,或者标志和簇之间的距离也未能落在可接受的范围内,则标志作为一个新的簇被添加到现存簇中。此外,***进行的标志处理完成。文档的另一个标志可由***100来处理。
如果识别一个匹配,意为至少有一个匹配的现存簇,匹配符号部件110把标志的位图与至少一个匹配簇的位图比较。位图是逐位比较,来识别具有相似位图的至少一个匹配的现存簇的簇。这个比较也称为匹配。可计算不止一个距离的比较。例如,首先计算XOR距离,意味着对每个不匹配位,把1添加到该距离,如果第一距离落在一定范围内,则继之以计算更复杂和计算开销更大的距离。根据本发明可使用其它适合的匹配过程,如加权异或(WXOR),它根据被设置的许多邻近像素来加权像素;加权的与非(WAN),类似于WXOR,当计算加权时区分对待从白到黑的错误和从黑到白的错误;式样匹配和替换(PMS),如果发现在错误映射中的任何位置具有4个或更多的被设置的邻居,则拒绝匹配;组合的尺寸无关策略(CSIS),它通过利用试探方法来增大PMS过程来探测稀少的笔划或缝隙;和基于压缩的模板匹配(CTM)。匹配过程或比较能在第一个可接受的匹配的现存簇作为匹配簇时被终止。选择一个阈值,它允许在标志和至少一个匹配的现存簇的位图上有较小偏差。关于图6,比较位图的方法在下面被进一步详细地解释。作为替代,匹配过程能够贯穿所有的至少一个匹配的现存簇来继续,以识别最佳匹配或最匹配的簇为匹配簇。在发现或识别的匹配簇上的标志,被添加到匹配簇的类似标志组中。能通过平均利用标志的位图来更新匹配簇的位图。
如果识别关于位图的一个不匹配,意为至少一个匹配簇无位图可被接受,则标志被添加到现存簇中作为一个新的簇。另外,***100对标志的处理完成。***100能随着文档中的所有剩余标志而继续。
图2说明根据发明的一个方面的示例性标志201。利用连通特性来发现连通像素。这个示例性标志201代表一个文本字符(例如,字符“z”)。典型地,使用8连通特性来定位连通像素。然而,也可使用4连通特性。4连通特性仅识别在四个主要包围方向中的连通像素。图3通过示出在四个主要包围方向310上由4个像素包围的一个像素,来说明4连通特性。8连通特性在每个可搜索的邻居方向上识别连通像素,即八个直接的邻居,分别在8个主要方向上的每一个方向上。图4通过显示在八个主要方向411上由8个像素包围的一个像素,来说明8连通特性。例如,图2中的像素203根据4连通特性和8连通特性被识别。然而,4连通特性将不能把像素204识别为连通像素。
再次涉及图1,标志析取器104能通过使用下列的算法来找到标志。首先,把二元图像转换成游程长度编码(RLE)表示。假设这里有n个游程,创建n个组,在每个组中放置一个游程。随后对每行以及每个游程,使用4连通或8连通,在前一行中找到与当前游程接触的所有的游程。执行包含接触的游程的所有这些组的一个联合。在页的末端,剩余的组就是标志。这个算法可被称为“联合-发现”算法。复杂性为O(nlog*(n)),n为游程个数,log*是Ackerman函数的反运算。因此,复杂性近似为O(n),在这里n是游程个数。另外,可对图像和它的底片都计算标志,以便使反白显示文本形成簇。
如上陈述,标志通常由连通像素构成。然而,标志析取器104能被适应于识别不严格地为连通像素的标志。例如,图5连同上部点502一起显示字母“i”的下部501。下部501和点502是明显的连通像素。然而,标志析取器104能通过从原始标志中扫描附加区域来将下部501和点502识别为一单个的或组合的标志。
为了结合连通成分或标志,可执行行分析。例如连通成分可基于它们在页中的位置而被组合成单词,单词同样基于它们在页中位置和它们的角而被组合成行。一旦识别了一行,相对于行的方程,就可能合并垂直位于彼此顶部上的所有标志,使得重音和点标志附加到它们所属的单词的标志上。结果产生的标志理所当然是不连通的,但能如同以前一样在聚类算法中被使用。
在标志已被识别之后,标志析取器104能在标志上执行附加的计算。标志析取器104能计算标志的特性,例如,标志的重心,x尺寸,y尺寸,油墨尺寸,区域,位置信息,热点,以及重新调整大小的标志图像。x尺寸按标志的最大宽度计算。y尺寸按标志的最大高度计算。如果标志是两个标志的组合(例如,“i”和它的点),则y尺寸是所产生的组合的高度。油墨尺寸是在标志中的黑像素数,而区域是标志的边界框中的像素总数(x尺寸乘以y尺寸)。另外一个有时有用的用来探测不匹配的特征是油墨百分比。下面的方程式能用来计算标志或簇的油墨百分比:方程1
热点是在标志上的一个位置,它可以是重心,或通过其它手段计算。作为一个例子,对于文本,就可能进行行分析和找到标志所位于的行的方程式(这是用于寻找行来连接例如“i”上的一点之类的标志的相同算法)。标志的热点具有对于x坐标水平重心,以及对于y坐标,用行方程式,穿过相同的x坐标的垂直线的交叉点。在比较过程中,标志和簇的热点在比较开始之前对齐,常导致在比较之前的标志的转化。
位置信息可包括诸如标志的坐标,偏移量,基准点和/或空间信息之类的信息。
重新调整大小的标志图像是标志经重新调整大小的版本。这个重新调整大小的标志图像被计算为一个较小的版本,例如标志的一个3乘3像素图像。为了帮助符号比较,计算重新调整大小的标志图像。重新调整大小的符号一般在像素尺寸上比标志小得多。许多算法都可用于将标志缩小成重新调整大小的标志图像。其中一个算法是将标志划分为9个区域(3乘3),以热点为中心,并且按比例缩放以覆盖标志的区域,并且当它们和这些区域中的每块区域相交时,计算标志的平均值。
另外一个算法是从位图中移去或删除若干像素。然而,可使用其它算法来生成重新调整大小的图像,但仍依照本发明。可以理解的是上面的计算能被延迟,直到或如果***需要为止,以便增加计算效率。
另外,根据本发明,可以理解的是现存簇和它们的特性能在一局部库和一全局库中保持。可以使用局部库为当前页存储现存簇,以及使用全局库为文档102全局地存储现存簇。在另外一个方面中,频繁出现的现存簇(例如,具有相对较大量相关联的标志的簇)保持在全局库中,而很少出现的现存簇保持在在局部库中。
图6是根据发明的一个方面的聚类***600的框图。聚类***600从一个文档中析取标志,并且通过避免对现存簇的大量逐位比较已发现的标志,以计算有效的方式从标志中创建簇。聚类***600执行若干识别不匹配的比较或筛选操作,从而避免许多计算开销大的逐位比较。
通常,通过***到簇中的第一个元素或标志来表征簇。它的一个优点是增加一个新的标志到簇不需要重新计算簇的特性。这个方法的另外一个优点是它避免了“簇漂移”,当簇中心移动或随着每次添加新标志到簇而被更新时发生簇漂移。避免簇漂移保证了在相同簇的两个元素之间的最大距离。这个保证允许更有效和更主动的筛选。此方法的一个缺点在于在感觉上该聚类不是最佳的,比其它聚类算法,对于相同的平均簇到标志距离,它会产生更多的簇。然而,处理速度上的进步一般比上述缺点重要。作为一个例子,在文本压缩的情况下,在簇的数量上有10%的增长是不必要关心的,因为传递每个簇的信息的字典大小一般是压缩文档尺寸的一部分。
二维表612存储和保持现存簇。现存簇是先前发现的或识别的簇。如上所述,一个簇是至少一个相似标志的组。二维表612根据现存簇的盒尺寸或边界框来容纳实体。表612的各个实体,称为存储段,包含对应于某一特定盒尺寸的簇的列表。该盒尺寸称为标志或簇的x尺寸和y尺寸。可以理解的是实体或存储段可能是空的。另外,可对表建立最大盒尺寸,因为簇一般落在一定的盒尺寸以下。在最大盒尺寸之上的簇可存储在一个单独的表中(例如,公司的标识或***)。典型的,具有相对较大盒尺寸的标志不太可能类似于其它簇或标志。
图7是说明可用于图6的***600中的二维表的框图。如所描述的那样,实体或存储段按x尺寸和y尺寸排列。一个存储段710具有的x尺寸为1,y尺寸为N。在存储段710中的簇说明于图8中。
标志析取器604运行用来从文档602中获得标志。文档602是一个数字文档,一般包括文字信息。标志析取器60一个一个的移除和处理标志。标志析取器604采用一合适的算法从文档602中析取和移除标志。对于各个标志,标志析取器604计算和/或获得标志的特征或特性,包括但不限于标志的位图图像,标志的重心,x尺寸,y尺寸,油墨尺寸,位置信息和重新调整大小的标志图像。
匹配尺寸部件606接收来自标志析取器的标志。该标志包括标志的位图图像,标志的重心,x尺寸,y尺寸,油墨尺寸,位置信息和重新调整大小的标志图像。该匹配尺寸部件606利用一个阈值来计算可接受的x尺寸和y尺寸值的范围。该阈值可以是,例如10%,意味着可接受的x尺寸和y尺寸的值应当在标志的x尺寸和y尺寸的10%内。可以调整阈值来提高***600的性能。然而,阈值越大,现存簇将被发现匹配的可能性越小,并且一般获得的压缩越少。
匹配尺寸部件606参照尺寸表612获得一个或多个在上述的可接收范围内的存储段。该一个或多个存储段包含现存簇的一部分,可称为尺寸匹配的簇。如果没有尺寸匹配的簇,则标志作为一个新的簇被添加到二维表612中。另外,匹配尺寸部件606可扩大尺寸值的范围或包括邻近的存储段,以便获得更多尺寸匹配的簇,尤其是如果最初没有识别出任何尺寸匹配的簇时。上述的在簇中心的“无漂移”假设是有用的,因为它允许现存簇保留在它们的存储段中。
如果标志作为一个新的簇被添加,标志的信息,包括但不限于,唯一的标识符,标志的位图图像,标志的重心,x尺寸,y尺寸,油墨尺寸,位置信息和重新调整大小的标志图像,被加到在二维表612中的一个存储段中。标志的图像(现在是一新簇的图像)能单独地存储在形状字典中,该字典中库条目仅容纳指向形状字典或形状号的指针。形状字典可以是局部的和/或全局的。图9说明对于一个单独的簇的一个示例性的条目901。可以理解的是条目901并不全面,额外的信息可包括在现存簇的一个实体中。
再次谈及图6,如果有至少一个尺寸匹配的簇,对标志的处理则由匹配油墨部件608继续。标志的油墨尺寸分别和尺寸匹配的簇的下一个簇的油墨尺寸相比较。如果尺寸匹配的簇中没有下一个簇,则如上描述的那样把标志作为一个新的簇添加到现存簇中。油墨尺寸信息是标志中黑像素数对全部像素数的百分比或比值。如果标志的油墨尺寸匹配下一个簇的油墨尺寸,则对标志的处理由匹配符号部件继续。如果标志的油墨尺寸不匹配该下一个簇的油墨尺寸,则匹配油墨部件用尺寸匹配簇的接着的下一个簇继续对标志的处理。
匹配符号部件610继续对标志的处理。首先,匹配符号部件610将标志的重新调整大小的图像和下一个簇的重新调整大小的图像相比较。重新调整大小的图像是标志或簇的位图的一个缩小尺寸的版本(例如,3乘3的像素表示)。缩小尺寸的版本能够用灰度等级像素表示,这比二元好。这个比较能相对较快地执行,因为仅有9个像素被比较。可建立一阈值来允许缩小尺寸的表示的有限变化。如果重新调整大小的图像不匹配(例如,不匹配),标志的处理返回到匹配油墨部件608,在那里处理接着的下一个簇。
在缩小尺寸之前,使用“基准点”对齐图像是有利的。参考的簇和标志的基准点在计算向下采样的图像之前被计算。基准点,也被称为热点,能计算为重心或通过其它方法计算(例如,周围的标志的行方程式)。按每个位图上的黑像素的平均位置计算标志或簇的重心。其它的基准点和多重基准点能用来对齐图像。在图像被向下采样之前,图像得到对齐,使得热点对应于向下采样的图像的中心。
如果重新调整大小的图像确实匹配,则执行对标志的位图和下一个簇的位图的逐位比较。为了比较标志和参考的簇,匹配符号部件610计算标志和下一个簇之间的距离。如果该距离在一阈值之内或小于一阈值,那么这个参考的簇是一个匹配簇。否则,对标志的处理返回到匹配油墨部件608,并且用接着的下一个簇继续。
能由匹配符号部件利用的一个合适的距离是“xor”距离。通过产生一个错误映射来计算“xor”距离,它是标志和参考的簇之间的按位异或。“xor”距离是错误映射中的像素数量。在计算xor距离之前,图像通过叠加它们各自的热点来得到对齐。
图10说明一示例性的错误映射。标志的位图示于1001。现存簇的位图示于1002。标志1001和现存簇1002上的按位异或操作示于错误映射1003。
根据本发明,可使用其它距离计算,如加权异或(WXOR),它根据设置的若干邻近像素来加权像素;加权与非(WAN),它类似于WXOR,当计算加权时区分对待从白到黑的错误和从黑到白的错误;式样匹配和替换(PMS),如果在错误映射中发现任何位置具有4个或更多的被设置的邻居时,则拒绝一个匹配;组合的尺寸无关策略(CSIS),它通过利用探索方法增大PMS过程来探测稀少的笔划或缝隙;以及基于压缩的模板匹配(CTM)。
另外,对于对下一个簇的各个标志比较,可计算和采用多重距离。例如,可首先计算上述的XOR距离,意为对于每个不匹配位把1添加到该距离,如果第一距离落在一定范围内,则继之以一更复杂和计算开销更大的距离。
一旦发现一个匹配,标志由匹配符号部件610添加到下一个簇上。该标志被分配一个唯一的标志号,它连同位置信息一起存储在匹配簇的标志组中。该位置信息包括但不限于,x和y位置坐标,与前一坐标的距离,偏移量信息等。现存簇可包括标志计数,它指示与簇相关联的标志的数量。如果匹配簇位于局部库616中,则在局部库616中的簇可由属于每个簇的标志数,即标志计数再分类。
匹配尺寸部件606和匹配油墨部件608一起称为匹配特性部件605。匹配特性部件605筛选现存簇,以识别不匹配。在本发明的其它方面中,匹配特性部件605可包括任何合适的标志和现存簇的特性或特征,提供用于有用的比较,以识别不匹配。此外,替换方面中,匹配特性部件605可包括尺寸和油墨尺寸特性中的一个或两者,或两者都不包括。
在文档中的所有或充分的标志被析取之后,可删除二维表,并且现存簇可被转换到一个全局库618。另外,二维表612中的簇在文档602的各个页面的处理之后能被转化为全局库618。全局库618包括来自文档的现存簇。先前与现存簇一起存储的一些信息可被删除,例如油墨尺寸,因为对于编码和解码而言并不需要。通常,簇的位置信息和位图图像使用适合该信息类型的压缩方案来编码。一旦经过编码,位置信息和位图图像就组合成一个文件或位流。另外,为了适当解码这个文件,库中的簇的数量应当包括在该文件或位流中。从而,该位流应当最终包括库、标志顺序以及位置信息或偏移量。可以理解的是库也可称为字典,簇可称为符号,以及标志顺序可称为符号顺序。
同样,在所有的标志已被移去之后,文档可被称为残余图像。对于有损压缩,该残余图像可被删除。然而,对于无损压缩,以及甚至某些有损实现,残余图像被压缩并以位流传送。残余图像可能看起来是简单的噪音干扰,并且因此对于极大多数压缩方案来说压缩质量可能很差。然而,利用现存簇的压缩方案极大地提高了残余图像的压缩。可进行文档布局的附加分析,以进一步增加文档的压缩。例如,可用水平线识别簇和标志,来减少所需的位置信息的量。另外,可把共同出现的簇序列结合为一组合的簇或单词(例如,“the”)。
根据发明的一个替代方面,OCR部件接收库、标志顺序和位置信息,并且从簇中获得和识别字符。OCR部件可把一个或多个簇组合成一单个字符。这是因为若干簇能表示一个字符,例如“e”,并且在不同的簇上也是。另外,OCR部件能利用已接收的信息从已接收到的信息中产生单词、句子和段落。字符和/或单词随后由类似于公共ASCII库的一个库表示,进一步提高压缩。
在解码结束时,位流被解码来重建一重建的文档。如果压缩是无损的,则重建文档和文档完全相同。即使压缩是有损的,重建的文档一般和文档基本相似。可以理解的是重建的文档可以是一表征码或层,它与至少一个其它图像或层结合,来形成文档图像。
已相对于具有白色背景上的黑色文本的文档而一般地描述了聚类***600。然而,可以理解的是聚类***600能被用于文档图像,以识别任何颜色的簇,包括但不限于黑色。
鉴于上述示出的示例性***,可根据本发明实现的方法将参照图11的流程图来更好地理解。虽然,出于简单解释的目的,按一系列块来显示和描述方法,但是要理解是本发明不限于块的次序,根据本发明,一些块可与这里所示和所述的其它块以不同次序和/或同时出现。而且,根据本发明,不是所有说明的块都被要求来执行方法。
本发明可在计算机可执行指令的一般上下文环境中描述,例如通过一个或多个部件执行的程序模块。通常地,程序模块包括例行程序、程序、对象、数据结构等,它们执行特定任务或实现特定的抽象数据类型。程序模块的功能性一般可以组合或分布,这按不同的实施例的需要。
图11是根据本方明的一个方面的聚类方法的流程图。在1102上提供了文档。该文档是二元文本图像并包括一定量的文本信息。文档可能是一任何尺寸的单页或多页文档。另外,文档可能另一个文档图像的的层或组成成分。文档中的文本信息一般是白色背景上的黑色,然而,文本信息也可以包括黑色背景上的白色(如反白显示)。
在1104上从文档中获得下一个的标志或标志。可以采用一个适合的方法或算法来获得标志,如关于图1和图6所描述的方法。另外,可对标志计算盒尺寸、油墨尺寸、重新调整大小的图像和重心。也可对标志计算其它的特性或特征。盒尺寸包括标志的x尺寸和y尺寸。另外,设置一指向簇表1112的起始的指针,以便于处理。如果在1106上不能获得标志,指示出文本中没有剩余的标志待被处理,则方法在1108结束或退出。从而,在1108,文本中的标志已经被适当地处理和聚类。如果能获得标志,则在1110上检索现存簇中的下一个簇。该下一个一般从簇表1112中获得。簇表1112保存着现存簇。如果在1114没有现存簇的簇,则在1116建立一个新的簇。
新簇的建立指示出标志不能正确地匹配现存簇,或该标志是从文档中析取的第一标志。以上计算的标志的特性或特征部分地包括新的簇。新的簇通常被加到簇表1112的底部,因为新的簇(作为新的)通常地不像其它现存簇那样可能被碰到。
否则,在1118执行盒尺寸匹配或比较。盒尺寸匹配将标志的x尺寸和y尺寸与下一个标志的x尺寸和y尺寸比较。一个二维表可被用来保存现存簇的盒尺寸信息,如关于图7所描述和描写的那样。典型地,对比较设置一阈值,如百分之十,或一固定尺寸的变化(如1或0),以允许标志和下一个簇的尺寸中有微小偏差。另外,可调节该阈值,来增加该方法的速度和/或减少发现的簇数目,从而增加压缩。如果标志的盒尺寸不能匹配下一个簇的盒尺寸(如,不在百分之十内),则该方法在1110继续,获得新的下一个簇。
如果在下一个簇的盒尺寸和标志的盒尺寸之间存在匹配,则在1120执行油墨尺寸匹配。油墨尺寸匹配把标志的油墨尺寸与下一个簇的油墨尺寸比较,如果它们是相同的和/或基本相似,则认为是匹配。油墨尺寸是在标识中的黑像素的数目对所有像素数目的百分比。从而,可出现标志的油墨尺寸和下一个簇的油墨尺寸之间的偏差,并且只要标志的油墨尺寸和下一个簇的油墨尺寸都在一个可接受的阈值内(即,基本相似),则被认为是一个匹配。阈值确定可接受的值的范围,并能够被调节来允许较大的或较小的油墨尺寸变化。另外,阈值能够被调节来增加方法的速度和/或减少发现的簇的数目,从而增加压缩。如果标志的油墨尺寸不能匹配下一个簇的油墨尺寸(如,不在百分之十内),也被称为是不匹配,则方法在1110继续,获得新的下一个簇。
如果在下一个簇的油墨尺寸和标志的油墨尺寸之间存在匹配,则在1122执行特征映射匹配。特征映射匹配把标志的重新调整大小的图像与下一个簇的重新调整大小的图像比较,如果它们是相同的和/或基本相似,则认为是匹配。重新调整大小的图像是标志或簇的3乘3的像素表示,也可称为重新调整大小的标志图像。把重新调整大小的图像计算为一个较小的版本,例如,标志或簇的3乘3的像素图像。重新调整大小的图像一般在像素尺寸上远远小于标志的图像。多种算法可以被用来将标志图像缩小成重新调整大小的标志图像。其中一个算法是将标志分成9个区域(3乘3),以热点为中心,并按比例缩放以覆盖标志的范围,并计算标志的平均数,当它们与这些区域的每一个相交时。另一个算法是从位图中移除或删除若干像素。然而,其它的算法可以被用来生成重新调整大小的图像,而仍然按照本发明。
从而,执行在标志的重新调整大小的图像的像素和下一个簇的重新调整大小的图像的像素之间的比较。如果所有9个像素或在其变化(阈值)匹配(如7或更多的匹配),标志的重新调整大小的图像和下一个簇的重新调整大小的图像就被认为是匹配。如用盒尺寸匹配和油墨尺寸匹配一样,可调整特征映射匹配的阈值,来增加方法的速度和/或减少发现的簇数目,从而增加压缩。如果标志的重新调整大小的图像不能匹配下一个簇的重新调整大小的图像,也被称为不匹配,则方法在1110继续,获得新的下一个簇。
如果下一个簇的重新调整大小的图像和标志的重新调整大小的图像之间存在匹配,则在1124执行xor油墨匹配。xor油墨匹配计算标志的位图和下一个簇的位图之间的距离,也称为xor距离。对标志和下一个簇生成错误映射。错误映射是标志的位图图像和下一个簇的位图图像之间的按位异或,并以重心为中心。接着,通过对每个不匹配位添加1来计算距离。如果距离小于一阈值,那么就存在匹配。如果距离大于一阈值,则是不匹配,该方法就在1110处继续,获得新的下一个簇。可按需设置和/或调节阈值。
如果对于xor油墨匹配存在匹配,则在1126执行“wan”匹配。该wan匹配,称为加权与非(WAN),类似于1124上的xor油墨匹配而被执行。该wan匹配也产生错误映射,但当计算加权时把从黑到白的错误与从白到黑的错误区分对待。如果距离大于一阈值,就是不匹配,该方法就在1110处继续,获得新的下一个簇。如果距离小于一阈值,那么就存在匹配,该方法就继续执行到1128,在那里标志被添加到下一个簇。
该标志被添加到下一个簇,在其中于该簇相关联的标志数加1。此外,位置信息和一唯一的标识符可以与下一个簇一起被存储。簇表1112可被再分类,使得由该方法首先采用更多地公共的现存簇。在标志在1128处被加到下一个簇后,该方法在1104继续,获得另一下一个标志。
可以理解的是在本发明的一个替换方面中,可把现存簇被存储在局部和/或全局库中。该方法能在局部库中存储的现存簇上执行,直到处理了当前页为止。接着,在通过该方法继续处理下一个页之前,可把局部库中的簇与全局库中的簇相合并。在全局和局部库中的基本相似的簇可以被合并成一单个簇,而不相似的簇则被加到全局库。
图12是根据本发明的一个方面的使用计算有效的聚类的一个图像编码***的框图。该***包括表征码离析器1202,前台后台分隔器1204,聚类部件1205,表征码编码器1206,前台编码器1208,后台编码器1210和组合部件1212。
表征码离析器1202接收文档图像,并产生一表征码。文档图像是文档的数字化表示。文档图像可具有一页或多页。文档图像一般从一文档中被扫描。文档图像能够有任何的分辨率,一般被表示为“点每英寸”(dpi)。例如,传真文档通常用大约100-200dpi的分辨率。此外,文档图像能够有任何的像素尺寸或尺寸。例如,文档图像可以是640像素乘480像素和/或A4尺寸。
由表征码离析器1202所生成的表征码随后被用来将文档图像分割或划分成前台和后台图像。表征码,也称为表征码图像,是二元图像,其中每个像素的值确定该像素是属于前台图像还是属于后台图像。表征码离析器1202生成减少表征码、前台图像和后台图像的组合尺寸的表征码。
许多方法可以被用来生成减少表征码、前台图像和后台图像的组合尺寸的表征码。相似区域或具有小的或减少数目的变化的区域趋向于比具有具有较大变化的区域能更好地压缩。例如,单色图像的压缩将好于在强度和颜色中变化大的图像的压缩。对于一个具有N像素的文档图像,有2N个可能的表征码。从而,有可能仔细检查每个可能的表征码,并确定哪一个产生最小的整体的组合图像。然而,仔细检查每个可能的表征码在计算上开销很大。小的子区域,例如2乘2个像素或4乘4个像素,可分析变化。子区域的像素能够被分成前台或后台,来减少在前台和后台中的变化。然后可把子区域合并到一起来生成减少表征码、前台图像和后台图像的组合尺寸的表征码。可使用能减少表征码、前台图像和后台图像的整体尺寸的其它方法。
前台后台分隔器1204接受来自表征码离析器1202的表征码和文档图像。前台后台分隔器1204用表征码来从文档图像中产生前台图像和后台图像。对于文档图像的每一个像素,参考对应的表征码的像素。根据该表征码的对应的像素,把该像素分配给前台图像或后台图像。例如,如果表征码的对应的像素是”1”,则把像素分配给前台图像。相反地,如果表征码的对应的像素是“0”,则把像素分配给后台图像。可以理解的是不管是“0”还是“1”指示的前台或后台是可以变化的。
后台图像和前台图像现在有空洞或空区域,在那里像素针对着其它图像。能够以任何方法处理空区域,来减少前台和后台图像的整体压缩尺寸。一个方法是将这些空的区域填满无关紧要的像素。无关紧要的像素被选出来,以便增加压缩和减少图像的尺寸。其它的方法可以被使用,并仍然按照本发明。
另外,前台图像和后台图像相互脱节。然而,这可能导致可视的边缘以一个最终的重新结合的文档图像而再现。很多方法可以用来减少这些可视边缘。前台和后台图像可被伸展一定数量的像素到彼此之中,使它们不再脱节。从而,可减少重新结合的文本图像中的可视边缘。
聚类部件1205接收来自表征码离析器1202的表征码,并产生簇的库、表征码顺序和位置信息。聚类部件1205从表征码中一次一个地发现和移除标志。聚类部件1205使用至少一个存储现存簇的特性的表。从一文档中析出的标志的特性迅速与至少一个表中的现存簇的特性相比较。此比较不需要标志位图对现存簇位图的费时的和开销大的逐位比较,来识别不匹配。如果此标志的特性未能和表中的任何特性相匹配,则此标志被添加为一个新簇,避免了逐位比较。
可能在所述至少一个表中的一个表中的簇的一个特性是x尺寸和y尺寸。x尺寸和尺寸提供了现存簇的尺寸信息。标志的x尺寸和y尺寸能迅速地与现存簇的x尺寸和y尺寸比较,以识别不匹配。在所述至少一个表中的一个表中的簇的另一个特性是油墨尺寸。通常油墨尺寸指在标志或簇中相对于所有像素的黑像素的比率。类似地,标志的油墨尺寸能够迅速地与现存簇的油墨尺寸相比较,以识别不匹配。在所述至少一个表中的一个表中的簇的最后一个特性是一个简化的标志或图像。简化的标志或图像是标志和/或簇的像素尺寸简化版本位图。同样地,简化的标志能迅速与现存簇的简化标志或简化图像比较,以识别不匹配。这些特性关于图1和图6而被更进一步详细地讨论。
如果任何现存簇保持没有由使用所述至少一个表的比较不匹配,则标志的位图与剩余的现存簇的位图相比较。该位图比较是逐位比较。通过逐位比较来计算一个距离,如“xor”距离。距离越短,匹配越接近。其它适合的距离计算也能够被使用,并仍然按照本发明。如果识别了最匹配的现存簇,则标志被加到属于该匹配的现存簇的一组标志。
表征码编码器1206接收来自聚类部件1205的表征码、簇的库、标志顺序,以及位置信息,并编码表征码,以从表征码中产生压缩位或压缩的表征码位流。任何编码技术可用于表征码编码器1206。然而,可以理解的是表征码是二元的,并且因而应选择利用表征码的二元特征的压缩方案。典型地,使用二值无损压缩方案来编码表征码。然而,可使用其它压缩方法或方案。
能被用来编码此表征码的一个典型的压缩方案是CCITT(国际电话和电报咨询委员会)。CCITT当前被认为是ITU-T国际电信联盟-电信部门(在10994中改名)),它是一个标准组以及对于传真/调制解调器通信的一个无损压缩技术的名字。这个类型的压缩更适合工作于黑色和白色文本和图像,二值图像。对于老版本的V.42bis的典型压缩率是4∶1,而对于基于Lempel-Ziv-Jeff-Heath(LZJH)压缩算法的新版本的V.44 2000,压缩率是6∶1。
前台编码器1008接收前台图像,并编码前台图像,以从前台图像产生压缩位或压缩的前台图像位流。任何编码技术能用于前台编码器1208。例如,可使用渐进波长编码或渐进变换编码来编码前台图像。
后台编码器1210接收后台图像,并编码此后台图像,以从后台图像中产生压缩位或压缩的后台图像位流。例如,可使用渐进波长编码或渐进变换编码来编码后台图像。
如上所述,前台图像和后台图像有无关紧要的区域。无关紧要区域能被许多方式所处理。一个方法是用数据填充此无关紧要区域并随后使用一个规范的压缩技术。最简单的方法将用对于该图像的平均像素值来填充图像的此无关紧要区域。然而,此方法在表征码边界造成尖锐的间断。此方法还增加了给定的峰值信噪比(PSNR)所需要的比特率,并在接近表征码或无关紧要区域的边界处产生值得注意的振荡。另外一个方法是使用最接近的非表征码(或非无关紧要区域)像素的颜色来给每个像素涂颜色。一个标准的形态算法允许通过仅仅通向表征码下的Voronoi-填充的无关紧要区域的所有像素上的两条通路来执行处理。随后,当前台或后台图像被重建时,被重建图像是经低通的,并且已知的像素随后被恢复到它们的正确值。如果低通滤波器的截断频率很低,会出现尖锐边缘,导致所需的比特率的增加和在接近边界处的值得注意的振荡。
组合部件1212接收来自表征码编码器1206、前台编码器1208和后台编码器1210的压缩位,并将位组合成一输出流或者输出文件。组合部件1212可在输出文件中包括头部信息,标识或提供诸如编码类型、字典、库等之类的信息,这些信息能被解码器用来重建文档图像。
为了对本发明的各种方面提供额外的上下文环境,图12和随后的讨论意在提供一个可能合适的计算环境1210的一个简洁的,通用的描述,在其中本发明的各种方面可能被实现。可以理解的是计算环境1210只是一个可能的计算环境,并且不意图用可采用本发明的环境来限制计算环境。虽然已在上面可运行于一个或多个计算机上的计算机可执行指令的一般上下文环境中描述了本发明,但是可认识到也可能以与其它程序模块的组合来实现本发明,和/或实现成硬件和软件组合。通常地,程序模块包括例行程序、程序、部件、数据结构等,它执行特定任务或实现特定的抽象数据类型。而且,可以理解的是发明方法可实践于其它计算***配置,包括单处理器或多处理器计算机***、小型机、大型机、以及个人计算机、手持计算设备、基于微处理或可编程的用户电子设备等,它们的每一个可操作上与一个或多个的相关设备相连接。本发明的说明的各方面也可实践于分布式计算环境中,在那里由通过一通信网络连接的远程处理设备执行特定任务。在一个分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。
图13说明可能的硬件配置来支持在此描述的***和方法。可以理解的是尽管一个独立的体系结构被举例说明,但是任何合适的计算环境根据本发明能被使用。例如,根据本发明可采用的计算体系结构包括但不限于独立的、多处理器、分布式、客户/服务器、小型机、大型机、巨型机、数字和模拟结构。
参考图13,用于实现本发明的各种方面的一个示例性环境1310包括计算机1312,它包括处理单元1314,***存储器1316,以及***总线1318,***总线将包括***存储器的各种***部件耦合到处理单元1314。处理单元1314可以是各种商业上可获得的处理器中的任何一种。双微处理器和其它多处理器体系结构也能作为处理单元1314被使用。
***总线1318可以是若干类型总线结构中的任何一种,包括存储器总线或存储控制器,***总线,和使用各种商业上可获得的总线体系结构中的任何一种的局部总线。计算机存储器1316包括只读存储器(ROM)1320和随机存取存储器(RAM)1322。基本输入/输出***(BIOS),包含存储于ROM1320中的帮助在计算机1312内的元素之间转移信息的基本例行程序,如在启动时。
计算机1312还可包括硬盘驱动器1324,磁盘驱动器1326,例如,从一个可拆卸磁盘1328上读取或写入,以及光盘驱动器1330,例如用于读取CD-ROM盘片1332,或读取或写入其它光学媒体。硬盘驱动器1324、磁盘驱动器1326,和光盘驱动器1330通过硬盘驱动器接口1334,磁盘驱动器接口1336,和光盘驱动器接口1338分别连接到***总线1318。计算机1312一般包括至少一些形式的计算机可读媒体。计算机可读媒体可以是任何可用媒体,它能由计算机1312存取访问。作为例子,但不是限制,计算机可读媒体可包括计算机存储媒体和通信媒体。计算机存储媒体包括以任何方法或技术实现的用于诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的存储的易失性和非易失性、可拆卸和不可拆卸的媒体。计算机存储媒体包括但不限于,RAM,ROM,EEPROM,闪存或其它存储技术,CD-ROM,数字通用磁盘(DVD)或其它磁性存储设备,或任何其它能被用来存储期望信息和能被计算机1312存取访问的媒体。通信媒体一般具体化为计算机的可读指令,数据结构、程序模块或在已调数据信号中的其它数据,例如一个载波或其它传送机械装置和包括任何信息传输媒体。术语“已调数据信号”意为以编码信号中的信息的方式使其一个或多个特性得到设置或改变的信号。作为例子,但不是限制,通信媒体包括有线媒体,例如有线网络或直接电缆连接,以及无线媒体,例如声音,RF,红外线和其它无线媒体。以上任何的结合也应包括在计算机可读媒体之内。
许多程序模块可存储在驱动器和RAM 1322中,包括操作***1340,一个或多个应用程序1342,其它程序模块1344,和程序不可中断数据1346。在计算机1312中的操作***1340可以是许多商业上可获得的操作***中的任何一个。
用户可通过键盘1348和例如一个鼠标1350的指示设备输入命令和信息到计算机1312中。其它输入设备(未显示)可能包括麦克风,红外线远程控制,操纵杆,游戏手柄,圆盘式***天线,扫描仪等。这些和其它的输入设备常常通过串行端口接口1352连接到处理单元1314,串行端口接口1352连接到***总线1314,但也可通过其它接口连接,例如并行端口,游戏端口,通用串行总线(“USB”),红外线接口等。监视器1354,或其它类型的输出设备通过一接口也连接到***总线1318上,例如通过视频适配器1356。除监视器之外,计算机一般还包括其它***输出设备(未显示),例如扬声器,打印机等。
计算机1312可操作于使用逻辑和/或物理连接到一个或多个远程计算机的网络环境中,远程计算机例如远程计算机1358。远程计算机1358可以是工作站,服务器计算机,路由器,个人计算机,基于娱乐应用的微处理器,对等设备或其它普通网络节点,一般包括关于计算机1312所描述的许多或所有元件,尽管为了简洁的目的,仅有一个存储器存储设备1360被举例说明。描述的逻辑连接包括局域网(LAN)1362和广域网(WAN)1364。这种网络环境在办公室、企业范围的计算机网络、企业内部互联网、因特网中是很普通的。
当在LAN网络环境中使用时,计算机1312通过网络接口或适配器1366连接到局域网1362。当在WAN网络环境中使用时,计算机1312一般包括调制解调器1368,或连接到LAN上的通信服务器,或有其它手段在WAN 1364上建立通信,WAN例如因特网。调制解调器1368,可以是内置或外置的,通过串行端口接口1352连接到***总线1318。在连网环境中,相对于计算机1312而描述的程序模块或其一部分,可存储在远程存储器存储设备1360中。可以理解的是所示的网络连接是示例性的,可使用在计算机之间建立通信连接的其它方法。
图14是样本计算环境1400的示意性框图,本发明可与之相互作用。***1400包括一个或多个客户端1410。客户端1410可以是硬件和/或软件(例如,线程,过程,计算设备)。***1400还包括一个或多个服务器1430。服务器1430也可以是硬件和/或软件(例如,线程,过程,计算设备)。服务器1430能提供线程执行环境,通过使用本发明去执行转换。在一个客户端1410和一个服务器1430之间的一个可能的通信可以适应于在两个或多个计算机过程之间传送的形式。***1400包括通信架构1450,它被使用来促进客户端1410和服务器1430之间的通信。客户端1410操作上连接到一个或多个客户数据存储器1460,它能被使用来存储客户1410本地信息。类似的,服务器1430可操作上连接到一个或多个服务器数据存储器1440,它能被使用来存储服务器1430的本地信息。
上述已经被描述的包括本发明的例子。当然,为了描述本发明的目的描述每个可能的部件或方法论的联合是不可能的,不过本领域的普通技术人员可认识到本发明的许多更进一步的组合和改变是可能的。从而,本发明意在包括所有类似的变更,修正和变化,并都出于权利要求书的精神和范围内。此外,就术语“包括”的范围来说,或被使用在详细描述中,或被使用在权利要求书中,此术语类似于术语“包含”,用作为权利要求书中的过渡单词。