专利名称:给数字图像分段和产生紧凑表示的制作方法
技术领域:
本发明一般地涉及数字图像处理领域,并且更具体地涉及产生数字图像的高等级描述。
背景技术:
图像分段是将图像划分为或分开为语义上或视觉上连贯的区域。每个区域是具有类似属性或多个属性的一组连通的像素。对于单色图像,用于分段的一个基本属性是亮度幅度,而对于彩色图像是颜色分量。
与不断增加的计算处理能力相结合的扫描技术的激增导致文档分析系统领域中的许多进展。这些系统可用于,通常借助于OCR技术,从扫描文档中提取语义信息。这种系统还可以用于通过根据页的每个部分的内容选择性地使用适当的压缩方法改进文档图像的压缩。改进的文档压缩使其自身适合于诸如存档和电子分发的应用。
分段是用于文档图像分析的处理阶段,其中在可以执行高等级处理诸如区域分类和布局分析之前,必须首先将低等级像素分段为原语对象。布局分析根据关于文档布局的一些预定规则,将原语对象分类为已知的对象类型。典型地,布局分析不分析原始扫描图像数据,而是工作于可替代的数据组,诸如来自页的分段的斑点或连通组分。除了各个对象属性之外,布局分析还可以使用对象分组,以便确定它们的分类。
下面描述用于图像分段的若干已知方法。
阈值划分是用于分段的最简单的方法,并且如果将处理的图像是两级的(例如,黑白文档图像),其可能是快和有效的。然而,如果图像是复杂的,具有多个亮度或颜色等级的区域,在二值化过程中可能丢失这些区域中的某一些。更复杂的阈值划分技术采用自适应或多级阈值划分,其中按局部等级执行阈值估计和二值化处理。然而,这些方法仍然不能正确地分段对象。
基于聚类(clustering)的方法,诸如k均值和向量量化,往往产生好的分段结果,但是它们是需要多轮的迭代算法。因此,这种方法可能慢,并且难以实现。
分裂和合并图像分段技术基于四元树数据表示,其中如果原始图像段的属性不是一致的,则将正方形图像段分裂为4个象限。如果发现4个相邻的正方形一致,将这些正方形合并为由这4个相邻的正方形构成的单个正方形。分裂和合并处理通常开始于全图像等级。因此,仅在缓冲了整个页之后才能开始处理,这需要高的存储器带宽。另外,这种方法往往是计算密集的。
区域生长是一种用于图像分段的公知方法,并且是概念上最简单的方法之一。将具有类似属性或多个属性的相邻像素分为一组,以便形成段区域。然而,在实际中,必须对生长模式施加相当复杂的约束以便达到可接受的结果。已有的区域生长方法可能具有若干不理想的效果,因为这些方法往往偏向于初始种子的位置。不同的种子选择可能带来不同的分段结果,并且如果种子点位于边缘上,则可能出现问题。
与不断增加的计算处理能力相结合的扫描技术的激增导致在文档分析系统领域内的许多进展。这些系统可用于,通常借助于OCR技术,从扫描文档中提取语义信息。这种技术被用在数目日益增加的应用内,诸如自动表格阅读,并且还可以用于通过根据页的每个部分的内容选择性地使用适当的压缩方法,改进文档的压缩。改进的文档压缩使其自身适合于诸如存档和电子分发的应用。
某些文档分析系统执行布局分析,以便将文档分为根据它们的内容分类的区域。典型地,布局分析不分析原始扫描的图像数据,而是工作于可替代的数据组,诸如来自页的分段的斑点或连通组分。除了各个对象属性之外,布局分析还可以使用对象分组,以便确定它们的分类。
一般地,执行页的二值分段以便产生用于布局分析的数据,并且这可以通过简单地给原始图像设置阈值获得。这种二值分段的一个优点是分段的对象位于有助于进行布局分析的简单的包含分层结构内。不幸的是,许多复杂的颜色文档的布局不能完全以二值图像完整地表示。从颜色到二值图像转换中固有的信息内容的减少可能导致重要特征的退化,并且甚至导致文档的详细结构的丢失。
因此页文档分析的颜色分段在保持页的内容方面具有优点,但是也给其带来了附加的复杂性。首先,分段分析本身变得更棘手,并且增加了处理要求。第二,由于分段的页对象不形成包含分层结构,复杂化了对这些分段页对象的分析。这限制了布局分析的准确性和有效性。
文档布局分析系统还可以采用用于验证文档区域的文本分类的技术。这些方法中的某一些使用像素和、阴影(shadowing)和投影轮廓的直方图分析。这些方法通常是不可靠的,因为难以将健壮的统计量应用于这种方法,并且难以为可能是单行或许多行并且不知道文档中的字符集和文本对齐的文本进行调整。
发明内容
根据本发明的第一个方面,提供了一种给包括多个像素的数字图像分段的方法。该方法包括步骤从数字图像产生像素的多个块;和以单轮的方式使用像素块为每个块生成至少一个连通组分。生成步骤又包括将像素块分段为至少一个连通组分,每个连通组分包括空间上相连并且语义相关的一组像素;将该块的该至少一个连通组分与从以前处理过的至少一个其它块分段出的至少一个连通组分合并;并且以紧凑的形式存储该块的连通组分在图像中的位置。
语义相关的像素可以包括颜色类似的像素。
产生步骤可以包括子步骤将数字图像布置成多个带,每个带包括预定数目的连贯的像素行;并且一个接一个地缓冲和处理这些带。该处理步骤又包括对每个当前缓冲的带执行的子步骤将当前带布置成像素的多个块;和为生成步骤一个接一个地缓冲和处理当前带的块。
存储子步骤可以包括存储M-1个二值位图,其中M个连通组分在一个块内,M是整数。
存储子步骤可以包括存储索引图。
分段子步骤可以包括为每个块估计若干代表性的颜色;将每个块量化为代表性的颜色;和从每个量化的块形成连通组分。分段子步骤还可以包括将形成的连通组分的子集合并。合并子步骤可以包括收集连通组分的统计量。统计量可以包括边界框、像素计数、边界长度和平均颜色中的一个或多个。该方法还可以包括步骤将被认为是噪声的所形成的连通组分删除。噪声可以包括具有低于预定阈值的像素计数和高于另一个预定阈值的边界长度与像素计数比的连通组分。合并步骤可以包括将块的连通组分与左边和上边的块的连通组分合并;和更新合并的连通组分的统计量。统计量可以包括边界框、像素计数、填充比率和平均颜色中的一个或多个。
估计子步骤可以包括基于每个块中的像素的YUV数据,形成与多个颜色库有关的直方图;基于直方图统计量对每个块分类;和基于块分类合并库颜色,以便形成代表性颜色。该方法还包括在一轮中为每个像素形成索引图的步骤。量化步骤可以包括将非空库量化为代表性颜色;创建到代表性颜色的库映射;和使用库映射将索引图重新映射为代表性颜色。形成子步骤可以包括基于Y值确定亮度带;基于U和V值确定颜色列;将像素颜色累积到映射库;和递增映射库的像素计数。确定亮度带的步骤还可以包括亮度带抗混叠。确定颜色列的步骤还可以包括颜色列抗混叠。
合并步骤可以包括为接触左和上边界的当前块内的各个连通组分执行的下面的子步骤寻找沿着公共边界触及当前连通组分的一列连通组分;和确定合并的最佳候选。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面的方法中的任意一个方面给包括多个像素的数字图像分段。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面的方法中的任意一个方面给包括多个像素的数字图像分段的计算机程序。
根据本发明的另一个方面,提供了一种自动产生颜色文档的紧凑表示的方法。该方法包括步骤在一轮中按块光栅顺序,将颜色文档页的数字图像分段为连通组分;基于整个页的紧凑的、连通组分统计量,使用布局分析将页的数字图像划分为前景和背景图像;在前景图像的至少一个部分遮蔽了背景图像的位置,在一个轮中以块光栅顺序修复背景图像的至少一个部分;及合并前景图像和背景图像以形成紧凑的文档。
该方法还可以包括对背景图像下采样的步骤。此外,该方法可包括压缩背景图像的步骤。压缩步骤可以涉及有损压缩。另外,该方法可以包括对有损压缩的背景图像的不同压缩。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面的方法中的任意一个方面自动产生颜色文档的紧凑表示。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面的方法中的任意一个方面自动产生颜色文档的紧凑表示的计算机程序。
根据本发明的另一个方面,提供了一种分析包括多个像素的数字图像的方法。该方法包括步骤将数字图像分段为对象,其中以多于两个标签表示分段;为每个对象提供一组属性;为对象的子集,使用包含测量确定在共享边界的相邻对象间是否存在父亲-孩子关系;基于对象的属性,形成共享共同父亲的多组对象;和根据它们的属性和分组给对象分类。
可以使用每个对象周围的边界框和描述对象间的触及关系的信息确定包含。如果两个对象在边界接触,并且一个对象的边界框完全包含另一个对象的边界框,则该对象包含该另一个对象。
形成组步骤可以包括考虑共同父亲的一列孩子中的孩子对象的对;和使用对象属性,确定每个对是否应被分组到一起。仅可以考虑对具有相同父亲的一列孩子对象中的相邻对象进行分组。可以基于边界框和颜色信息给对象分组。
可以根据组内对象的文本类质量测试将一组对象分类为文本。用于文本类质量的测试可以包括为每个对象识别表示对象位置的单个值;形成这些值的直方图;和按照直方图的属性识别文本。
本发明还可以包括步骤根据其它对象的属性将它们添加到对象的文本分类组,而不管它们的父亲-孩子属性如何。
根据本发明的另一个方面,提供了一种分析包括文档页的多个像素的数字图像的方法。该方法包括步骤给数字图像分段,以便基于图像形成对象;形成对象的组;和确定每个对象组是否表示文本。确定步骤包括根据对象在页上的位置,为每个对象识别单个值;形成这些值的直方图;和按照直方图的属性识别文本。
直方图的属性可以是具有多于指定的对象数目的直方图中的库内的对象的总数。可替换地,属性可以是直方图内的计数的平方和。
表示对象位置的每个对象的单个值可以是对象的边界框的边。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据按照前面任意一个方面的方法,分析包括多个像素的数字图像。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据按照前面任意一个方面的方法分析包括多个像素的数字图像的计算机程序。
根据本发明的另一个方面,提供了一种修复包括多个像素的数字图像的方法。该方法包括步骤从数字图像产生多个像素块;和按照光栅顺序为至少一个块改变至少一串(run)像素的像素值。改变步骤包括对每个块执行的如下的子步骤确定与一个对象有关的块内的一串像素的开始和结束像素,该串包括被分组到一起的相邻的像素;根据该串外的像素的像素值,修改所述串内的对象的至少一个像素值;和确定该块内不相应于对象的像素的活性(acitivity)测量值;以及如果该块的活性测量值小于预定的阈值,将具有至少一串像素的每个块内的所有像素值改变为设置值。
该方法还包括步骤根据扩大的对象之外的像素的像素值,修改对象之外扩大的对象像素的至少一个像素值。
该产生步骤可以包括子步骤将数字图像布置为多个带,每个带包括预定数目的连贯的像素行;和一个接一个地缓冲和处理这些带。该处理步骤可以包括对每个当前的缓冲带执行的如下的子步骤将当前带布置为多个像素块;和为改变步骤一个接一个地缓冲和处理当前带的块。
所述串包括块的像素的光栅行中的相邻像素。
该方法还包括使用基于块的压缩方法压缩各个块的步骤。基于块的压缩方法可以是JPEG。该方法还可以包括使用另一种压缩技术进一步压缩基于块压缩的块的步骤。
可以根据对象之外的像素的像素值,使用根据串的左边和右边的像素值内插的值,或来自串的左边的一个像素的值,修改对象的至少一个像素值。
可以将具有至少一串像素的每个块的所有像素值改变为以前处理过的块的平均值,或该块内的可视像素的平均值。
该方法还可以包括步骤如果未发现扩大的对象像素串的结尾,则将像素的颜色值设置为不相应于扩大的对象像素串左边的对象的像素的颜色值。
像素值可以是颜色值。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面任意一个方面的方法,修复包括多个像素的数字图像。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面任意一个方面的方法,修复包括多个像素的数字图像的计算机程序。
根据本发明的另一个方面,提供了一种改变包括多个像素的数字图像的像素值的方法,这些像素的至少一部分相应于图像中的一个对象,该方法包括步骤将数字图像布置为多个带,每个带包括预定数目的连贯的像素行;和依次一个接一个缓冲和处理这些带。该处理步骤可以包括对每个当前的缓冲带执行的如下的子步骤将当前带布置为多个像素块;和依次一个接一个处理这些块。块处理步骤包括针对每个块的如下子步骤确定块内不相应于图像内的对象的像素的活性测量值;如果活性测量值小于预定的阈值,则将该块内的所有像素的像素值改变为一个像素值;使用JPEG压缩该块;和使用另一种压缩方法压缩JPEG压缩的块。
每个带可包括数字图像的16行像素,块包括16×16个像素,并且以流水线方式执行压缩步骤。
改变块内的所有像素的颜色值的步骤可以包括将像素的颜色值设置为在不相应于紧挨着扩大的对象像素串的左边和右边的对象的像素间进行线性内插而获得的颜色值,扩大的对象像素是串外并且与串相邻的像素。
该方法还可以包括步骤将块内的像素的颜色值设置为不相应于块内的对象的像素的平均颜色值。
该方法还可以包括步骤将块内的像素的颜色值设置为之前的块的平均颜色。
可以通过扩大定义对象的位置的掩蔽,确定扩大的对象的像素。
其他的压缩方法可以包括ZLIB。
像素值可以是颜色值。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面任意一个方面的方法,改变包括多个像素的数字图像的像素值,这些像素的至少一部分相应于图像中的对象。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面任意一个方面的方法,改变包括多个像素的数字图像的像素值的计算机程序,这些像素的至少一部分相应于图像中的对象。
根据本发明的另一个方面,提供了一种给包括多个像素的数字图像分段的方法。该方法包括步骤从数字图像产生多个像素块;和以一轮的方式使用像素块为每个块生成至少一个连通组分。生成步骤又包括将像素块分段为至少一个连通组分,每个连通组分包括一组空间上相连并且语义上相关的像素;将块的至少一个连通组分与从以前处理过的至少一个其他块分段出的至少一个连通组分合并;和以紧凑形式存储该块的连通组分在图像中的位置。
语义相关的像素可以包括颜色类似的像素。
存储子步骤可以包括存储M-1个二值位图,其中M个连通组分在一个块内,M是整数。
存储子步骤可以包括存储索引图。
分段子步骤可以包括为每个块估计若干代表性的颜色;将每个块量化为代表性的颜色;和从每个量化的块形成连通组分。分段子步骤还可以包括将形成的连通组分的子集合并。合并子步骤可以包括收集连通组分的统计量。统计量可以包括边界框、像素计数、边界长度和平均颜色中的一个或多个。该方法还可以包括步骤将被认为是噪声的所形成的连通组分删除的步骤。噪声可以包括具有低于预定阈值的像素计数和高于另一个预定义阈值的边界长度与像素计数比的连通组分。合并步骤可以包括将块的连通组分与左边和上边的块的连通组分合并;和更新合并的连通组分的统计量。统计量可以包括边界框、像素计数、填充比率和平均颜色中的一个或多个。
估计子步骤可以包括基于每个块中的像素的YUV数据,形成与多个颜色库有关的直方图;基于直方图统计量对每个块分类;和基于块分类合并库颜色,以便形成代表性颜色。该方法还包括在一轮中为每个像素形成索引图的步骤。量化步骤可以包括将非空库量化为代表性颜色;创建到代表性颜色的库映射;和使用库映射将索引图重新映射到代表性颜色。形成子步骤可以包括基于Y值确定亮度带;基于U和V值确定颜色列;将像素颜色累积到映射库;和递增映射库的像素计数。确定亮度带的步骤还可以包括亮度带抗混叠。确定颜色列的步骤还可以包括颜色列抗混叠。
合并步骤可以包括为接触左和上边界的当前块内的各个连通组分执行的下面的子步骤寻找沿着公共边界接触当前连通组分的一列连通组分;和确定合并的最佳候选。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面的方法中的任意一个方面给包括多个像素的数字图像分段。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面的方法中的任意一个方面给包括多个像素的数字图像分段的计算机程序。
根据本发明的另一个方面,提供了一种自动产生颜色文档的紧凑表示的方法。该方法包括步骤在一轮中以块光栅的顺序,将颜色文档页的数字图像分段为连通组分;基于整个页的紧凑的、连通组分的统计量,使用布局分析将页的数字图像划分为前景和背景图像;在前景图像的至少一个部分遮蔽了背景图像的位置,在单轮中以块光栅的顺序修复背景图像的至少一个部分;和合并前景图像和背景图像形成紧凑的文档。
该方法还可以包括对背景图像下采样的步骤。另外,该方法可包括压缩背景图像的步骤。压缩步骤可以涉及有损压缩。另外,该方法可以包括对有损压缩的背景图像的不同压缩。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面的方法中的任意一个方面自动产生颜色文档的紧凑表示。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面的方法中的任意一个方面自动产生颜色文档的紧凑表示的计算机程序。
根据本发明的另一个方面,提供了一种分析包括多个像素的数字图像的方法。该方法包括步骤将数字图像分段为对象,其中以多于两个标签表示分段;为每个对象提供一组属性;为对象的子集,使用包含测量确定在共享边界的相邻对象间是否存在父亲-孩子关系;基于对象的属性,形成共享共同父亲的多组对象;和根据对象的属性和分组对它们分类。
可以使用每个对象周围的边界框和描述对象间的触及关系的信息确定包含。如果两个对象在边界接触,并且一个对象的边界框完全包含另一个对象的边界框,则该对象包含该另一个对象。
形成组步骤可以包括考虑共同父亲的一列孩子中的孩子对象的对;和使用对象属性,确定每个对是否应被分组到一起。仅可以考虑为具有相同父亲的一列孩子对象中的相邻对象进行分组。可以基于边界框和颜色信息对对象分组。
可以根据组内对象的文本类质量测试将一组对象分类为文本。用于文本类质量的测试可以包括为每个对象识别表示对象位置的单个值;形成这些值的直方图;和按照直方图的属性识别文本。
本发明还可以包括步骤根据其它对象的属性将它们添加到对象的文本分类组,而不论的它们的父亲-孩子属性如何。
根据本发明的另一个方面,提供了一种分析包括文档页的多个像素的数字图像的方法。该方法包括步骤给数字图像分段,以便基于图像形成对象;形成对象的组;和确定每个对象组是否表示文本。确定步骤包括根据对象在页上的位置,为每个对象识别单个值;形成这些值的直方图;和按照直方图的属性识别文本。
直方图的属性可以是直方图中具有多于指定的对象数目的库中的对象的总数。可替换地,属性可以是直方图内的计数的平方和。
表示对象位置的每个对象的单个值可以是对象的边界框的边缘。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据按照前面任意一个方面的方法,分析包括多个像素的数字图像。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据按照前面任意一个方面的方法,分析包括多个像素的数字图像的计算机程序。
根据本发明的另一个方面,提供了一种修复包括多个像素的数字图像的方法。该方法包括步骤从数字图像产生多个像素块;和为至少一个块,按照光栅顺序改变至少一串像素的像素值。改变步骤包括对每个块的执行如下的子步骤确定块内与一个对象有关的一串像素的开始和结束像素,该串包括被分组到一起的相邻的像素;根据该串外的像素的像素值,修改所述串内的对象的至少一个像素值;和确定不相应于该块内对象的像素的活性测量值;以及如果块的活性测量值小于预定的阈值,将具有至少一串像素的每个块内的所有像素值改变为设置值。
该方法还包括步骤根据扩大的对象之外的像素的像素值,修改对象之外的扩大的对象像素的至少一个像素值。
该产生步骤可以包括子步骤将数字图像布置为多个带,每个带包括预定数目的连贯的像素行;和一个接一个地缓冲和处理这些带。该处理步骤可以包括对每个当前缓冲的带执行的如下的子步骤将当前带布置为多个像素块;和为改变步骤一个接一个地缓冲和处理当前带的块。
所述串包括块的像素的光栅行中的相邻像素。
该方法还可以包括使用基于块的压缩方法压缩各个块的步骤。基于块的压缩方法可以是JPEG。该方法还可以包括使用另一种压缩技术进一步压缩基于块压缩的块的步骤。
可以根据对象之外的像素的像素值,使用根据串的左边和右边的像素值内插的值,或来自串的左边的一个像素的值,修改对象的至少一个像素值。
可以将具有至少一串像素的每个块的所有像素值改变为以前处理过的块的平均值,或该块内的可视像素的平均值。
该方法还可以包括步骤如果未发现扩大的对象像素串的结尾,则将像素的颜色值设置为不相应于扩大的对象像素串左边的对象的像素的颜色值。
像素值可以是颜色值。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面任意一个方面的方法,修复包括多个像素的数字图像。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面任意一个方面的方法,修复包括多个像素的数字图像的计算机程序。
根据本发明的另一个方面,提供了一种改变包括多个像素的数字图像的像素值的方法,这些像素的至少一部分相应于图像中的对象,该方法包括步骤将数字图像布置为多个带,每个带包括预定数目的连贯的像素行;和依次一个接一个缓冲和处理这些带。该处理步骤可以包括用于每个当前的缓冲带的如下的子步骤将当前带布置为多个像素块;和依次一个接一个处理这些块。块处理步骤包括针对每个块的如下子步骤确定块内不相应于图像内的对象的像素的活性测量值;如果活性测量值小于预定的阈值,则将该块内的所有像素的像素值改变为一个像素值;使用JPEG压缩该块;和使用另一种压缩方法压缩JPEG压缩的块。
每个带可包括数字图像的16行像素,块包括16×16个像素,并且以流水线方式执行压缩步骤。
改变块内的所有像素的颜色值的步骤可以包括将像素的颜色值设置为通过在不相应于紧挨着扩大的对象像素串的左边和右边的对象的像素间进行线性内插而获得的颜色值,扩大的对象像素是串外并且与串相邻的像素。
该方法还可以包括步骤将块内的像素的颜色值设置为不相应于块内的对象的像素的平均颜色值。
该方法还可以包括步骤将块内的像素的颜色值设置为在前块的平均颜色。
可以通过扩大定义对象的位置的掩蔽,确定扩大的对象的像素。
其他的压缩方法可以包括ZLIB。
像素值可以是颜色值。
根据本发明的另一个方面,提供了一种包括处理器和存储器的装置,用于根据前面任意一个方面的方法,改变包括多个像素的数字图像的像素值,这些像素的至少一部分相应于图像中的对象。
根据本发明的另一个方面,提供了一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据前面任意一个方面的方法,改变包括多个像素的数字图像的像素值的计算机程序,这些像素的至少一部分相应于图像中的对象。
下面参考附图描述若干实施例,其中图1是提供根据本发明的实施例的分段、分析和压缩数字图像的概要的高层流程图;图2是图1的颜色分段步骤的流程图;图3是图2的获得下一个像素的步骤的详细流程图;图4是图1的布局分析步骤的流程图;图5是图1的产生压缩输出图像的步骤的流程图;图6是包括字符“i”和相关联的连通组分的图像的方框图;图7是可以实施本发明的实施例的通用计算机系统的方框图;图8是根据本发明的实施例的用于为扫描的输入页产生压缩输出的系统的方框图;图9是图10的颜色连通组分分析和斑点统计步骤的详细流程图;
图10是图2的颜色分段步骤的流程图;图11是图10的颜色量化步骤的详细流程图;图12是图9的形成新斑点或生长已有斑点的步骤的详细流程图;图13是图10的贴片(tile)间合并步骤的流程图;图14是图13的处理最佳斑点和CC对的步骤的流程图;图15是示出了斑点合并处理的例子的方框图;图16是示出了当前贴片和两个相邻贴片的状态间的合并的方框图;图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”的文档的区域的图示;图27(a)示出了图27(b)的图像的边界框的底的值的直方图;图27(b)示出了对从图像中分段出的部分的不规则布置的边界框的选择;图27(c)示出了图27(d)的页的相应的直方图;图27(d)示出了用于文本组的页上的边界框的布置;图28是颜色斑点划分系统的方框图;图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的将像素和第二调色板相关联的步骤的流程图;图45是示出了图44的映射两级贴片的步骤的详细流程图;图46是示出了图44的映射多颜色贴片的步骤的详细流程图;图47是图11的分析直方图和对贴片分类的步骤的流程图;图48是示出了对所有操作条件进行更新之前和之后的CC和斑点候选计数的表;图49是示出了合并斑点和CC候选的例子的方框图;图50是示出了图10的后合并处理的步骤的流程图;图51是根据本发明的另一个实施例的系统的方框图;图52是图51的颜色分段模块的方框图;和图53是示出了设置点的Delaunay三角测量和Voronoi图的图。
具体实施例方式
公开了用于处理和压缩数字图像的方法、装置和计算机程序产品。在下面的描述中,提出了若干特定细节,包括具体的无损压缩技术、颜色空间、空间分辨率、贴片大小等。然而,本领域的技术人员从该公开可以明了,可以做出修改和/或替代而不脱离本发明的范围和精神。在其他情况中,可能忽略特定的细节以便不会使得本发明模糊不清。
在附图的任意一个或多个内引用具有相同附图标记的步骤和/或特征的情况下,出于本说明书的目的,这些步骤和/或特征具有相同的功能(多个)或操作(多个),除非出现相反的意图。
在本说明书的上下文中,单词“包括”具有开放式的,非排他的含意“主要包括但不必仅包括”,但既不是“基本上由...组成”,也不是“仅由...组成”。词“包括(comprising)”的变体,诸如“包括(comprise)”和“包括(comprises)”,具有相应的含意。
详细说明的内容被组织为如下的章节。
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关联像素与第二调色板2.2.1.4.1映射两级贴片
2.2.1.4.2映射多级贴片2.2.2颜色CC分析和斑点统计量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工业实用性在下文中以上述顺序详细描述以上部分。
1概述本发明的第一个实施例是运行在通用计算机上的处理。图1提供了分段、分析和压缩数字图像的处理100的高层概述。处理100的输入优选地是分辨率为300dpi的RGB图像。然而,适当地修改处理100,也可以输入其他颜色空间的图像。同样,可以输入不同分辨率的图像。在步骤110,使用对输入图像进行的单轮处理,执行图像到连通组分(CC)的颜色分段。使用单轮处理,可以迅速地处理数字图像,从而可以处理大量高分辨率的图像。连通组分是全部连接在一起(接触)的类似的颜色像素的组。例如,形成以白纸上的黑墨水打印的字母“i”的主体或主干的像素构成一个连通组分,“i”上的点构成另一个CC,且围绕字母“i”作为背景的任何白像素构成另一个CC。图6示出了包括字符“i”的图像600,其中黑点表示黑像素,并且白点表示白像素。示出了“i”的主干CC 610和“i”的点CC 612。还示出了空白像素的另一个结果CC 614。
作为分段的一部分,计算描述CC的紧凑信息和统计量。对数字下采样,并且直接提供到步骤130。在步骤120,使用这个紧凑CC信息和统计量对CC执行布局分析。该布局分析确定页上的特征的布局,页例如包括文本字符、段落、表和图像。在步骤130,使用该布局信息创建一个或多个前景图像。一般地由在步骤120中识别出的文本字符构成前景图像,并且优选地是二值图像。可以用输入分辨率(例如,300dpi)存储前景图像,而可以用较低的分辨率(例如,150dpi)存储背景图像。前景元素被从背景图像中去除。然后,使用不同的技术压缩前景和背景,并且以复合图像格式存储。复合格式可以是,例如,PDF文档。下面在单独的章节中描述颜色分段、布局分析和压缩数字图像中的每一个。
用于本发明的实施例的一个应用是分析来自扫描仪的光栅像素图像,并且尽可能多地提取高层信息。根据该信息,可以生成页的高层描述。为了该目的,系统可以被设计为通过以硬件执行像素分析,更快地运行。然而,从下面描述中将明了,该系统也可以完全以软件实现。另外,虽然下面描述了特定输出格式PDF,可以对系统进行修改,以便利用其他页描述格式作为输出格式。
图8是根据本发明的实施例的用于生成扫描输入文档810的压缩或紧凑表示850的系统800的高层方框图。系统800包括前端模块820、中间模块830和后端模块830。前端模块820是优选地以硬件实现的基于贴片的前端,但是可以是ASIC和由嵌入式处理器执行的软件的组合。贴片光栅顺序是一种基于贴片的处理方法,其中每次一个地从上到下和从左到右处理贴片。该模块对输入图像执行颜色分段,并且将贴片的背景图像提供给后端模块840(由箭头指示)。前端模块820以整页的分辨率(例如,300dpi)执行颜色连通组分分析。前端模块820还从数字图像810生成连通组分(CC),并且将CC提供给执行布局分析的中间模块。该模块可以完全以软件实现。前端模块820向模块840提供下采样图像。将中间模块830的输出提供给后端模块840,其执行基于贴片的修复,并且生成数字图像810的紧凑表示。与前端模块820类似,后端模块840可以至少部分地以带有在嵌入式处理器和ASIC上执行的软件的硬件实现。该紧凑输出可以包括较低空间分辨率的数字图像和较高分辨率的前景位图。
前端模块820执行涉及检查每个像素的所有分析工作,并且形成语义上相关的像素的区域的颜色CC。来自前端模块820的输出是关于页上的所有颜色CC的信息。用于每个CC的信息包括边界框、平均颜色、接触列表和像素数目。当为了最佳性能以硬件实现算法时,算法应当是在带宽方面有效的。对于图像处理任务,算法不随机访问整个扫描页。而是,算法每次工作于小贴片上。
2颜色分段图2更详细地示出了图1的步骤110。图2中所示的处理工作于输入图像的贴片上,这些贴片的大小,例如,可以是32×32像素。可以按光栅顺序处理贴片-即,从左到右,和从上到下。第一个被处理的贴片是输入图像的左上角的贴片,并且最后处理的贴片是输入图像的右下角的贴片。出于效率的目的进行这种贴片划分。
在步骤210,获得将处理的输入图像的下一个贴片。可以使用指针信息有效地访问每个贴片。参考图3更详细地描述步骤210。步骤220、230、240和250的处理局限于当前贴片的像素。在步骤220,可选择地对当前贴片执行去半色调处理。例如,以该方法处理的扫描输入文档可能包含来自打印处理的半色调。半色调可以使得难以进行后续分析,并且可能不能很好地压缩。因此,可以使用本步骤220检测和去除半色调。仅作为例子,可以进行下面的去半色调处理。去半色调处理可以工作于16×16的贴片上。可以将每个32×32RGB像素的输入贴片划分为4个16×16的贴片,并且分别处理每一个。半色调检测可以每次工作于一个颜色通道(即,R、G和B)上。如果在任何通道中检测到半色调,可以在所有通道上执行半色调去除。为了检测半色调,将贴片中的每个像素量化为4个等级。输入颜色通道值的范围是0-255。该4个等级是范围0-63、64-127、128-191和192-255。可以测量彼此邻接的像素间的等级变化数。可以水平地和垂直地进行这种测量。
由于半色调通常为小点,该检测要求改变数是大的,并且水平改变数小于垂直改变数。这防止将由文本字符的边缘引起的等级的改变检测为半色调。可以指定用于检测的阈值。如果在16×16的贴片中检测到半色调,可以使用,例如,空间模糊去除半色调。半色调检测器还可以使用来自以前分析过的贴片的信息。例如,如果接触当前贴片的贴片中具有在贴片中检测到的半色调,当前贴片可能也包含半色调。当使用该信息时,可以调整阈值,以便放松半色调检测要求或使其更严格。
在步骤230,如果当前贴片的颜色空间已经不在YUV颜色空间中,则执行转换,以便将贴片内的像素转换到YUV颜色空间。因此,该步骤可选择地取决于输入图像的颜色空间。虽然在该实施例中使用YUV颜色空间,可以采用其他颜色空间而不脱离本发明的范围和精神。用于从RGB转换到YUV的转换公式可以与,例如,独立JPEG组(IJG)JPEG库中所使用的相同。
在步骤240,对当前贴片执行形成连通组分(CC)的颜色分段,并且计算关于贴片中的CC的紧凑信息和统计量。颜色CC包括一个或多个语义上相关的跨一个或多个贴片的斑点。例如,语义上相关的斑点可以有类似的颜色。斑点是单个贴片中具有类似着色特性的一组连通的像素。斑点划分是一种颜色分段并且形成连通组分表示的处理。每个CC具有如下的统计量像素大小、平均颜色、二值掩蔽、斑点边界长度和边界框。图10更详细地示出了该步骤。
在步骤250,对当前贴片下采样,以便形成背景图像的相应部分。例如,可以使用库式滤波器在两个维度上以2∶1下采样,但是可以采用其他方法而不脱离本发明的范围和精神。在决定步骤260,进行检查,以便确定是否剩余任何更多的贴片要处理。如果步骤260的结果为否(即,已经处理了图像中的所有贴片),处理终止。然而,如果步骤260的结果为是,处理在步骤210处继续。
2.1获得输入图像的下一个贴片图3详细示出了图2的步骤210。处理210工作在输入数字图像的带上。图像的带是若干连贯的图像行。每个带的高度可以与贴片的高度相同。因此,例如,图像的第一个32行形成一个带,并且在该情况下,图像的第一个带;下面的32个图像行形成下一个带,并且依此类推。每个带的宽度可以是输入图像的宽度。在决定步骤310,进行检查以便确定是否需要读入另一个带。当已经处理了当前带的所有贴片时,需要读入另一个带。另一次需要读入另一个带是第一次执行步骤310,这是因为此时还未读带。如果步骤310的结果为是,处理在步骤320继续。否则,处理在步骤340处继续。
在步骤320,从输入图像读取数据的下一个带,例如,从盘读入存储器内的缓冲器。存储器缓冲器可以布置为在连续的存储器位置包含带的每行像素。另外,保持每行的开始的存储器位置的记录即,每个带行的指针。在步骤330,初始化确定要访问的贴片-当前贴片-的变量tx(即,设置为0)。在步骤340,将行指针信息更新为指向当前贴片。调用图3的处理210的其他处理通过引用在步骤340更新的行指针信息获得新的贴片。行指针信息可以包括每个贴片行的指针。因此,每个贴片可以有32个行指针。给定行指针指向给定行中贴片的第一个像素的存储器位置。通过沿着指向每个相应带线的开始的指针之外的(贴片宽度*tx)个存储器位置步进每个行指针,可以更新行指针信息。在步骤350,将变量tx增加1,从而下一次调用图3的处理210时,将另一个贴片输入处理。
2.2形成贴片的颜色分段颜色斑点划分是一种以贴片光栅顺序工作的图像分段算法。斑点是单个贴片内的相同量化标签的像素的连通组。每个斑点具有如下的统计量像素大小、平均颜色、二值掩蔽、斑点边界长度和边界框。其目的是将文档图像分段为一组非重叠的连通组分,其中每个连通组分包含连通的语义相关的像素的集合,例如,特定文本字母内的像素集合形成一个连通组分,围绕着该文本的图像的一部分内的像素形成另一个连通组分等。
图28是具有4个模块2810、2820、2830和2840的颜色斑点划分系统2800的方框图。颜色量化模块2810接收输入的颜色贴片(例如,对于RGB颜色空间,24位的像素值),确定贴片中主颜色的数目,并且根据主颜色量化贴片。将主颜色和量化的贴片作为输入提供给连通组分和斑点统计模块2820,其在单个光栅轮中对量化的贴片执行8路连通组分分析。在同一个光栅轮中,收集斑点统计量,诸如像素数、平均颜色、斑点边界长度和边界框信息。将斑点和统计量作为输入提供给贴片内合并模块2830,其通过基于颜色、大小和边界统计量合并斑点,减少贴片内的假的和小的斑点的数目。将来自该模块2830的结果斑点和统计量作为输入提供给贴片间合并模块2840,其根据斑点统计量,将当前贴片内的斑点与相邻贴片(左边和上边)内的接触斑点分组在一起,以便形成作为系统2800的输出的连通组分。将参考图10的处理进一步对其进行描述。
图10是用于将图像分段为颜色CC的步骤240的详细流程图。作为分段处理的一部分,计算描述CC的紧凑信息和统计量。通过接收来自步骤230的像素的输入贴片开始分段处理。在决定块1005,进行检查以便确定该贴片是否是平坦的。如果贴片是平坦的,处理在步骤1040处继续到贴片间合并阶段。否则,处理在步骤1010处继续。在步骤1010,对贴片执行颜色量化。颜色量化使用三个主要步骤找到贴片内的主颜色,而不考虑像素几何形状1)颜色减少,2)贴片分类,和3)寻找主颜色和量化。通过颜色直方图方法确定输入贴片内的主颜色。通过根据主颜色量化输入贴片像素,创建颜色标签的量化贴片。主颜色是被人类观看者察觉为是贴片内的视觉上明显的颜色。该算法适合于硬件(HW)实现,并且以软件(SW)实现也相当快。
步骤1020在单个光栅轮中对量化的贴片执行8路连通组分分析以便形成斑点。在步骤1030,执行贴片内合并处理,以便通过基于颜色、大小和边界信息合并斑点,减少贴片内假的和小的斑点的数目。在步骤1040,执行贴片间的合并。将量化的贴片中识别出的斑点与当前贴片左边和上边的两个以前处理的贴片内所识别出的斑点进行比较,以便合并为颜色CC。从而,一个颜色CC包括跨越一个或多个贴片的一个或多个类似着色的斑点。这样,除了边界信息之外,颜色CC具有针对斑点的相同类型的上述统计量。
在步骤1050,将当前贴片内的斑点和这些斑点形成的颜色CC存储在紧凑的贴片状态数据结构中。这个贴片状态不包含像素数据。贴片状态仅包含将新创建的斑点合并到已有的颜色CC内所需的信息。可以用高的存储器效率执行贴片间合并处理1040,因为在分段处理的任意阶段,对于与当前贴片合并来说,仅需两个或更少的贴片状态。另外,步骤1050更新每个颜色CC的接触列表。接触列表描述哪些连通组分彼此邻接。在前端中作为颜色CC分析的一部分产生该接触列表。图2中的步骤240产生接触列表。然后处理终止。
2.2.1颜色量化颜色量化的目的是将整个颜色输入减少到缩减的颜色集合,以便为连通组分产生做准备。为了找到主颜色,对每个输入像素进行一次检查,并且产生直方图。本发明的实施例采用这样的直方图,其使用亮度作为第一个维度,并且组合两个色度分量作为第二个维度。这与根据三个颜色分量的轴将库划分为三维的传统的颜色直方图不相类似。本发明的实施例产生有助于更容易地找到好的主颜色的紧凑的直方图。根据直方图的特性,将贴片分类为三类-平坦的、两级的、多颜色的。根据贴片分类产生用于贴片的调色板。在产生调色板后,根据像素映射到的调色板颜色,给每个像素分配量化标签。该方法设计为用于高速处理和低的存储器需求。平坦的贴片仅具有一个量化标签。两级贴片具有两个量化标签。多颜色贴片具有多至4个量化标签。
图10的颜色量化步骤1010在图11中进一步展开。此处给出图11中的每个步骤的简要描述,并且跟着给出每个步骤的详细描述。在步骤1110,使用第一调色板同时形成2D直方图和索引图。图40提供了步骤1110的进一步的细节。在步骤1120,根据2D直方图的统计量执行贴片分类。图47提供了步骤1120的进一步细节。在步骤1130,基于贴片分类形成第二调色板。这涉及压缩第一调色板。图41提供了步骤1130的进一步细节。在步骤1140,将像素与第二调色板相关联。将索引图重新映射到第二调色板颜色中的一个,以便产生具有量化标签的量化贴片。然后,处理终止。
2.2.1.1形成2D直方图和第一调色板图40更详细地示出了图11的步骤1110的处理。通过预定的映射方法,以像素光栅顺序在一轮中将输入的整个颜色贴片量化为索引图。图29(a)示出了输入的原始贴片的例子,和产生的结果索引图。映射可以配置为针对组织为8个亮度带和4个颜色列的32个颜色库。每个颜色库可以具有颜色累积器、像素计数器和注册ID,以放置在该库内的第一个像素的YUV值设置该注册ID。可以根据2D直方图的状态改变预定的映射方法。结果,没有针对每个库的预定颜色且像素颜色顺序可以影响第一调色板的组成。最后每个非空库的平均颜色构成第一调色板。图29(c)示出了产生的调色板,其中上部和下部的灰部分代表空库。
在步骤4010,从贴片获得具有颜色值(YUV)的像素。在步骤4015中执行预定的映射,以便将像素映射到亮度带和颜色库(即,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执行用于两级贴片轮廓增强的可选择的“带抗混叠”。在步骤4020,如果允许进行“带抗混叠”,并且映射带和上边的带或下边的带之间的亮度差未超过指定的阈值(例如,16),在步骤4025执行“带抗混叠”。否则处理在步骤4035处继续。
在步骤4025,执行带抗混叠。尝试找到上边带或下边带内的接近的非空库。候选库是以band-1或band+1映射的一个。在下面两个条件的任意一个中,以候选库替换映射库(bin_mapped)1候选库非空,并且其注册ID(Y)距离小于16,并且bin_mapped为空。
2候选库和bin_mapped两个不为空,并且Y比bin_mapped的注册ID(Y)更接近候选库的注册ID(Y)。
步骤4035到4055执行“库抗混叠”处理。步骤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处继续。否则,处理在步骤4045处继续。在决定步骤4040中,进行检查以便确定映射误差是否超过了指定的阈值,该阈值是针对该带的最大库误差。
如果映射误差在阈值内,处理在步骤4060处继续。否则,执行步骤4055以寻找更接近的库。在步骤4055,从列0开始搜索,并且向前移动到映射带中的列3。当满足下面的条件中的任何一个时终止搜索1发现空库,和2发现具有在允许的阈值内的映射误差的库如果步骤4055的搜索在条件1上终止,将(YUV)值注册在空库内,并且该空库替代bin_mapped。如果两个条件都失败了,以具有最小映射误差的库替代bin_mapped。然后处理在步骤4060处继续。
在步骤4035的测试之后,如果映射库为空,处理在步骤4045处继续。在决定步骤4045中,进行检查以便确定已经发现了同一个带内的接近的非空库。步骤4045从列0到3搜索,试图寻找满足以前定义的映射误差阈值的非空库。如果找到这种库,在步骤4052中以空库替代bin_mapped,并且然后处理在步骤4052处继续。否则如果步骤4052返回假(否),以步骤4050中的颜色(YUV)值记录bin_mapped,并且处理在步骤4060处继续。
在步骤4060,将像素颜色(YUV)累积在映射库(bin_mapped)内,并且递增bin_mapped内的像素计数。在步骤4065,为当前像素记录bin_mapped的位置。在步骤4070,进行检查以便确定贴片中是否存留有更多的像素。如果结果为是,处理在步骤4010处继续。否则,它在步骤4075处继续,其中每个非空库的像素计数除以其累积的颜色。每个非空库的平均颜色形成第一调色板。然后处理终止。
2.2.1.2分析直方图和对图像分类贴片分类是发现贴片内的主颜色的方法。基于调色板内的分布和颜色变化,将贴片分类为3组平坦的、两级的和多颜色的。平坦的贴片具有对于人类的眼睛来说在视觉上不变的颜色,并且通常形成2D直方图内的一个簇。平坦调色板具有多至3个颜色,并且颜色变化小。两级贴片具有两个独特的颜色,并且通常在2D直方图内垂直排成列。两级调色板具有跨越少数亮度带的颜色,但是每个亮度带内的颜色变化是小的。多颜色贴片通常在2D直方图内的大量库上展开。多颜色调色板包括前两个测试失败的贴片。
图11的步骤1120分析2D直方图中的库分布和颜色特性,并且从而对贴片进行分类。将贴片分为3组平坦的、两级的和多颜色的。图47更详细地示出了步骤1120的处理。在步骤4710中,执行平坦贴片测试。如果结果为是,在步骤4712中将贴片分类为是平坦的。否则,在步骤4720执行第二个测试,以便确定贴片是否是两级的。如果两级测试的结果为是,在步骤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处继续,测试贴片是否被分类为是两级的。如果测试结果为是,处理移动到步骤4140。在步骤4010,产生两种颜色的调色板。否则,如果步骤4130返回假,处理在步骤4150处继续。在步骤4150中,产生多颜色调色板。
2.2.1.3.1产生两颜色调色板图42提供了步骤4140中产生用于两级贴片的两种颜色调色板的进一步的细节。目的是形成对比颜色表示该图像。由于打印中的半色调和配准(registration)误差,表示原始的两种对比颜色的颜色一般会受到污染。结果,前景和背景区域的平均颜色不是原始图像的良好表示。排除过渡区域内的颜色使得图像看上去更锐化了。
在步骤4210中,选择最暗的和最亮的颜色,以便形成主颜色的初始调色板。在步骤4220中,使用6个被最多填充的库产生库列表。根据像素计数从该调色板中找到顶部的6个库。步骤4230到步骤4270顺序地处理列表中的颜色。在步骤4230中,从列表中获得下一个库颜色C。决定步骤4240测试颜色C是否已经包括在初始调色板内,或该颜色是否离两个极端太远。如果结果为是,忽略该颜色,并且处理返回步骤4230,取得下一个库颜色进行处理。如果步骤4240的结果为否,处理在步骤4250处继续。决定步骤4250测试该颜色是否适合于合并到初始调色板。适合于合并的颜色是位于初始调色板的任何颜色附近的颜色。如果步骤4250的测试结果为是,基于与加权的像素计数的较近的曼哈顿颜色距离,将该颜色合并到初始调色板颜色中的一个。将C的像素计数增加到要合并到的调色板颜色的像素计数。处理在步骤4270处继续。如果步骤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处继续检查是否有更多的颜色要处理。否则,处理进入步骤4370。
步骤4370测试是否可将另一种颜色添加到调色板。如果步骤4370返回真(是),处理在步骤4380处继续。如果下面的伪码内的测试为真,在步骤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处继续。
如果步骤4370中的测试为假,处理在步骤4390处继续。在步骤4390中,将库颜色C与具有最近的曼哈顿颜色距离的调色板颜色合并。以加权的像素计数合并颜色,并且将C的像素计数增加到要合并到的调色板颜色的像素计数。处理在步骤4395处继续。如果在步骤4395没有更多的颜色要处理,处理终止。
2.2.1.4将像素与第二调色板相关联一旦发现了主颜色,将贴片内的像素量化为主颜色之一。与用于连通组分分析的主颜色列表一起产生量化映射。针对每个组的量化处理如下1)平坦的-不量化;2)两级的-将调色板重新映射到两个主颜色之一,或寻找一个阈值将原始像素二值化;和3)多颜色的-将调色板重新映射到主颜色之一。
二值化产生更锐化的轮廓,但是由于二值化需要找到合适的阈值,所以要花费较长时间。寻找阈值的步骤是1)在亮度通道上执行一阶导数,2)识别边缘像素,和3)使用来自边缘像素的平均亮度值作为阈值。边缘像素是这样的像素,其中它们周围的3×3一阶导数输出全部在预定阈值以上。
图44提供了图11的步骤1140的进一步的细节。步骤4410测试贴片是否被分类为是两级的。如果测试结果为是,处理在步骤4420处继续。在步骤4430中,映射多颜色的贴片。否则,处理在步骤4430处继续。在步骤4420映射两级贴片。
2.2.1.4.1映射两级贴片图45提供了步骤4420的进一步的细节。整个处理4420以量化误差检查将所有非空库映射到第二调色板内的两种颜色。步骤4510到步骤4570对每个非空库执行量化和误差检查。如果没发现大的量化误差,处理在库量化之后,将所有像素重新映射到第二调色板。如果发现了大的量化误差,将贴片重新分类为是多颜色的,并且使其进行多颜色贴片映射。下面解释映射两级贴片的细节。
步骤4510确定是否需要轮廓增强,并且为进行轮廓增强的库选择用于量化的优选的极端颜色。如果两个调色板颜色的一个像素计数超出了另一个4倍,则需要轮廓增强。设第二调色板内的两个颜色具有第一颜色C1和像素计数P1以及第二颜色C2和像素计数P2。如果(P1/P2)或(P2/P1)大于5,则需要轮廓增强,并且将OUTLINE_ENHANCE设置为真。优选的极端颜色可以是具有较小像素计数的颜色。
步骤4515得到具有像素计数pCnt的下一个非空库。步骤4520计算两个颜色的量化误差。计算到两个调色板颜色的曼哈顿距离(D1和D2),并且将较小的一个定义为minDist。MinDist是量化误差。然后处理在决定步骤4525继续,检查量化误差是否太大。下面的伪码定义量化误差太大时的条件(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处继续。在步骤4540中,将当前库添加到额外主颜色列表。然后处理在步骤4570处继续。如果步骤4525中的测试为假,处理在决定步骤4530处继续,检查额外主颜色列表是否为空。如果该列表不空(否),处理转换到步骤4570,查看是否有更多的非空库要处理。否则,如果步骤4530的结果为是,处理在步骤4545处继续,确定是否需要轮廓增强,以及两个距离是否接近。以下面的伪码给出测试条件
OUTLINE_ENHANCE&&
abs(D1-D2)<BILEVEL_THRESHOLD_MARGIN其中阈值可以是BILEVEL_THRESHOLD_MARGIN=16。
如果步骤4545中的测试为真,处理在步骤4550处继续。在步骤4550中,将库量化为优选的颜色。处理在步骤4570处继续。否则,处理在步骤4555处继续,基于D1和D2将库量化为较接近的颜色。然后处理在步骤4570处继续,检查是否有更多的非空库要处理。如果有更多的非空库,处理返回步骤4515。如果没有更多的非空库,处理在步骤4560处继续,检查额外主颜色列表是否为空。其确定在库量化处理过程中是否有大的量化误差。如果该列表为空,处理在步骤4575处继续,并且根据步骤4550或4555中的库映射(视合适情况而定),将所有像素重新映射到两个调色板颜色之一。然后,处理终止。如果在步骤4560中列表非空,处理在步骤4565处继续,将一个额外的颜色添加到调色板。将额外主颜色列表内的具有最高像素计数的库选择为第三调色板颜色。在步骤4430中,将贴片重新映射为多颜色贴片。然后处理终止。
2.2.1.4.2映射多级贴片在图46上展开图44的步骤4430。步骤4610得到下一个非空库。步骤4620将库量化为调色板颜色之一。这可以基于最近的曼哈顿颜色距离进行。步骤4630检查是否有更多的非空库要处理。如果步骤4630中的测试为真,处理在步骤4610处继续。如果步骤4630中的测试返回否,处理在步骤4640处继续。在步骤4640中,根据步骤4620中的库映射,将所有像素重新映射到调色板颜色之一。然后,处理终止。
2.2.2颜色CC分析和斑点统计量图10的本处理1020采用来自以前步骤的量化贴片,并且形成斑点。每个斑点具有下面的统计量边界框、大小、均值颜色、位掩蔽、斑点边界长度。以快速和有效的方式在单个光栅轮中形成斑点。以光栅顺序,将属于相同颜色类的量化贴片中的相邻像素分为一组,以便形成“串”。在每串(段)的结尾,将串与上一行上的接触段(在8路连通性方面)比较,以便进行生长或合并。如果将被给予斑点标签的串触及相同类的斑点,则发生生长。相反,当相同类的两个斑点相接触时发生合并。如果不可能出现生长,则形成新的斑点。在每串的结尾处更新斑点统计量。
图36是使用示例的6×6的输入贴片3610的颜色斑点划分处理3600的图示。对具有若干颜色的输入贴片3610应用颜色量化,以便产生量化贴片3620。量化贴片3620包含相应于主颜色类的类标签。在该情况下,贴片中有两个主颜色,因此给出类标签0和1。在一行中,通过将相同类的相邻标签分组在一起以便形成串,开始连通组分分析。例如,在图36中,第一行的前4个“0”形成一个串,并且接下来的两个“1”形成另一个串。通过将来自量化贴片3620中的连续行的相同类的串结合在一起形成斑点。贴片3630示出了贴片内的串。当将当前段与上行中的接触段进行比较时,有三种可能的行为1通过将当前段添加到已有斑点,生长该斑点;2通过将两个斑点的统计量统一为一个合并两个斑点;3通过使用当前段初始化斑点形成新斑点。
贴片3640示出了得到的斑点,斑点0和斑点1,其中斑点0具有外部边界框,并且斑点1具有内部边界框。在形成串和斑点的同时累积斑点的统计量。所以,在该处理阶段的结尾,每个斑点具有针对斑点0和斑点1的图36中所示的所有统计量。位掩蔽3650和3660是代表性的。实际上不在该阶段形成示例性的位掩蔽3650和3660。将量化的颜色用作斑点的均值颜色。可替换地,可以通过累积斑点中的实际像素值而不是量化的颜色确定斑点的均值颜色。这给出更准确的均值颜色。再次地,斑点统计量可以包括大小、均值颜色、边界长度、边界框和位掩蔽。
图9更详细地示出了图10的步骤1020,步骤1020采用循环结构从量化贴片中形成斑点,从上到下地一次处理一个贴片行。在步骤910中,获得当前贴片行以便进行处理。在步骤920中,形成相同量化标签的像素的连续的段。这可以通过记录其开始和结束位置进行。该段是当前段Sc。开始位置是前一个段的结束位置右边的像素。在新贴片行的情况下,开始位置是该行的第一个像素。结束位置是在从左到右在当前贴片行上一个像素接一个像素地检查量化标签的过程中,在量化标签发生变化之前的最后的像素。在当前贴片行在检测到变化之前结束的情况下,结束位置是该行的最后的像素。出于稍后的重新估计斑点的颜色的目的,在从其开始到结束位置的检查过程中,累积原始的全色贴片内的段内的每个像素的YUV值。可替换地,可以使用该段的量化颜色,而不进行颜色重新估计。
在步骤930中,使用该段形成新斑点或生长已有斑点。图12提供了该步骤的进一步的细节。在决定步骤940中,进行检查以便确定该行中是否剩余有未处理的像素。如果决定步骤940返回真(是),处理返回步骤920。直到处理了当前贴片行内的所有像素,这才发生。如果步骤940返回假(否),处理在步骤950处继续。在决定步骤950中,进行检查以便确定是否剩余未处理的行。如果步骤950返回真(是),处理在步骤910处继续。直到没有更多的未处理的贴片行,这才发生。如果步骤950返回假(否),处理终止;量化贴片内的每个像素已经分配到斑点。
2.2.2.1形成斑点图12更详细地示出了步骤930。图12的处理采用图9的步骤920中识别出的当前段Sc作为输入。在步骤1205中,将变量k初始化为1。该值引用与当前段Sc连接的当前贴片行之上的贴片行的第k个段Sk。优选地,连接是8路连接。在步骤1210中,执行Sk和Sc间的比较。在决定步骤1215中,进行检查以便确定Sc和Sk是否是相同的类。如果两个段Sk和Sc具有相同的量化标签,处理从步骤1215移动到步骤1220。否则,处理在决定方框1235处继续。在决定步骤1220中,进行检查以便确定Sk是否是相同类的第一个相连段。因此,如果Sk是具有与Sc相同的量化标签的第一个相连段,处理在步骤1225处继续。否则,处理在步骤1230处继续。在步骤1225中,生长当前斑点。因此,基于第k个段所属的斑点生长当前段。生长斑点涉及更新斑点的大小、边界信息、边界框和累积的YUV值。然后,处理在步骤1235处继续。相反,如果决定步骤1220返回假,这指示着已经给当前段分配了斑点标签,即,斑点[i],并且与另一个斑点,即,斑点[j]接触,并且处理在步骤1230处继续。如果这两个斑点具有不同的斑点标签,即,i≠j,则在步骤1230将这两个斑点合并在一起。图15中给出了步骤1230中的斑点合并处理。然后,处理在步骤1235处继续。
从步骤1215、1225和1230,处理继续到决定框1235。在决定框1235中,进行检查以便确定是否已经处理了最后的相连段。如果第k个段不是与当前段相连的最后的段,处理在步骤1240处继续,并且将k增加1。然后,处理返回步骤1210处理下一个相连的段。否则,如果决定步骤1235返回真,处理移动到决定框1245。在决定框1245中,进行检查以便确定是否没有相连的段是相同的类(即,与当前段相同的量化标签)。如果步骤1245返回真(是),处理在步骤1250处继续。在步骤1250中,使用当前段形成新斑点。形成新斑点涉及给当前段分配新的斑点标签,将斑点数目增加1,并且使用当前段的信息初始化斑点统计量。在步骤1250后处理终止。类似地,如果决定框1245返回假(否),处理终止。
2.2.2.2斑点合并的例子图15示出了斑点合并1500的例子。段1510和1520都属于斑点[i],其与属于斑点[j]的段1530相连。示出了段1520的当前开始和当前结尾,同样示出了段1530的上开始和上结尾。图15中还示出了段1520和1530的重叠。斑点合并处理1500涉及结合两个斑点的统计量,将一个斑点标签映射到另一个,并且将斑点数目减少1。例如,在图15中,将标签j映射到标签i。使用下面的伪码指令组合斑点统计量
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贴片内合并一旦通过连通组分分析形成了贴片的斑点,下一个阶段是使用颜色、大小和斑点边界长度统计量将语义相关的斑点合并在一起。从这个阶段起,斑点仅可以被合并而不是分段。因此,贴片从被过度分段变为更接近正确的分段等级。图37和38中示出了贴片内合并的一个例子,其中使用斑点统计量评估是否合并斑点的给定部分。在例子中,有4个量化颜色,并且连通组分分析返回10个斑点。图37示出了在左边进行合并3710之前的斑点。这些斑点中的许多是由于残留的半色调图案和两个不同颜色区域间的颜色“渗色”的影响。在应用贴片内合并之后,具有相对长的边界长度的小斑点被合并到具有较小颜色特征的较大的斑点内。在例子3700中示出了合并3720之后的斑点。图38包含原始贴片3810与合并的斑点3820的比较3800。
量化和斑点形成处理通常创建许多小的不需要的或不正确的斑点。它们是由输入图像内的噪声斑点、剩余半色调而导致的小斑点,或由较大的连通组分的边缘处的渗色影响而导致的细的、大高宽比的斑点的形式。通过将这些斑点与不正确的斑点触及的颜色接近的斑点相合并,可以去除不正确的斑点。
通过限制由分段和连通组分处理产生的贴片内的斑点的数目,可以改进速度和存储器使用率。如果贴片内有太多斑点,可以通过合并一些类似着色的斑点减小其数目,即使这些斑点不相接触。这产生了具有独立的不连通部分,但是被作为单个元素对待的斑点。由于这仅发生在被在稍后的步骤中丢弃的具有大量小的噪声元素的贴片内,所以质量不会受到影响。
图19详细地示出了图10的步骤1030。在步骤1905中,获得当前贴片内的斑点。在步骤1910中,检查斑点的周长与面积的比,以便确定其是否是高的。如果发现该参数高于阈值等级,处理在步骤1915处继续。否则,如果步骤1910返回假,处理在步骤1930处继续。在步骤1915中,检查斑点内触及贴片边缘的像素的比。如果该比值在阈值之上,处理在步骤1920处继续。在步骤1920中,将斑点标记为“强制合并贴片间”。设置用于该斑点的强制合并标志,其使得该斑点在图14的步骤1420中更可能与相邻贴片内的连通组分合并。在步骤1920之后,处理在步骤1930处继续。如果在步骤1915中斑点的贴片边缘比低于阈值,处理在步骤1925处继续。在步骤1925中,将斑点与具有最接近的颜色的相邻斑点合并。找到触及当前斑点的所有斑点以及它们的颜色与当前斑点的距离。然后将当前斑点与相邻的颜色最接近的斑点合并。然后,处理在步骤1930处继续。在决定步骤1930中,进行检查以便确定贴片中是否有更多的斑点要处理。如果步骤1930返回真(是),处理返回步骤1905。否则,处理在步骤1935处继续。
在决定步骤1935中,检查贴片内的斑点的当前数目,以便确定是否太多。如果发现斑点数目高于预定限制,处理在步骤1940处继续。否则,处理结束。在步骤1940中,将未触及贴片边缘的相同量化颜色类的斑点合并在一起。为每个量化颜色类进行该处理。不合并触及贴片边缘的斑点,因为这些斑点可以形成大得多的CC的一部分,并且合并它们可能对质量具有有害的影响。在步骤1945中,再次检查贴片内的斑点的当前数目,以便确定贴片内是否仍然有太多斑点。如果现在发现该数目在预定限制之下(否),处理终止。否则,处理在步骤1950处继续。在步骤1950中,合并触及贴片边缘的各个颜色的斑点。步骤1950执行类似于步骤1940的处理,但是将触及贴片边缘的斑点考虑在内,以便将斑点数目减少到限制之下。然后,处理终止。
2.2.4贴片间合并图13详细地示出了步骤1040的贴片间合并处理。不以特定的顺序为当前贴片的左和上边界中的每一个重复该处理。下面的描述适合于沿着当前贴片的左或上边界进行合并。例如,32×32的贴片具有与其相邻贴片状态的32像素的边界,并且每个像素具有斑点标签。相邻贴片状态也具有32像素的边界,并且每个像素具有CC标签。所以,对于沿着边界的每个像素阶跃,存在当前贴片内的斑点标签,以及相邻贴片状态内的相应的CC标签。通过获得用于下一个贴片边界像素的当前贴片内的斑点标签和其相邻贴片状态内的CC标签,在步骤1310中处理沿着公共边界开始。
在决定框1320中执行测试,以便随着处理沿着边界移动,检测CC标签、斑点标签或最后的像素的改变。如果当前像素是最后的边界像素,决定框1320返回是。如果步骤1320返回假(否),处理在步骤1380处继续。否则,如果步骤1320返回真(是),处理在步骤1330处继续。步骤1330检查可用作合并候选的斑点数目和CC数目。在决定步骤1340中,进行检查以便确定是否满足候选计数条件。如果斑点和CC的合并候选计数满足如图17中所示的并且在下面描述的预定条件1700,决定框1340返回是。
如果图13的决定步骤1340返回假(否),处理在步骤1370处继续。否则,处理在步骤1350处继续。步骤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执行各种合并操作,并且参考图14更详细地描述。在步骤1360之后,或从决定框1340的否之后,处理在步骤1370处继续,其中更新斑点和CC候选计数。图48示出了对所有操作条件进行更新之前和之后的CC和斑点候选计数。如果发现已经改变了CC和斑点标签两者,将CC和斑点候选计数为在合并之前所有可能的计数组合设置为1(更新前的“x”表示“无关紧要的”)。如果仅发现改变了一个标签,并且贴片边界的任意一侧上有两个候选,根据合并两个候选中的哪一个,计数可以设置为0或1。如果选择第二个斑点进行合并(见图49中的4920),则在合并已经发生之后,将两个候选计数设置为0。然而,如果选择第一个斑点或没有选择斑点进行合并,则将两个计数设置为1。在需要候选计数更新的其余情况中,将已经改变的标签的计数增加1,而未改变的标签的计数设置为1。
在步骤1320或1370之后,处理在步骤1380处继续。在决定框1380中,进行检查以便确定当前像素是否是最后的边界像素。如果步骤1380返回假(否),处理在步骤1310中移动到下一个像素位置。否则,处理终止。
2.2.4.1贴片间合并条件根据图17,除CC和斑点标签两者同时改变(在该情况下,对于合并来说,每侧上有一个候选就足够了)时之外,当在一侧上有两个候选,并且在另一侧上有一个时通常发生合并。这使得避免了将一侧上的两个相邻候选合并到另一侧上的相同候选。图17示出了可以执行贴片间合并操作的条件。如果当前CC和斑点计数是(1,1),则为了发生合并,两个标签必须同时改变。然而,如果当前CC和斑点计数是(1,2)或(2,1),则任何标签的改变足以发生合并。情况(2,2)从不会出现。
2.2.4.2贴片间合并的例子图49提供了在斑点和CC候选间进行合并的示例。存在3种情况i)在4910中,每侧仅有一个候选;ii)4920具有一个CC和两个斑点,和iii)4930具有两个CC和一个斑点。在情况4920中,CC候选与两个斑点候选相连。假设两个斑点的颜色与CC接近,但是仅有一个可以与CC合并。如果按每次每侧一个候选地从上到下的顺序执行合并,则顶部的斑点与CC合并,剩下底部的斑点不合并。当底部斑点对于合并可能是更好的候选时,这可能不能产生最理想的结果。因此,对于类似于4920和4930中的情况,一侧上需要两个候选。情况4910在每侧上仅需要一个候选,因为对于4连通,没有可替换的合并组合。
通过以贴片光栅顺序的贴片间合并斑点,形成跨越多于一个贴片的颜色相连的组分。如图39的例子3900中所示,这被以光栅顺序执行,其中贴片3910内的斑点与分别位于贴片3910左边和上边的两个相邻贴片3930和3920的任意一个内的斑点合并。
每个CC存储在保持关于其边界框、均值颜色、以像素衡量的尺寸和接触的CC的信息的数据结构内。在贴片间合并处理中,给当前贴片内的每个斑点分配CC标签,并且使用斑点统计量更新相应的CC数据结构。在当前贴片1630和沿着如图16中所示的当前贴片1630的左和上边界的两个相邻贴片1610,1620内的状态1612、1622间执行合并。当前贴片1630是一块已经被处理以便形成斑点的像素数据,并且具有用于沿着公共边界的像素的斑点标签1634。相反,以前的贴片状态1612、1614不包含像素数据,仅有斑点统计量和与这些斑点链接的连通组分信息。贴片状态1612、1622是压缩的数据结构,其包含关于沿着该贴片1610、1620中的边界的斑点的信息,以及指向这些斑点所属的CC1614、1624的指针。具体地,有两种贴片状态左贴片状态1612和上贴片状态1622;每一个具有用于分别与它们右边和下边的贴片合并的,沿着它们与当前贴片1630的公共边界的每个像素的CC标签信息1614、1624。以前的贴片中的斑点现在是连通组分的一部分。
2.2.4.3处理最佳斑点和CC对图14更详细地示出了图13的步骤1360,其中采用在步骤1350识别出的最佳斑点和CC对作为输入。处理在步骤1410中开始。在决定步骤1410中,进行检查以便确定该斑点是否已经与另一个CC合并。如果在决定框1410中识别出的斑点已经被分配了CC标签,处理在步骤1440处继续。否则,处理移动到决定框1420。在决定框1420中,将在步骤1330中计算的识别出的斑点和CC对间的颜色距离与颜色合并阈值比较。该阈值可以是450。如果设置了强制合并标志,则阈值可以是900。如果颜色距离小于阈值,处理在步骤1430处继续。否则,处理在步骤1460处继续。在步骤1430中,将该斑点和识别出的CC合并在一起。这可以通过使用斑点的统计量更新CC的统计量,并且将CC的标签分配给斑点进行。然后处理终止。在步骤1460中,为当前斑点形成新的CC。然后处理终止。
在决定框1440中,将识别出的CC和识别出的斑点所属的CC间的颜色距离与用于合并的颜色阈值进行比较。如果两个CC间的颜色距离在阈值之下,处理在步骤1450处继续。在步骤1450中,将这些CC映射在一起。这可以通过将它们的统计量组合在一起,并且设置将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统计量,确定根CC的统计量1834。例如,CC 1830的最终统计量是在将CC(h)1805,CC(i)1810,CC(j)1820和CC(k)1830被合并在一起之前,这些CC的组合统计量。合并这些统计量的次序不重要。在图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个区域后剩余的区域。因此,包含单个斑点的平坦贴片不需要存储任何二值图像。在可替换的实施例中,可以将二值图像存储在单个压缩的数据结构诸如索引图内,其中每个像素位置具有一个斑点索引,并且被使用log2(n)位表示。例如,如果每个贴片的最大斑点数目是16,使用4位的数字编码每个像素位置处的斑点索引。在另一个可替换的实施例中,可以使用1位位图存储用于两级贴片的二值图像。在步骤5030中,更新当前贴片内的每个CC的接触列表。这可以通过识别出该贴片内所有相邻的CC进行。在步骤5040中,输出贴片状态。颜色分段处理将斑点和CC信息存储在用于与下一个输入贴片合并的压缩的贴片状态数据结构内。如上所述,有两个贴片状态,其中左边的贴片状态具有沿着右贴片边界的CC标签信息,上部的贴片状态具有沿着下贴片边界的CC标签信息。
2.3分段例子图25(a)示出了一个简单的例子,其示出了基于多于2个量化等级分段的优点。背景2510是黑色的,并且其上放置了一个白色的三角形2520和灰色的单词“text”的字母2530。如图25(b)和(c)所示,该图像的二值分段典型地导致文本2530与背景2510或三角形2520的合并。这些分段中的任何一个都不能用于文档布局分析以便选择文本区域-文本特征已经丢失了。
同时,存在允许简化连通组分的布局分析的二值分段的某些特征。考虑具有连通外边界和由4路连通形成的CC的页的情况。在该情况下,除了页的边缘在,在边界处接触另一个CC的每个CC或是被该CC包含,或是包含该CC,并且一个CC仅可以由一个其他CC包含。可以产生一个明确的包含分层结构,并且以树结构表示。树中的每个连续的层包含与前面相反极性的CC,并且每个分支由一组共享唯一父亲的CC构成。由于该分层结构可用于选择作为将被分组在一起的候选的CC的子集(共享唯一父亲的那些),这种分层结构可用于对CC分组。由于一次需要考虑少数的CC,这在处理速度方面是有益的,并且在准确性方面也是有益的。来自页的不同区域的CC可以在树的不同分支上,并且不被分组在一起。另外,可以在树的顶部开始CC的处理,并且可以为低于某种分类(例如,文本)的CC的树分支终止,以便进一步改进处理时间。
如果分段不是二值的,一般地不能有帮助地产生明确的分层结构。考虑图25(a)中的字母“e”。该字母的外边界与黑色背景和白色三角形两者接触,从而背景或三角形可以被认为是该CC的父亲。三角形的情况甚至更复杂,因为其外边界接触背景和所有字母。尽管有这种不确定性,可以实现在对对象进行分组时使用分层结构的益处。这是通过定义在边界相接触的两个CC间的父亲-孩子关系特性,而不需要针对每个孩子的唯一的父亲完成的。例如,如果这些CC在边界处接触,并且一个CC(父亲)的边界框完全包围第二个(孩子)的边界框,则可以在两个CC间定义父亲-孩子关系。为图25(a)中所示的例子使用这个定义,三角形和单词“text”的所有字母都定义为背景CC的孩子。
3布局分析布局分析是该系统的一部分,其中识别页的前景内容。中间(布局分析)模块采用来自前端模块的一列连通组分和“接触列表”作为输入。布局分析的输出基本上是关于扫描图像中哪些连通组分表示前景内容(即,文本、表、黑点(bullet point))的决定。布局分析基于颜色分段,而不是二值图像。在可能发现的前景对象的分类方面这具有若干益处,但是不存在类似对于二值图像来说存在的清楚的包含分层结构。出于效率,布局分析仅使用边界框和少许其它一般的连通组分的统计量,以便作为其分组的基础。布局分析不访问原始像素数据或甚至是位级别的分段。
布局分析的主要步骤是基于接触列表形成包含分层结构,基于CC的边界框和颜色对它们分组,和测试这些组,以便确定CC是否类似文本的行那样被很好地对齐了。使用接触列表提供用于CC的分层结构,它是两级包含分层结构的多颜色等同物。给定的CC可以被认为是它的接触列表元素的一个子集的父亲。具体地,给定CC可以是该给定CC所接触的,并且其边界框完全包含在父亲CC的边界框内的那些CC的父亲。
图4详细地示出了图1的步骤120,其采用压缩CC信息、统计量和由步骤110产生的“接触列表”信息作为输入。接触列表描述哪些CC彼此邻接-即,哪些CC共享边界。图4的处理不访问输入图像。该信息的一部分是输入图像中的所有CC的列表。
在步骤410中,基于CC的统计量对其分类,从而从CC列表形成颜色包含分层结构。颜色包含分层结构是这样的结构,其中每个节点是一个CC。父亲节点具有父亲节点接触到的、并且其边界框完全包含在父亲CC的边界框内的CC作为其孩子。孩子节点可以有多于一个父亲节点。分析可以仅基于边界框大小和形状。具有宽度和高度均小于1/100英寸(例如300dpi分辨率的3个像素)的CC被认为是噪声,并且被去除。具有宽度或高度在1英寸以上,或宽度和高度均在8/15英寸以上的连通组分被分类为图像。任何其它的东西被分类为潜在的文本。可替换的实施例可以包括涉及其它文档布局特征的分类(诸如表、连通组分中的像素数目),并且可以使用其它值。
在步骤420中,将潜在文本CC分组在一起,表示文本区域。CC通常被与附近的CC分组在一起,并且有效的分组算法通过在确定分组之前寻找相邻CC利用这个事实。前端中使用的高分辨率颜色分段方法可以找到在典型的扫描文档上进行分组时考虑的数千个同胞(sibling)。在这些情况下,使用简单的对式比较寻找相邻CC,一种O(N2)的方法,可能是慢的,并且必须使用确定邻居的更复杂的方法。可以在颜色包含分层结构的节点上执行三角测量。如果页上的CC的边界框的中心在平面上定义节点,有效的三角测量方法可用于此目的,诸如Delaunay三角测量。这些方法通常是O(NlogN)个处理。
图53示出了平面内的一组节点的Delaunay三角测量(由虚线指出)以及Voronoi图(由实线指出)的示例5300。Voronoi图是页到区域的一种分段,所述区域到给定的点比到其它点更近。Delaunay三角测量是两重Voronoi图,该图可以通过将共享Voronoi图中的边界的点连接在一起产生。在这个三角测量中,平面内随机放置的点中的平面内的典型的点具有大约5个连接到它的点。可以将这些点考虑为分组阶段中好的邻居候选。
三角测量的输出使其适合于作为形成CC分组的方法。基于在Delaunay三角测量内相邻的那些CC的边界框的对式比较,将这些CC分组在一起。然后在这种初始分组之后在相邻CC对上进行后续轮,以便将这些组结合在一起,或将未分组的CC放置在已有组内。处理还可以在单个轮中通过该数据寻找不同类型的分组(文本、表等)。文本CC的组一般有如下特征类似的颜色;边界框的类似大小;沿着水平或垂直轴粗略对齐(取决于文本对齐);和相对于CC的大小沿着对齐轴靠近在一起。
在步骤430中,检查或验证CC组,以便确定哪些CC组是文本字符。由处理器存储关于组内容和在分组阶段产生的合并的信息。可以将关于各个单独分组的信息存储在一个数据结构内,该数据结构包括颜色、边界框和组的内容。在分组阶段中当组的内容改变时,更新这些结构。在可替换的实施例中,将分组标记包括在CC数据结构内,并且可以从CC数据重构数据,诸如组颜色和边界框。在步骤430中,对文本字符CC进行对齐测试作为额外的检查,以便确保CC是文本。
形成的组一般包括全部文本,但是可能还包括不希望被分类为文本的图像部分。为了减轻这个问题,检查这些组,以便查看组中的连通组分是否类似于文本以整齐的行(或列)排列,或类似于噪声或图像的类似着色的区域往往表现出的那样随机排列。
这主要可以通过形成边界框的边的4个直方图,每侧(即,左、上、右或下边)一个来完成。它们中的一个应当是满库,文本的基线在那里,并且其它位置为空。为了对其进行检查,可以找到这些直方图库的平方和,并且与预期值比较。如果发现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间的连通。可替换的方法可以使用边界框数据和该CC列表的颜色信息的不同元素定义接近。在步骤2040中,使用邻居数据执行初始分组。该处理步骤2040形成相同孩子列表内的类似属性(例如,几何形状和颜色)的对象组,以便确定文档布局的特征。图23更详细地描述步骤2040。
在决定步骤2050中,进行检查以便确定是否剩余有更多的根CC要处理。如果有更多的根CC,处理返回步骤2010,并且获得下一个根CC,并且随后进行处理。否则,分组阶段(420)终止。
3.1.1寻找父亲CC的孩子图22示出了寻找孩子CC和形成给定父亲CC的孩子列表的步骤2020。在步骤2210中,从父亲CC的接触CC列表中获得接触CC。在步骤2220中,找到根CC。这可以使用与该接触CC相关联的来自颜色分段阶段的任意合并信息完成。在决定步骤2230中,检查来自图4的步骤410的CC分类,以便确定CC是否满足类测试(即,将该CC存储在孩子列表内是否适合)。可以存储除了噪声大小CC之外的所有CC,但是可替换的实施例可以存储类的其它组合,例如,仅存储潜在的文本。如果接触CC的类是适合的,处理在步骤2240处继续。否则,处理在步骤2260处继续。在决定步骤2240中,检测CC与父亲CC的包含性。包含测试涉及检查该CC的边界框是否完全被父亲CC的边界框覆盖,但是可替换的方法也是可行的。如果满足包含测试,处理在步骤2260处继续。在步骤2250中可以将该CC包括在孩子列表内,然后处理继续到步骤2260。在孩子列表中任何CC仅应出现一次,从而步骤2250包括检查该CC未包括在列表内。可以使用散列表这些检查。然后处理在决定步骤2260处继续。步骤2260测试父亲的接触列表中是否有任意更多的元素。如果是的,处理在步骤2210处继续。否则,完成了当前CC的孩子列表,并且处理终止。
3.1.2初始分组图23示出了使用来自图20的步骤2030的邻居数据执行的初始分组的图20的步骤2040。该方法可以设计为仅分组文本,但是在可替换的实施例中,该方法还可以对其它文档对象(诸如表)分类或分组。初始分组可以是两轮处理,其中第一轮将CC结合到组内,并且第二轮将组结合在一起成为更大的组。在步骤2305中,将计数器PASS设置为1。在步骤2310中,获得孩子。在步骤2320中,获得孩子的邻居。在步骤2330中,进行检查以便确定孩子和邻居是否满足分组测试。使用一系列测试对这些对象进行分组测试。测试可以基于初始分类、几何形状和颜色,并且可以在第一和第二轮中不同。下面描述的图26提供了对文档的一个区域的提取,以该文档解释步骤2320的分组测试。
参考图23,如果满足分组测试,在步骤2340将孩子和邻居CC分组在一起。然后,处理在步骤2350处继续。否则,如果步骤2330返回假,处理在步骤2350处继续。如果两个CC被分组在一起,将每一个标记为属于相同组。CC被标记的组取决于这两个CC的在先分组。如果还未对任何一个分组,则形成包含两个CC的新分组。如果仅仅已经对两个中的一个进行了分组,将另一个CC包括在该组内。如果已经对两个进行了分组,并且组是相同的,不采取行动。最后,如果两个已经被分组,并且组不同,将两个组合并为单个组,并且将另一个组标记为空。
在步骤2350,进行检查以便确定是否有当前CC的更多的邻居。如果存在更多邻居,处理在步骤2320处继续。否则,处理在步骤2360处继续。在步骤2360中,处理检查父亲CC更多的孩子。如果存在更多的孩子,处理在步骤2310处继续。否则,处理在步骤2370处继续。在步骤2370中,进行测试以便确定是否完成了两轮(PASS>1?)。如果是这种情况,处理终止。如果仅完成了第一轮,处理在步骤2380处继续,并且递增计数器PASS。处理在步骤2390处继续。在步骤2390中,处理返回孩子列表的开始。然后处理返回步骤2310,并且开始第二轮。
在可替换的实施例中,处理2040在三角测量数据的边而不是孩子CC和邻居对中循环。由于每个邻居对仅被考虑一次,这稍微更有效。
3.1.2.1对两个CC的分组测试为了示出对两个相邻CC的优选分组测试,图26示出了从刚好包含两个对象-字母“g”和“h”的文档区域中的简单提取。虚线表示每个字母的边界框的坐标。第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的参数。可以使用每组元素的均值颜色[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。该处理确定每个组是否由文本构成。主要基于是否发现组内的对象在行或列上对齐进行该决定。假设组是文本,对其进行文本类属性测试,并且如果组未通过这些测试,则将其否决。
在步骤2110中,获得在步骤420中形成的下一个组。在步骤2120中,估计组内的文本字符的大小。估计的大小基于单个字符的长度的统计量。这些长度可以定义为对象的边界框的宽度和高度的最大值。该测量对倾斜和页上文本的对齐相当不灵敏,并且对于给定大小的典型字体内的字符集足够统一。在可替换的实施例中,可以使用边界框面积、像素计数和/或笔划宽度作为长度的测量值。可以形成字符长度的直方图,并且估计的大小可以基于与具有多于库内元素阈值数目的直方图库相关联的最大长度。使用的阈值最少为3个对象,并且至少为组内对象数目的15%。如果不存在这样的库,不返回估计。
在决定步骤2125中,进行检查以便确定是否找到字符的大小。如果未能找到适合的字符大小,拒绝该组,并且处理在步骤2160处继续。否则,处理在步骤2130处继续。
步骤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的其它可替换方案可以合并某些对象以便形成字符。这旨在针对具有复杂字符的脚本,诸如中文的,这些字符可能被分段为多于一个单独对象,并且有益于改进后面处理中的对齐测试的准确性。仅在两个对象的边界框重叠时,可以合并两个对象。如果合并将创建大于1.6的纵横比,或创建比步骤2120中估计的字符大小大的合并对象,则限制不发生合并。
在步骤2150中,检查组内的对象的对齐。该测试将文本组与其它组区分开,并且在下面更详细地描述。在该步骤后,在步骤2160执行测试,以便确定是否有更多组要处理。如果有更多的组,处理返回步骤2110。否则,处理430结束。
3.2.1检查对齐图24更详细地给出了图21的步骤2150。在该步骤过程中,将组内的CC的子集定义为字符。字符可以是具有大于2120中估计的字符大小的一半,并且小于该大小的两倍的大小的那些对象。
基于关于组元素的一系列参数的直方图分析,步骤2430到2450进行组的接受测试。这些参数是每个字符的边界框的左、上、下和右边。使用多个参数允许识别出不同对齐的文本,由于文本在页上的对齐取决于许多因素,诸如语言和文本在页上的倾斜。可替换地,可以使用水平和垂直边界框参数的各种组合识别更宽范围的文本对齐。
在步骤2430中,为下一个参数的组元素值形成直方图。可以根据组字符的大小缩放直方图内的库的大小。可以为上和下边界框边使用组内字符的平均高度的1/5的值(取整),并且可以为左和右边界框边使用组内字符的平均宽度的1/5(也取整)。设置直方图内的库范围,从而所有数据被包括在该范围的每一端处的非空库内。可以将直方图覆盖的最低值设置为组内的参数的最低值。
决定步骤2440测试直方图内的值是否很好地对齐,形成离散的簇(cluster)(理想地表示不同行文本的基线),而不是随机散开。步骤2440测试组内的字符数N是否大于具有优选值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处继续。在步骤2470中,保持该组,对齐检查结束。然后处理终止。否则,如果步骤2440返回假(否),处理在步骤2450处继续。决定步骤2450检查是否有更多参数要测试。如果有,处理针对下一个参数在步骤2430处继续。否则,如果已经测试了所有参数,处理在步骤2480处继续,其中拒绝该组。然后处理终止。
前面的描述公开了一次基于一个参数的测试和拒绝那些所有测试都失败了的组。然而,以本公开来看,本领域的技术人员将明了,可以实践针对不同参数的组合测试的可替换的方法,而不脱离本发明的范围和精神,诸如接受差不多足够好地在两个不同但类似的参数(诸如,边界框的上和下边)中对齐的组,或基于许多参数创建该组的整体评分。
3.2.2对齐例子图27(b)示出了可能从图2700中分段的部分得出的不规则布置的边界框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)的文本数据。可替换地,接受测试可以基于其它统计量,诸如明显大于平均计数的库内的值的总数。
4产生压缩的输出图像通过以估计的背景颜色在前景区域上绘制,后端模块使用修复处理,使得背景图像更可压缩。优选地在较低分辨率(例如,150dpi)的背景图像上执行修复。修复算法是单轮的、基于贴片的算法,并且努力增强可压缩性。通过从左边和右边的周围像素进行内插,而不是使用大区域的一个平均颜色,选择每个像素的颜色。
该算法执行下面的步骤1)组合用于所有前景组分的掩蔽,形成用于该贴片的一个前景掩蔽;2)扩大该掩蔽,从而修复围绕该前景组分的小的附加区域;3)在贴片上以光栅顺序a如果像素未被掩蔽,更新贴片的活性;和b如果像素被掩蔽了,以从左边和右边最近的未掩蔽像素的颜色内插出的颜色绘制像素;4)如果未掩蔽区域的活性低于某个阈值,以未掩蔽像素的均值颜色绘制整个贴片(这给出了以ZLib压缩JPEG的改进的压缩);和5)如果掩蔽了整个贴片,以前面的贴片的均值颜色绘制整个贴片。上面的步骤2)消除了渗色影响,并且改进了压缩,并且锐化了输出质量。
图5详细地示出了图1的步骤130。步骤510到540使用类似于在图2和3中描述的基于贴片的处理系统。在步骤510中,获得将处理的下一个贴片。在步骤520中,在当前贴片上执行修复处理,以便去除图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处继续。在步骤550中,压缩前景,这涉及压缩在步骤120中识别出的前景元素。根据颜色将前景元素分组,并且为每个类似着色的前景元素组创建完整输入分辨率的一个二值图像。然后可以将每个创建的图像编码为CCITT G4 Fax,如果图像足够大,使得编码产生输出文档中的压缩优势的话。
在步骤560中,产生输出文档。以复合压缩格式存储压缩的背景和压缩的前景图像。该格式可以是,例如,PDF文档。还可以使用Flate(Zlib)压缩进一步压缩JPEG编码的背景图像。对于包含由步骤520和530产生的大量重复的平坦块的JPEG图像,这带来了明显的空间节省。可以写合成文档,合成文档包含Flate和JPEG压缩的背景图像,和包含大小、位置、顺序和-在二值前景图像的情况下-在页上绘制每个图像的颜色的细节的页描述。
4.1修复贴片图30详细地示出了图5的步骤520。该处理修改下采样的背景图像,以便增加可压缩性,并且通过从背景中去除前景CC且以低可视活性平坦化图像贴片,增强前景CC的锐度。还修复前景CC周围的小区域,以便去除渗色影响,从而增强图像并且增加可压缩性。
通过以通过在选择的前景CC的左边和右边的像素的颜色间进行内插估计的颜色绘制该前景CC,图30中示出的处理520从低分辨率的背景中去除选择的前景CC。这增加了可压缩性。还修复围绕着该CC的外部的小区域,以便进一步增加可压缩性,并且增强图像的外观。通过识别具有低可视活性的背景图像的贴片,并且将所有它们的像素设置为相同颜色,进一步增加可压缩性。
图30的处理的输入是在图2的步骤250中创建的下采样的背景图像,来自图2的步骤240的CC列表,以及来自图1的步骤120的前景或背景选择信息。在步骤3010中,检查贴片以便查看贴片是否被标记为是“平坦的”。如果是,处理在贴片平坦化步骤3040处继续,否则,处理在步骤3020处继续,其中为贴片形成全分辨率前景位掩蔽。其具有在相应于前景CC的每个位置设置的位。在步骤3030中,通过以从该CC的左边和右边的像素的颜色内插出的颜色修复它们,去除背景图像中相应于前景CC的区域和围绕它们的小区域。还测量贴片内未修复像素的活性。在步骤3040中,如果发现贴片活性足够低,以致于在视觉上是平坦的,将整个贴片平坦化为恒定颜色。然后处理终止。
4.1.1形成贴片前景位掩蔽图31更详细地示出了用于形成贴片前景位掩蔽的图30的步骤3020。在步骤3110中,创建用于贴片的初始位掩蔽。该位掩蔽的宽度与贴片相同,并且比贴片高一行。该位掩蔽的第一行被设置为与上面的贴片的最后一行相同,除非该贴片是文档中的第一个带,在这种情况下,将位掩蔽的第一行设置为空。这允许修复区域在具有与贴片边界对齐的底边的前景CC之下延伸。
在步骤3120中,获得贴片内的下一个CC。在步骤3130中,检查该CC以便确定该CC是否是前景CC(在步骤120中)。如果CC是前景CC,处理在步骤3140处继续。否则,处理在步骤3150处继续。在步骤3140中,使用逐位OR操作,将相应于该CC和当前贴片的位掩蔽与步骤3110中创建的位掩蔽组合在一起。然后,处理在步骤3150处继续。在步骤3150中,进行检查以便确定当前贴片内是否有更多CC。如果是,处理返回步骤3120。否则,如果已经处理了贴片内的所有CC,步骤3150的结果是否,并且处理在步骤3160处继续。在步骤3160中,保存形成的掩蔽的最后一行,从而当处理页上直接在该贴片之下的贴片时,可以在步骤3110中使用其。图31的处理3020中创建的位掩蔽是输入图像的全分辨率。
4.1.2修复像素和测量贴片活性图32更详细地示出了图30的步骤3030。以光栅顺序检查每个像素,直到发现应修复的一个,其标记着要修复的一串像素的开始。检查后续像素,直到找到要修复的像素串的结尾。然后以在修复串的左边和右边的像素的颜色间线性内插的颜色给该像素水平串着色。
参考图32,步骤3210得到贴片的一行。在步骤3220中,根据行的累积像素活性找到下一个像素串的开始。以光栅顺序检查行内的每个像素,并且累积贴片内的像素活性,直到找到应修复的像素。通过累积像素值和这些像素值的平方,并且保持测量的像素的数目的计数,记录未修复的像素的像素活性。为了决定每个像素是否应修复,将像素位置和在图30的步骤3020中创建的贴片前景位掩蔽内的相应位置进行比较。由于贴片位掩蔽的分辨率是背景图像的两倍,掩蔽中有4个相应于背景图像内的一个像素覆盖的区域的像素。为了改进压缩和从前景CC中去除渗色边影响,修复前景CC的边周围的小附加区域。为了进行该处理,检查全分辨率前景掩蔽中的8个像素,以便决定是否修复当前背景像素。图34示出了背景图像贴片3430中的示例像素3410,以及检查的相应的全分辨率掩蔽像素3420。如果在掩蔽3440中设置了由3420指示的这些8个像素中的任何一个,即,相应于前景CC的位置,修复像素3410。由于将位掩蔽3440存储为位向量的矩阵,使用逐位AND运算可以快速检查这些8个像素3420。可替换地,这可以通过扩大位掩蔽3420内的设置像素,并且然后下采样来实现。记录每行上未修复的最后检查的像素的颜色,并且如果将修复下一个贴片的相同行的第一个像素,使其在处理右边下一个贴片时可用,从而将该颜色用作内插值。
参考图32,在决定步骤3230中,进行检查以便确定在行结尾之前是否找到了要修复的任何像素。如果找到了要修复的像素,处理在步骤3250处继续。否则,处理在步骤3240处继续。在步骤3250中,以光栅顺序检查该行内剩余的像素,以便找到该行内应修复的像素串的结尾。此处使用与步骤3220中使用的测试相同的测试确定是否应修复像素。在步骤3260中,进行检查以便确定在行的结尾之前是否找到了要修复的像素串的结尾。如果在达到行的结尾之前找到了要修复的像素串的结尾,处理在步骤3270处继续。在步骤3270中,将要修复的像素串内的每个像素设置为在左边和右边的最近的未修复像素的颜色间线性内插的颜色。如果要修复的像素串延伸到贴片的左手边,在前一贴片中为相同行保存的最后的值被用作左内插值。然后,处理在步骤3220处继续,并且搜索要修复的下一个像素串。如果在步骤3250中达到了行的结尾而未找到不应修复的任何像素,决定步骤3260指挥处理在步骤3280继续。在步骤3280中,将要修复的像素串内的每个像素设置为左边最近的未修复的像素的值,其可以是在以前贴片内为相同行保存的值。在步骤3280之后,处理在步骤3240处继续。
在步骤3240中,进行检查以便确定贴片内是否有更多的行要处理。如果贴片内有更多的行,处理在步骤3210处继续。否则,如果没有更多的行,处理结束。
4.1.3修复的例子图35示出了某些一维修复的例子。给两个例子3510、3520提供之前和之后的曲线图,其中像素强度被绘制为位置X的函数。在第一个例子3510中,要修复的像素串完全在贴片内,并且以紧接着左边和右边的未修复像素的值之间线性内插的值代替修复像素的值(以对角影线指示)。修复区域稍微大于前景组分以便去除任何渗色影响;这被以扩大的掩蔽区域示出。通过在左边和右边的未掩蔽像素颜色间进行内插找到修复每个像素的颜色。在图25的第二个例子3520中,要修复的像素串越过了贴片边3530。当处理左手贴片时,以紧接着左边的未修复像素的值替代要修复的像素的值。当处理例子3520的右手贴片时,将修复像素的值设置为该行最后记录的未修复像素的值和右边第一个未修复像素的值间的线性内插的值。
4.1.4贴片平坦化图33更详细地示出了图30的步骤3040。在决定步骤3310中,进行检查以便确定是否修复了所有像素。尤其是,检查在步骤3220中记录的被修复的像素的数目。如果修复了贴片内的所有像素,则认为贴片的可视区域是低的,并且处理在步骤3320处继续。在步骤3320中,将当前贴片内的所有像素着色(设置)为光栅顺序的以前贴片的均值颜色。当使用基于块的压缩技术例如JPEG时,这明显地增加了背景图像的可压缩性。然后处理终止。如果步骤3310确定不是修复了贴片内的所有像素,处理在决定步骤3330处继续。在步骤3330中,对照预定的阈值检查在步骤3220中测量的未修复像素的活性。如果发现活性小于该阈值,认为重构图像内的贴片的活性可视区域接近平坦。在该情况下,处理在步骤3340处继续,并且通过以贴片内未修复的可视像素的均值颜色绘制贴片内的所有像素,使得该贴片完全平坦。这显著提高了背景图像的可压缩性。在步骤3340后,或如果发现贴片内的活性高于阈值在步骤3330后,图33的处理结束。
5硬件实施例图51示出了根据本发明的第二实施例的系统5100。系统5100以处理流水线的不同阶段间的高效的数据流为特征。该设计极大地减少了存储器带宽,并且能够使得系统5100快速运行。
扫描仪通常按像素光栅顺序获得扫描数据。然后存储像素数据,并且通常为进一步的图像处理进行压缩。在传统的扫描到文档应用中,通常需要从存储设备中检索扫描数据,解压缩,并且然后保持在用于分段和布局分析的存储器内以便处理图像数据。这通常是高速扫描仪的情况,这只是因为分段处理不能跟上扫描仪一页接一页流式传输光栅数据的速度。
这不仅需要大的存储器缓冲器,而且由于每个图像像素必须至少被写和读两次,还需要高存储器带宽。首先必须由扫描仪将像素写到存储器,并且然后压缩器从存储器读取数据并且压缩数据。稍后,解压缩器必须读取压缩数据,并且将数据解压缩到存储器内。最后,图像处理器可给解压缩数据分段。对于每个原始的图像像素,至少有一次冗余的存储器读和写,更不要说压缩的数据。对于高分辨率扫描仪(例如,600dpi),这意味着超过200MB的额外数据。
本发明的这个实施例采用高速、自动分段,其直接工作于来自扫描仪5105的实时的一页接一页流式传输的光栅数据。结果,完全消除了冗余的存储器读和写,并且还极大地减少了存储器缓冲器的大小。
总线5110从扫描仪5105运送扫描的光栅数据,其被写到模块5115(线缓冲器)中。在该例子中,使用64线缓冲器,但是可以根据后面解释的带的高度使用其它的大小。线缓冲器5115存储由代码分段模块5125处理的数据带,同时收集新的进入的扫描数据带。模块5125通过总线5120从线缓冲器5115读取数据贴片,并且以贴片为基础将该数据颜色分段为连通组分。当模块5125结束一个数据带时,从线缓冲器5115读取新的数据带以便处理。然后旧的带缓冲器用于收集新的进入的光栅数据。由贴片的高度确定带的高度,并且线缓冲器5115需要两倍带的高度。在该实施例中,优选的贴片大小为32×32。
在这个实施例中以硬件实现模块5125,从而带的处理速度可以跟上扫描仪5105产生新数据带的速度。模块5125的输出是到布局分析模块5140的总线5135上的压缩的连通组分(CC),和到修复模块5150的总线5130上的未压缩或压缩的下采样图像。可以将总线5135上的数据写到存储器,直到产生了页的明显区域或CC的整个页。模块5140仅使用紧凑的连通组分数据执行布局分析。由于数据是紧凑的,执行布局分析所需的处理能力是小的。因此,布局分析模块可以实现为由嵌入式处理器实时执行的软件(SW)。布局分析模块的输出是在总线5145上提供的前景信息,其紧随来自总线5135的数据。也可以将总线5130上的数据写到存储器内,直到产生了页的明显区域或CC的整个页。
修复模块5150逐贴片地对下采样图像(通过总线5130提供)执行前景去除。该模块5150可以实现在运行布局分析软件5140的同一个嵌入式处理器上,或可替换地,它可以用硬件(HW)实现。模块5150然后在下采样的图像上以估计的背景颜色修复前景区域,以便产生背景图像。在总线5155上输出前景去除的背景图像,并且在总线5175上产生前景掩蔽。
输出产生模块5160从在总线5175上产生的前景图像和在总线5155上产生的背景图像创建经布局分析的文档,诸如PDF文件。模块5160可以用运行在同一个嵌入式处理器上的软件实现。
在第二实施例中,模块5115和5125工作在实时的一页接一页的扫描数据上,并且产生页N上的紧凑的连通组分和下采样图像。模块5140、5150和5160使用由模块5125在页N-1上产生的数据顺序地工作。因此,系统可以实时地送出来自高速扫描仪的实时数据的经布局分析的文档。
可以用针对第一实施例中相应步骤所描述的方式实现模块5125、5140、5150和5160。
5.1颜色分段模块图52详细地示出模块5125。颜色分段为CC模块5125的组件包括去半色调模块5220,其按贴片顺序取得像素流,并且去除由于扫描使用打印的半色调系统(例如喷墨打印机)打印的材料引起的任何赝象。去半色调模块5220是前面描述的软件实施例的硬件实施例。该模块内部可以使用静态RAM和流水线处理以达到所需速度。
从去半色调模块5220输出的像素被传递到颜色转换模块5230,其将像素从输入颜色空间(通常为RGB)转换为YCbCr亮度/色度空间。该模块5230执行根据下面的公式对每个像素执行必要的乘法和加法 以按比例缩放的定点算术执行这些算术运算,以便减小复杂性并且增加模块5125的速度。将来自颜色转换模块5230的输出传递到两个模块,即下扫描模块5240和连通组分分析模块5260。下扫描模块5240执行一组4个(在2×2的方块内)或16个(在4×4的方块内)颜色的简单平均,以便形成每个输出像素。然后由硬件JPEG压缩器5250压缩从下扫描模块5240输出的像素。
6计算机实现可以使用一个或多个通用计算机系统、打印设备和其它适合的计算设备实施根据本发明的实施例的方法。参考图1-52中的一个或多个描述的处理可以被实现为软件,诸如在计算机系统内执行的或被嵌入打印设备的应用程序。软件可以包括一个或多个计算机程序,包括应用程序、操作系统、过程、规则、数据结构和数据。指令可以被构成为一个或多个代码模块,每一个用于执行一个或多个特定任务。该软件可以存储在计算机可读介质(包括例如下面描述的一个或多个存储设备)内。计算机系统从计算机可读介质装入该软件,并且然后执行该软件。
图7示出了可以实施本发明的实施例的计算机系统700的例子。其上记录有这种软件的计算机可读介质是一种计算机程序产品。该计算机程序产品在计算机系统内的使用可以实现用于实现一个或多个上述方法的有利的装置。
在图7中,计算机系统700耦合到网络。操作者可以使用键盘730和/或指点设备诸如鼠标732(或例如触摸垫)给计算机750提供输入。计算机系统700可以具有任意数目的输出设备,包括线打印机、激光打印机、绘图机和连接到计算机的其它再现设备。计算机系统700可以通过通信接口764使用适合的通信通道740诸如调制解调器通信路径、路由器等连接到一个或多个其它计算机。计算机网络720可以包括例如局域网(LAN)、广域网(WAN)、内联网和/或互联网。计算机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的系统,本领域的技术人员应当理解,可以使用能够处理数据并且执行操作的其它处理单元而不脱离本发明的范围和精神。
仅出于说明的目的提供计算机系统700,并且可以采用其它配置而不脱离本发明的范围和精神。可以实施这些实施例的计算机包括IBM PC/AT或兼容机、膝上/笔记本计算机、PC的Macintosh(TM)族之一、Sun Sparcstation(TM)、PDA、工作站等。上面仅是可以实施本发明的实施例的设备类型的例子。典型地,下面描述的这些实施例的处理被作为软件或记录在作为计算机可读介质的硬盘驱动器上的程序驻留,并且使用处理器读取和控制。可以使用半导体存储器实现程序、中间数据和从网络取得的任何数据的中间存储。
在某些情况下,可以提供编码在CD ROM或软盘上的程序,或可替换地,可以通过,例如,连接到计算机的调制解调器设备从网络读取该程序。另外,可以从其它计算机可读介质(包括磁带、ROM或集成电路、磁光盘、计算机和另一个设备间的无线或红外线传输通道、计算机可读卡(诸如PCMCIA卡)、以及互联网和内联网(包括电子邮件传输和记录在网站上的信息等))将软件装入计算机系统。前面仅是有关的计算机可读介质的例子。可以使用其它的计算机可读介质而不脱离本发明的范围和精神。
7工业实用性本发明的实施例适用于计算机和数据处理行业。前面仅描述了根据本发明的实施例用于处理和压缩数字图像的少量方法、装置和计算机程序产品,并且可以对其作出修改和/或改变而不脱离本发明的范围和精神,这些实施例是说明性的而不是限制性的。
权利要求
1.一种给包括多个像素的数字图像分段的方法,该方法包括步骤从所述数字图像产生多个像素块;及以单轮的方式使用所述像素块为每个块生成至少一个连通组分,所述生成步骤包括将一个像素块分段为至少一个连通组分,每个连通组分包括空间上相连并且语义相关的一组像素;将所述块的所述至少一个连通组分与从以前处理过的至少一个其它块分段出的至少一个连通组分合并;并且以紧凑的形式存储所述块的所述连通组分在所述图像中的位置。
2.如权利要求1的方法,其中所述语义相关的像素包括类似着色的像素。
3.如权利要求1的方法,其中所述产生步骤包括子步骤将所述数字图像布置为多个带,每个带包括预定数目的连贯的像素行;并且一个接一个地缓冲和处理所述带,其中所述处理步骤包括对每个当前缓冲的带执行的如下子步骤将所述当前带布置为多个像素块;和为所述生成步骤一个接一个地缓冲和处理所述当前带的所述块。
4.如权利要求1的方法,其中所述存储子步骤包括存储M-1个二值位图,其中M个连通组分在一个块内,M是整数。
5.如权利要求1的方法,其中所述存储子步骤包括存储索引图。
6.如权利要求1的方法,其中所述分段子步骤包括估计每个块的若干代表性颜色;将每个块量化为所述代表性颜色;和从每个量化的块形成连通组分。
7.如权利要求6的方法,其中所述分段子步骤还包括将形成的所述连通组分的子集合并。
8.如权利要求7的方法,其中所述合并子步骤包括收集所述连通组分的统计量。
9.如权利要求8的方法,还包括去除被认为是噪声的所述形成的连通组分的步骤。
10.如权利要求9的方法,其中所述噪声包括具有低于预定阈值的像素计数和高于另一个预定阈值的边界长度与像素计数比的连通组分。
11.如权利要求8的方法,其中所述统计量包括边界框、像素计数、边界长度和平均颜色中的任意一个或多个。
12.如权利要求8的方法,其中所述合并步骤包括将一个块的连通组分与左边和上边的块的连通组分合并;和更新所述合并的连通组分的所述统计量。
13.如权利要求12的方法,其中所述统计量包括边界框、像素计数、填充比率和平均颜色中的任意一个或多个。
14.如权利要求6的方法,其中所述估计子步骤包括基于每个块中的像素的YUV数据,形成与多个颜色库有关的直方图;基于直方图统计量对每个块分类;和基于所述块分类合并库颜色,以便形成所述代表性颜色。
15.如权利要求14的方法,还包括在一轮中为每个像素形成索引图的步骤。
16.如权利要求15的方法,其中所述量化步骤包括将非空库量化为代表性颜色;创建到所述代表性颜色的库映射;和使用所述库映射将所述索引图重新映射到所述代表性颜色。
17.如权利要求14的方法,其中所述形成子步骤包括基于Y值确定亮度带;基于U和V值确定颜色列;将像素颜色累积到所述映射库;和递增所述映射库的像素计数。
18.如权利要求17的方法,其中所述确定亮度带的步骤还包括亮度带抗混叠。
19.如权利要求17的方法,其中所述确定颜色列的步骤还包括颜色列抗混叠。
20.如权利要求12的方法,其中所述合并步骤包括为接触左和上边界的当前块内的各个连通组分执行的下面的子步骤寻找沿着所述公共边界触及所述当前连通组分的一列连通组分;和确定合并的最佳候选。
21.一种包括处理器和存储器的装置,用于根据权利要求1到20中任意一个的方法给包括多个像素的数字图像分段。
22.一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有记录在其中的用于根据权利要求1到20中任意一个的方法给包括多个像素的数字图像分段的计算机程序。
23.一种自动产生颜色文档的紧凑表示的方法,所述方法包括步骤在一轮中按块光栅顺序,将颜色文档页的数字图像分段为连通组分;基于所述整个页的紧凑的、连通组分统计量,使用布局分析将所述页的所述数字图像划分为前景和背景图像;在所述前景图像的至少一个部分遮蔽了所述背景图像的位置,在一轮中以块光栅顺序修复所述背景图像的至少一个部分;和存储所述前景图像和背景图像,以形成紧凑的文档。
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)为连通组分。基于整个页的紧凑的、连通组分统计量,使用布局分析(120)将页的数字图像划分为前景和背景图像。在前景图像的至少一个部分遮蔽了背景图像的位置,背景图像的至少一个部分在一个轮中以块光栅顺序修复(520)。合并(130)前景图像和背景图像形成紧凑的文档。还公开了用于给包括多个像素的数字图像分段的方法、装置和计算机程序产品。
文档编号G06T7/00GK101091186SQ200580043979
公开日2007年12月19日 申请日期2005年12月20日 优先权日2004年12月21日
发明者詹姆斯·P·安德鲁, 詹姆斯·A·贝斯利, 斯蒂文·伊尔甘格, 陈玉玲, 艾瑞克·W-S·崇, 麦克尔·J·劳泽尔, 蒂默斯·J·沃克 申请人:佳能株式会社