专利名称:连续具有相似特性的图像数据的区域的系统和方法
技术领域:
本发明涉及与本申请同一日期提交的美国专利申请(代理案号117300.01,117521,117544,117746,117747,117748,118584,118591和118601),在这里引用其全部并作为参考。
本发明涉及将图像数据组织到具有相似颜色特性的区域中。
背景技术:
在高分辨率下扫描的文档通常要求很大量的存储空间。另外,大量的图像数据要求多得多的时间和带宽来操纵,比如在局域网或广域网上、在内联网、外联网或因特网或其他分布式网络上传递。
在使用扫描仪等扫描文档之后,通常使用RGB颜色空间(即以原始RGB(raw RGB)格式)定义所述文档。然而,文档图像数据并不是以该原始扫描的RGB格式被存储,而通常是受到某种形式的数据压缩来减少其量,从而避免了存储这样的扫描的RGB文档图像数据的高成本。
诸如Lempel-Ziv(LZ)或Lempel-Ziv-Welch(LZW)的无损游程(run-length)压缩方案,对扫描的图像数据或一般来说对具有平滑变化的低空间频率(诸如梯度和/或自然照片数据)的图像数据执行得不是特别好,然而诸如JPEG的有损方法对于平滑变化的连续色调图像数据工作良好。但是,有损方法通常例如对二元文本和/或线艺术(line art)图像数据或一般来说对包含尖锐的边缘或颜色过渡的任何高空间频率图像数据工作得不那么良好。
发明内容
描述了能识别属于在图像中共享颜色和边缘连续性特性的区域的像素的系统和方法。通过首先从顶部到底部扫描一个图像、并识别属于同一组的每条扫描线中的像素来识别区域。接着,ylink字段链接在一条线中的像素组以及其他线中的像素组,这些像素组共享相同的颜色和边缘连续性特性。这些组被链接在一起成为能作为一个组被处理的二维区域。
用于识别图像中区域的该方法可被应用于混合光栅内容(MRC)格式图像数据。MRC是特别适合处理具有与颜色和灰度信息相互混合的文本的合成图像的图像数据,其中图像被分段成两个或更多平面。这些平面通常被称之为背景平面和前景平面。选择器平面被生成来为合成图像中的每个像素指示哪些图像平面包含应当用来重建最后输出图像的实际的图像数据。按这种方式将图像数据分段成平面往往会改善图像的总体压缩,因为数据可被安排到不同的平面中,使得每个平面比原始图像数据更平滑和更可压缩。分段还允许对不同的平面应用不同的压缩方法。因此,对于每个平面中的数据类型的最适合的压缩技术可被应用来压缩该平面的数据。
不幸的是,一些诸如便携文档格式(PDF)的图像文档格式不完全支持原始文档的这样的三层混合光栅内容分解。结果,当试图打印或呈现已经使用该图像文档格式被压缩和被存储为混合光栅内容图像数据文件的文档时,该文档要么根本不能被呈现,要么在呈现时包含讨厌的伪像。
本发明提供用于将文档变换为混合光栅内容格式的、具有多个二元前景平面的图像数据的系统和方法。描述了用于将具有一个或多个相关特性的图像数据的像素聚集到(被称之为“斑点”的)区域中的系统和方法,所述区域具有封闭具有相似边缘连续性数值的像素的连续闭合曲线边界。描述了把标识出现在图像的单个扫描线上的斑点的扫描表格作为输入而获得的模块,并且该模块将这些出现在单个扫描线中的斑点连接到在先前的扫描现中出现的那些斑点。因为模块开始于页面的底部,并工作回到顶部,该模块被称之为从底部到顶部的模块。从底部到顶部的模块接着生成一个斑点的全局表格,其用一致的标识号描述出现在图像数据的一个页面中的所有斑点。
一旦生成斑点的全局表格,该表格被输出到下游处理模块,其按照各个斑点的空间关系和颜色相似性把它们集群在一起。区域的每个集群可被放置到多个二元前景平面的其中之一中。特别地,被聚集到一个给定二元前景平面中的每个区域具有与该给定二元前景平面足够类似的颜色,使得可利用在输出图像中呈现的可接受颜色来重现高质量的图像。
下面参照附图详细描述本发明的系统和方法的不同的示例实施例,其中图1说明被分解到多个二元前景图像平面和一个背景平面中的示例文档图像;图2说明其中能操作斑点识别模块的一个示例系统;图3更详细说明斑点识别模块的一个示例实施例;图4更详细说明从底部到顶部模块的一个示例实施例;图5说明一个示例斑点ID图像,其中所表示的区域参考扫描表格;图6显示一个示例扫描表格结构;图7显示一个示例扫描表格条目;图8显示一个示例临时斑点表格ID栈分配结构;图9显示一个示例临时斑点表格条目;图10说明图5所示的从底部到顶部模块的示例数据流图;图11说明扫描表格如何被垂直地链接;和图12说明一个示例斑点ID图像,其中所表示的区域参考临时斑点ID;图13是概述用于生成斑点的全局表格和斑点ID图像的一个示例方法的流程图;图14说明两个翻译表格的结构;图15是概述图13的选择下一个扫描表格步骤的进一步细节的流程图;和图16是概述图13的翻译扫描表格步骤的进一步细节的流程图。
具体实施例方式
公开了自动处理扫描的和/或打印的彩色文档以生成小的、高压缩的精确捕获原始文档内容的图像数据文件的系统和方法的不同示例实施方式。通过在文档中扫描并且分析给定扫描线中的数据以确定图像的哪些像素可因为它们具有类似颜色和边缘特性而被分组在一起来生成数据文件。接着根据链接域中的信息链接扫描线,以生成相似颜色的像素的二维区域,并且所述区域由封闭的曲线边界定义。通过组合在空间上重叠的类似颜色的区域来把这些区域或“斑点”集群在一起。组合的区域(集群的区域)接着被放置在多个二元前景层的其中之一中,并且可例如可被压缩以作为PDF文件被输出。
图1显示被分解成一个背景连续色调或灰度层(背景层)210和N个二元前景层的文档的图像数据。在本例中,存在6(N=6)个二元前景层220-270。所述图像数据包含被分离成6个不同颜色值的低空间频率颜色数据。6个颜色值的每一个与多个二元前景层220-270中的特定一个关联,所述二元前景层220-270包括包含6个颜色其中之一的空间区域220’-270’。不包括在区域220’-270’其中之一中的数据保留在背景层210中。将描述用于生成其每一个将被集群到一个二元前景层中的空间区域220’-270’的系统和方法。
输入像素只可能被分配到多个前景平面的其中之一或被留在背景平面中。因此,在多个二元前景层220-270的任何一个中的图像数据部分不与其他多个二元前景层220-270的任何一个中的其他图像数据重叠。结果,二元前景层220-270的每一个可单独地与背景层210组合而不用考虑顺序或次序。当所有多个二元前景层220-270与背景层210组合,就获得重建的图像280。
描述了用于识别将被集群到被分配到每个二元图像平面的区域220’-270’中的斑点的系统和方法。
图2显示用于从扫描的文档图像生成N个二元前景层的示例系统。图2显示由扫描仪400扫描以生成例如在RGB颜色空间中的图像数据的文档300,并且图像数据被输入到N层图像数据生成系统1000。由N层图像数据生成系统1000产生的N层接着由压缩模块800压缩并作为例如PDF文件输出。
N层图像数据生成系统1000中的第一模块是颜色变换模块500。颜色变换模块500可例如将RGB数据变换到YCC颜色空间。如周知的那样,YCC颜色空间包括亮度分量(Y)和两个色度分量(CC)。所述色度分量可以以2∶1的比率至少在一个方向上(如果不是在全部两个方向的话)作子采样,使得色度分量中的数据点有亮度分量中的数据点的一半那么多。还可以使用诸如Lab的其他颜色空间。
在YCC颜色空间中的图像可接着被输入到斑点识别模块600,该模块生成出现在图像中区域或斑点的列表。斑点是基于颜色和边缘特性被识别的。斑点是具有连续边界的区域,该边界封闭具有相似颜色值的像素。斑点识别模块600将斑点ID分配给图像中的每个像素,以指示像素属于那个斑点(如果有的话)。不属于斑点的像素被分配给背景层。每个像素位置的斑点ID的映射是斑点标识(斑点ID)图像,并由斑点识别模块600生成。
斑点识别模块600还生成斑点的全局表格(GTB),其是在文档图像280中找到的所有斑点的列表。在这里描述的系统和方法是用于生成斑点ID图像和GTB。将在下面参考斑点识别模块600和例子一起进一步描述斑点ID图像和GTB。
斑点ID数据、GTB接着被输入到斑点集群处理模块700。然后,斑点集群处理模块700把斑点的全局表格中的斑点(即类似颜色的且在空间上重叠的关联斑点)组织到集群中。斑点集群处理模块700将集群的区域分配到N个前景平面中的一个,这取决于组合的区域的颜色值。
斑点集群处理模块700为二元前景层的每一个和背景层将二元数据输出到压缩模块800。压缩模块800可使用适用于被压缩的数据的特定类型的压缩例程有差别地压缩二元前景层的每一个和背景层,以便为二元前景层和背景层生成压缩的图像数据。压缩模块800接着可以以诸如PDF格式的适合的格式将压缩的二元前景和背景层输出到下游过程。
图3进一步显示示例斑点识别模块600的细节。斑点识别模块包括从顶部到底部模块610和从底部到顶部模块620。从顶部到底部模块610检查扫描线上的每个像素以及检查多个环境像素,并且识别所涉及的像素属于哪个斑点。从顶部到底部模块610接着为每条扫描线输出一个扫描表格,其包括达到255个斑点的标识,或可在图像的任何特定扫描线中出现的其他方便的数目。由于由从顶部到底部模块610识别的斑点被包含在单个扫描线内,这种情况下的斑点是一维“线性”斑点。从顶部到底部模块610还生成斑点ID图像,其给图像中的每个扫描的像素分配列在扫描表格中的斑点的标识,特定像素属于该标识。从顶部到底部模块610的操作和扫描表格的生成在与本申请同一日期提交的共同待审定的美国专利申请(代理案号117521)中详细描述,在这里引用其全部并作为参考。
图5中示出初始斑点ID图像的例子。该斑点ID图像具有用于图像中每个像素的斑点标识符。图5中示出的斑点ID图像具有大约如字符“A”的形状的斑点,使用根据本发明的系统和方法来确定其范围和身份。
图4显示从底部到顶部模块620的进一步细节。从底部到顶部模块620包括CPU655、输入/输出端口660、存储器665、扫描表格翻译器670、斑点内容更新器675和斑点的全局表格生成器680。上述部件655-680可经由总线685被耦合到一起。虽然使用总线体系结构图说明从底部到顶部模块620,可以使用任何其他类型的硬件配置,诸如使用特定用途集成电路(ASIC)来实现一个或多个部件,或写一个在CPU655中执行的计算机程序来执行从底部到顶部模块的所有功能。
从底部到顶部模块620通过输入/输出端口660输入来自从顶部到底部模块610的初始斑点ID图像、当前扫描线的当前扫描表格、和先前扫描线的先前扫描表格,并在存储器665中存储数据。从底部到顶部模块可同时接收一条扫描线和一条先前扫描线的数据,或它可接收整个图像的数据,并在存储器665中存储数据。
图5的斑点ID图像中的每条线与一个扫描表格关联,该表格存储与在每条扫描线中识别的斑点有关的信息。在图6中示出被标记为“例子”的线的扫描表格。在图5中标记为“例子”的线具有多个关联在一起的像素。该线的扫描表格具有四个表格条目一个用于斑点#4,一个用于斑点#3,一个用于斑点#2和一个用于斑点#1,如斑点ID图像中标识的那样。(标为“0”的斑点是指背景层)。属于斑点的像素不需要是邻接的,并且实际上对于示例线,它们不邻接。初始斑点ID图像中的斑点ID是指在当前扫描表格中的斑点ID。
一个扫描表格可以保存多达255个条目或其他方便的数量的条目,对于255个条目的扫描表格,每个条目使用两个字节的存储器。在图7中示出扫描表格条目的例子。该扫描表格条目对应于在斑点ID图像中被标识为#4的斑点。扫描表格条目的两个字节包括xlink字段和ylink字段。xlink字段将每个斑点与在同一条线上的属于同一斑点的像素链接。xlink字段连接可被维护成循环列表,从而没有与任何其他斑点水平连接的斑点可与其自身连接,即链接指向它本身。Ylink字段将在当前扫描线上识别的斑点与在先前扫描线上识别的斑点链接。因此,示例线的斑点#4的扫描表格条目具有指向在同一扫描线上的斑点#4的第二次出现的xlink条目和把斑点#4链接到在下面的扫描线上的斑点#3的ylink条目。
每个扫描条目的大小为两个字节,并且每个扫描表格包括高达255个有效条目。因此,每个扫描线的扫描表格要求256个条目×2字节=512字节的存储器。
从底部到顶部模块620通过给斑点另一个临时ID来垂直地获得扫描表格条目和斑点,同时该模块集合斑点的内容。如同扫描表格,临时ID被存储在包含高达255个临时斑点ID的表格中。临时斑点ID的一个例子在图6中示出。
图9中示出临时斑点ID条目的例子。与扫描表格ID条目比较,临时ID条目包含与临时ID的二维方面有关的附加的信息。特别地,临时ID条目包含四个附加的字段min_x 735,max_x 740,min_y 745和max_y 750,它们是围绕临时斑点的“边界框”的x-和y-范围。边界框是完全封闭被分配给斑点的所有像素的最小矩形。随着附加的像素被从底部到顶部模块添加,边界框持续地被更新,以反映在添加附加的像素之后的新边界。
如同扫描表格条目,临时斑点ID可维护关于斑点的颜色值的信息。该信息例如可包括颜色和sum Y 755、sum Cb 760以及sum Cr 765。最后,如同扫描表格条目,临时斑点ID条目存储像素计数770和差异数据775。该临时斑点ID条目还标识斑点ID 780并在之后将其分配以跟踪该斑点。
每个临时斑点ID条目用以下值初始化(i)max_x和max_y被设置为-1(非最大位置)(ii)min_x被设置为图像宽度+1(非最小)(iii)min_y被设置为图像高度+1(非最小)计数、var、sum Y、sum Cb以及Sum Cr都被初始化为0。按相继的顺序从斑点ID栈分配斑点ID。
当从底部到顶部模块首先遇到一个新的斑点时,它分配一个临时ID给这个新的斑点。该临时ID是从维护使用中的临时ID列表的斑点ID栈表格中获得的。在图8中示出斑点ID栈表格的结构。斑点ID栈表格可保存高达256个临时斑点ID条目。例如,诸如第一个条目的一个条目为背景平面保留。斑点ID栈表格的主要目的是回收临时斑点ID。一旦一个斑点被完成,其就被输出到下游过程,并且与该斑点关联的临时ID被释放并通过斑点ID栈机制可用于重新分配给新的斑点。
当从底部到顶部模块620确定斑点被完成(即斑点被连续的边界封闭并且不再添加附加的像素)时,从底部到顶部模块620将临时斑点ID的内容输出到斑点的全局表格(GTB)。从底部到顶部模块620还递增地更新斑点ID图像,以参考新的斑点标识符,而不是那些在局部扫描表格中使用的标识符。更新的斑点ID图像和GTB接着被输出,以用于由斑点集群处理模块700进行进一步处理。
从底部到顶部模块620可实质上对扫描表格和斑点ID图像输入执行四个步骤1)使用下面线上的先前翻译表格将扫描表格条目翻译成翻译表格中的临时斑点ID。
2)如果一个或多个条目被发现包含没有以循环方式指向其本身的末端xlink值,可对翻译表格内容执行第二个回合(pass)。
3)将斑点ID图像更新到临时斑点表格内容,以反映与这些临时斑点条目关联的在当前扫描线上的附加的像素。
4)把任何关闭的临时斑点ID导出到GTB,并释放分配给闭合的斑点的资源并使其可用于按需分配给新的临时斑点。
从底部到顶部模块620中的数据流由图10显示。如图10所示,当前线的扫描表格条目由扫描表格翻译器670输入。扫描表格翻译器670使用下面的线的先前的翻译表格将扫描表格条目翻译成临时斑点ID。斑点ID图像和增强的颜色图像ENH被输入到斑点内容更新器675,其为当前线上的所有扫描表格条目更新临时斑点表格信息和斑点BID图像。GTB生成器680接着确定是否闭合了任何斑点,并且如果是这样,通过将斑点信息输出到GTB来闭合斑点。闭合的斑点信息被附着到当前GTB,并且当前的临时斑点ID按相继的顺序被下一个可用的GTB条目替换。这些步骤的每一个将在下面详细描述。
在接收来自从从顶部到底部模块610的当前扫描表格并保留下面的线的先前翻译表格时,从底部到顶部模块620从1到255评估当前扫描表格中的每个条目,以检查它是否具有有效的(非零)的xlink字段。
在此时,从底部到顶部模块620已经处理了下面的线的先前的扫描表格,因为模块是向上行进的。因此,先前扫描表格条目已经被翻译成临时斑点id并且相同的id在被垂直链接时被传送到当前的线。因为第一个扫描线(图像的底部线)不具有其可被链接到的先前扫描线,该第一个扫描线的所有ylink值是0,并且在第一个扫描线中的每个有效斑点条目被给予一个初始临时斑点ID。随着该过程从底部向上每次继续一条线时,其“解开”垂直的ylink连接并且重新分配从一条线到另一条一致的唯一临时斑点id。
从底部到顶部模块620借助翻译表格维护临时斑点ID的分配。从底部到顶部模块620使用两个翻译表格,一个用于当前线,一个用于维护来自下面的线的先前的翻译表格。图14显示两个翻译表格的结构。所述两个翻译表格对于每条线交替。在当前线的末尾,当前翻译表格变为下一条线的先前翻译表格,以及因为不再需要了,因而通过由下一线的翻译表格数据重写来销毁下面的线的翻译表格。
图14说明在下面的线的扫描表格中的有效斑点条目27的例子,该条目与当前线扫描表格中的有效斑点条目21垂直的链接。当下面的线被从底部到顶部模块620处理时,扫描表格条目27例如被翻译成所分配的临时ID 33。因为当前线条目21是垂直链接到下面的线的27的,临时ID3 3被拷贝和分配给当前线的翻译表格中的条目21。这指明两个看上去不相关的扫描表格条目属于同一个临时斑点,并从而被分配了同一临时斑点ID 33。
经由ylink字段参考早先扫描线上的斑点的所有后续扫描线将共享来自早先扫描线上的斑点的临时斑点ID。因此,从底部到顶部模块的动作是建立所识别的斑点之间的垂直的关联,将来自扫描表格的实质上是一维的斑点转换成在斑点的临时表格中列出的二维斑点。
当xlink字段是非零时,在扫描表格中的当前斑点条目被认为是有效的。否则,如果xlink=0,其指明当前斑点被链接到背景平面(id=0)。
对于每个有效斑点条目,检查ylink字段。如果ylink是非零的,当前斑点垂直链接到在下面的线上的另一个斑点。跟随ylink到下面的线的先前的翻译表格,并且临时斑点ID内容被检索并被拷贝到当前线的翻译表格斑点条目。
但是在另一方面,如果当前斑点不具有到任何先前斑点的垂直链接(例如ylink=0),那么其可是第一次遇到的新的斑点。首先作出一个检查来观察当前扫描表格条目是否垂直链接到在当前线上的任何其他扫描表格条目。一个不垂直链接到任何其他斑点的有效的斑点具有如循环xlink列表所指的那样的指回其自己的斑点条目的xlink值。如果当前斑点被确定为垂直链接到其他斑点,那么对应的斑点条目在翻译表格中被设置为0,并且打开标志“HasTerminalX”以指示发生的这个条件。在后续的步骤中,从底部到顶部模块620还可进一步检查这样垂直链接的翻译表格斑点条目,以确定是否分配新的临时斑点ID给它们。
如果当前斑点是有效的、具有一个零ylink并具有一个以循环的方式指回其本身的xlink值,那么其可被考虑为第一次遇到的有效的新的斑点。从ID栈分配下一个可用临时ID给它,并且将所分配的ID插入到当前翻译表格中,以指明当前的扫描表格条目现在与这个新的临时ID关联。同时,ID栈计数器将递减1,此时指向下一个可用的自由的临时ID。该当前临时ID将保持使用直到由GTB生成器680释放,这将在下面描述。从底部到顶部模块620维护临时斑点ID并在其继续将扫描表格条目分配给临时斑点时更新临时斑点信息。
最后,如果当前斑点xlink字段是0,那么其就被考虑成与背景平面链接。该对应的翻译表格条目被设置为0。
在扫描表格翻译过程完成通过扫描表格条目的第一个回合以创建初始翻译表格后,如果“HasTerminalX”标志是打开的(指明至少一个斑点被确定为垂直链接到当前线上的另一个斑点),执行第二个回合。在第二个回合中,只检查在翻译表格中先前被设置为0的斑点条目。对于在当前翻译表格中的每个这样的斑点条目,再次从当前扫描表格检索xlink和ylink值。如果ylink=0并且xlink非零,如上述的那样从ID栈获得新的临时ID,并且将其分配给翻译表格中的当前条目。另外,跟随xlink字段到下一个垂直链接的斑点条目(如果有的话),并且该斑点的对应的翻译表格条目也被分配了同一新的临时ID号。该过程重复通过所有垂直链接的斑点,直达达到指回第一个开始斑点ID的下一个xlink值。该过程确保垂直链接的斑点的整个链被一致地分配了相同的新的临时ID号。
当扫描表格翻译器670完成其任务达到每线两个回合时,在当前扫描表格中的所有有效斑点将具有在翻译表格条目中的有效的临时斑点ID号。这些值被称之为临时斑点ID号,因为只有到斑点闭合并被导出到GTB时才由GTB生成器680使用它们。
返回到图5说明的例子,对于在图中所示的示例线,在图7中显示第四个扫描表格条目。xlink字段是有效的(4.xlink>0)并且是垂直连接到下面的线上的斑点3。跟随当ylink字段向下到下面的线上的扫描表格时,可以发现3.ylink=1,也就是说,在斑点的第一条(底部)线中的临时斑点id#1是垂直链接到扫描表格斑点ID#3。新的ylink值1被拷贝到扫描表格中的当前斑点id#4的当前翻译表格条目,使得现在4.ylink=1(临时ID)。因为这个例子中的两个扫描表格斑点是垂直链接的,来自下面的线的翻译表格分配的临时斑点ID被拷贝到当前翻译表格条目中。通过向上扩展这个过程,与这个形成一个斑点的像素组关联的第一临时斑点ID(被分配到最底部的扫描表格斑点)将被向上传播并且对于所有垂直连接的斑点是一样的。
图11说明图5中所示的例子的翻译表格的之前和之后的值。可以通过比较之前和之后的值看出,效果是(如在下面的线的翻译表格中所指示的那样)与下面的线上的链接关联的临时斑点ID(#1)作为当前的翻译表格条目被插入。该过程为上面的线上的所有垂直连接的斑点重复其自身,由此将同一临时ID分配给在它们的对应的翻译表格中的所有斑点。
因此,从底部到顶部模块620的任务是从由从顶部到底部模块610生成的实质上是一维的扫描表格信息创建二维斑点,这是通过利用翻译表格条目将一维斑点垂直地或水平地链接在一起。二维斑点的每一个由作为由从底部到顶部模块620集合的二维斑点的临时列表的临时斑点ID标识。每次遇到扫描线上的新的斑点时(其还没有垂直链接)它就被给予一个新的临时斑点ID。如果它是水平链接到当前线上的其他斑点的新的斑点,同一新的临时斑点ID一致地被分配给所有如此水平链接的斑点。当该ID被后续的扫描线参考时,新的像素被与该相同的临时斑点ID关联。
斑点内容更新器675过程在扫描表格翻译器670已经完成处理当前线之后开始。斑点内容更新器675用每个临时斑点ID的多个字段维护斑点结构。在每条线的末尾,斑点内容更新器675更新每个活跃的临时斑点ID的斑点结构,以包括来自与每个开放的ID关联的当前线的新的像素的信息。对于在当前扫描表格中的每个有效斑点条目,斑点内容更新器675查找翻译表格,以确定对应的临时斑点ID号。斑点内容更新器675接着更新与斑点表格中的特定临时斑点ID条目关联的不同的字段。
斑点内容更新器675接着从左到右(按光栅的顺序)为当前的扫描线一次一个像素地扫描BID图像。对于每个像素,初始BID值指示与当前像素关联的局部扫描表格斑点ID。该扫描表格ID条目已经在当前扫描表格中(对于当前线)被查找,并且通过查找当前翻译表格条目被跟随到对应的临时斑点ID。
对应于临时斑点ID的斑点结构条目被更新以包括任何与在当前线上的该临时斑点ID关联的新的像素。特别的,在临时斑点表格条目中的字段被更新如下(i)min_y被设置为当前线(如果线号<min_y)(ii)max_y被设置为当前线(如果线号>max_y)(iii)min_x被设置为当前像素(如果像素<min_x)(iv)max_x被设置为当前像素(如果像素>max_x)(v)在局部扫描表格斑点中的像素的数目被添加到计数(vi)在局部扫描表格斑点中的差异被添加到var(vii)在局部扫描表格斑点中的颜色总和被分别添加到sum Y,sum Cb以及sum Cr。
这有效地将与该局部扫描表格斑点关联的像素的内容添加到对应的临时斑点字段,并参照当前像素位置更新临时斑点边界框。
为了防止在临时斑点表格中的每个有效(非背景)斑点条目的YCC和字段(sum Y,sum Cb以及sum Cr)的溢出,每次这些字段中的任何一个的值变得太大时,重新规格化这些字段。这可以通过将YCC和字段除以2并且也将像素的计数数目除以2来完成,以便维护相同的比率。
最后,斑点内容更新器675更新当前像素的斑点ID以指向(刚被更新的)临时斑点而不是指向原始的局部扫描表格斑点。该过程更新BID图像以参考临时斑点ID号而不是原始的扫描表格斑点分段。图12是来自图4的斑点ID图像,其中根据构成字母“A”的一部分的每条扫描线的临时斑点ID信息,形成字母“A”的斑点中的所有像素的斑点ID已经被用来自临时斑点ID表格的临时斑点ID#1代替。min_x、max_x、min_y和max_y是如图12所示的围绕斑点#1的边界框的坐标。斑点#1现在是闭合的,因为向上的下一线不包含与斑点#1关联的其他像素。
保持临时斑点ID有效直到确定该临时斑点是否可以被闭合,即不再有与该临时斑点关联的当前线上的像素。临时斑点ID可被闭合,只要(1)斑点没有到达当前扫描线(min_y>当前线);和(2)斑点具有非零计数(像素的总数)。另外如果当前线是最后的扫描线(line=0),那么斑点就被闭合,因为不再有要处理的线了。由于从底部到顶部模块620从页面的底部向顶部工作,最后的扫描线是图像的第一条线。
对于满足上面条件的每个斑点,GTB生成器680可通过将YCC和除以计数等来规格化临时斑点信息。当斑点条目被导出到最后的GTB时,斑点信息内容被附着到GTB,并且临时斑点ID被来自GTB的下一个可用ID(最后的斑点ID分配)替代。因此,从临时斑点表格移除临时斑点条目和关联的信息。导出过程可包括以下步骤1)将三个临时斑点颜色总和(sum Y/Cb/Cr)除以斑点像素计数,并且将结果四舍五入成下一个整数值。该操作产生平均斑点颜色。为了避免耗时的操作,可通过使用查找表格乘法和右移操作来实现除法。
2)检查以确保GTB中存在用于更多斑点的空间。如果没有空间,分配能保存两倍斑点的新的GTB,将旧的表格内容拷贝到新的表格,并接着删除旧的表格。从此时开始使用新的GTB。当GTB大小是基于页面内容变化且斑点的数目在之前未知时该步骤可能是必要的。步骤2允许在创建GTB时GTB的大小动态地增长(在本例中是2的幂)。
3)通过将GTB计数递增1来将新的斑点添加到GTB。
4)将临时斑点条目的所有字段的内容从临时斑点表格拷贝到在最近的新的条目之下的GTB。
当闭合的斑点被导出到GTB时,其被分配给GTB中的一个新的顺序斑点id号。与被限制为最多256个条目的临时斑点表格不同,GTB中的斑点数量不被限制并且对于一个复杂页面可包含数千个斑点。
在当前临时斑点的内容被输入到GTB之后,可从临时斑点表格移除临时斑点。移除过程可包括将各个斑点字段重置为它们的默认(初始)值。在初始化之后,当前临时斑点ID被推回到临时斑点ID栈。这使得临时斑点ID作为最后的栈条目被添加并且栈计数器被递增1。结果,斑点ID可用于重新使用。如果在找到新的斑点之前没有附加的斑点ID被释放,那么斑点ID可被马上重新分配给新找到的斑点。
因此,通过拷贝关联的临时斑点条目的内容,闭合的临时斑点被传递到GTB。GTB存储由斑点识别模块600识别的最后的斑点列表以及在GTB中的每个斑点的关联的斑点信息。
GTB和斑点ID图像BID随后被斑点集群处理模块700使用,该模块根据颜色类似性和空间重叠集群GTB中的斑点。所述集群接着被分配给二元前景平面,其可接着被输出到压缩模块800,并被包装成PDF文件用于以后的操纵。
虽然参考了硬件实施例给出了先前的描述,斑点集群过程还可作为在微处理器上执行的软件实现。在这种情况下,所述方法的每个步骤由适当编程的微处理器或由硬件和软件的组合执行。
图13是概述用于链接在线扫描设备中识别的斑点的示例方法的流程图。方法起始于步骤S100,其中选择第一条或下一条扫描线。过程进行到步骤S200,其中翻译扫描表格。过程进行到步骤S300,其中确定HasTerminalX是否被设置成1。如果是,过程进行到步骤S400,其中新的ID被分配给所有水平链接的斑点。如果不是,过程进行到步骤S500,其中确定xilink是否大于0。如果是,过程进行到步骤S600。在步骤S600中,扫描表格的ylink字段被检索,并被跟随到先前的线。过程进行到步骤S700,其中中间的线的ylink被跟随直到达到底部线,从这里检索临时斑点ID。过程进行到步骤S800,其中斑点ID图像被临时斑点ID替换而不是被扫描表格斑点ID替换。过程进行到步骤S900,其中临时斑点ID条目被更新以反映添加到来自当前扫描线的斑点的附加的像素。在步骤S1000中,临时斑点表格被评估以观察是否有任何斑点可被闭合。如果是,在步骤S1100中通过将其颜色总和除以像素计数来规格化临时斑点ID条目。过程继续到步骤S1200,其中临时斑点条目被拷贝到GTB。在步骤S1300中,临时斑点ID被初始化并被返回到临时斑点ID表格,用于将来的使用。过程进行到步骤S1400,其中确定当前扫描线是否是最后的扫描线。如果不是,过程跳回到步骤S100。如果是,步骤结束。
图15是概述图13的步骤S200的进一步的细节的流程图。过程开始于步骤S210,其中标志“HasTerminalX”被设置为0。过程进行到步骤S215,其中选择扫描表格中的下一个斑点条目。在步骤S220中,确定xlink是否等于0。如果是,过程进行到步骤S240,其中当前翻译表格被设置为0。如果不是,在步骤S225中,确定ylink是否等于0。如果不是,来自下面的线的翻译表格的当前条目被拷贝到ylink字段中。在步骤S225中,如果ylink字段等于0,那么在步骤S230中确定xlink是否等于当前斑点条目。如果不是,过程进行到步骤S250,其中当前翻译表格被设置为0,并且HasTerminalX被设置为1。在步骤S230中,如果xlink等于当前斑点表格条目,那么在步骤S235中分配新的ID。过程进行到步骤S255,其中确定条目是否是扫描表格中的最后的斑点条目。如果不是,过程跳回步骤S215。如果是,过程在步骤S260结束。
图16是概述图13的步骤S100的进一步的细节的流程图。过程开始于步骤S110,其中选择下一个扫描表格条目。过程进行到步骤S115,其中在扫描表格中查找xlink和ylink。在步骤S120中,确定xlink是否等于0。如果不是,过程进行到步骤S125,其中确定ylink是否等于0。如果是,过程进行到步骤S130,其中确定翻译表格条目是否为0。如果是,从ID栈分配新的ID。过程接着进行到步骤S140,其中跟随xlink到下一个斑点条目。在步骤S145,同一新的斑点ID被分配给斑点条目。在步骤S150中,确定是否评估了最后的xlink。如果不是,过程跳到步骤S140,其中跟随xlink到下一个斑点条目。如果是,过程进行到步骤S155,其中确定最后的扫描表格条目是否已被评估。如果不是,过程跳到步骤S110,其中选择下一个扫描表格条目。如果最后的扫描表格条目已经被评估,那么在步骤S160结束过程。
虽然已经结合各个示例实施例描述了本发明,但是这些实施例应当被看作是说明性的,而不是作为限制。各种修改、替换等等都可能落入本发明的精神和范围内。
权利要求
1.一种用于识别图像数据中的像素的区域的方法,包括a)识别一个包含图像数据的第一条线中的像素的斑点,所述像素在颜色特性上的差别小于预定的量;b)将所述斑点与一个临时斑点标识符关联;c)识别包含图像数据的邻近的线中的像素的附加的斑点,所述像素在颜色特性上的差别小于预定的量;d)如果附加的斑点被链接到所述斑点,将附加的斑点与所述临时斑点标识符关联。
2.一种用于识别图像数据中的像素的区域的方法,包括识别一个包含图像数据的周线中的像素的斑点,并将所述斑点与一个临时斑点标识符关联,所述像素在颜色特性上的差别小于预定的量;紧接着从与所述周线相邻的下一条邻近线开始识别包含有在颜色特性上的差别小于预定的量的像素的下一个斑点;如果所述下一个斑点基于所述下一个斑点的链接信息而被链接到所述斑点或者与所述斑点链接的之前的下一个斑点,则将所述下一个斑点与所述临时斑点标识符关联;紧接着继续识别包含与新的下一条邻近线相邻的下一条邻近线的、在颜色特性上的差别小于预定的量的像素的下一个斑点;继续将下一条邻近线的所述下一个斑点与所述临时斑点标识符关联,直到达到一条不具有链接到所述斑点的斑点的线。
3.一种图像数据处理设备,包括斑点处理器;和与斑点处理器耦合的存储器,该存储器存储将图像数据的两个或多个线斑点链接在一起的链接信息,其中斑点处理器将一条线的线斑点和被链接到一起的连续邻近的各线的斑点集合成单个斑点,并为该单个斑点分配一个唯一的斑点ID。
4.一种用于识别图像数据中的区域的设备,包括一种装置,该装置用于根据周线中的像素的颜色和边缘特性将所述周线中的像素分配给一个斑点、用于将下一个邻近线中的像素分配给下一个斑点、用于根据所述下一个斑点和所述斑点的颜色特性提供把所述下一个斑点链接到所述斑点的链接信息、以及用于紧接着根据颜色特性识别在与所述下一个邻近线相邻一条新的下一个邻近线上的新的下一个斑点;另一种装置,该装置用于在所述新的下一个斑点没有被链接到先前的下一条邻近线中的任何其他斑点的情况下将所述下一条线中的所述新的下一个斑点链接到一个新的临时斑点标识符、用于将所述下一个斑点链接到一个先前的斑点、用于在所述先前的斑点被链接到所述斑点的情况下将所述先前的斑点链接到所述临时斑点标识符、以及用于将所述下一条邻近线上的所述下一个斑点与所述临时斑点标识符关联,直到达到一条不具有链接到所述斑点的任何斑点的线为止。
全文摘要
一条线一条线地分析图像数据,以识别具有类似颜色和边缘特性的像素。如果共享类似特性,在一条线上的像素被链接到另一条线上的像素。所链接的像素接着被一起分组到区域中,并且计算区域的平均颜色。生成标识像素所属于的区域的图像映像以及区域的最后的表格。
文档编号G06K9/50GK1655582SQ200510009469
公开日2005年8月17日 申请日期2005年2月8日 优先权日2004年2月12日
发明者D·J·库里, A·纳发里赫, D·克勒特, T·W·塔耶 申请人:施乐公司