生成图形目标的方法

文档序号:6651931阅读:226来源:国知局
专利名称:生成图形目标的方法
技术领域
本发明总体上涉及生成基于目标的图像。具体而言,本发明涉及使用多个生成技术的生成图形目标的方法。
背景技术
当计算机应用向用于打印和/或显示的设备提供数据时,经常把页面的中间描述提供给在页面描述语言(PDL)中的设备驱动程序软件,页面描述语言提供了将在该页或显示器上生成的图形目标的说明。这一些装置完全不同,在它们中直接由应用程序产生光栅图象数据并且传送以打印或显示。页数描述语言的例子包括Canon的LIPSTM和HP的PCLTM。
同样,应用程序可向例如MicrosoftTMWindows GDI的图形设备接口层提供在函数调用中的图形目标的一套描述。用于相关目标打印机的打印机驱动程序是从GDI层接收图形目标描述的软件。对于每个目标,打印机驱动程序负责以可由目标打印机的生成系统理解的页面描述语言产生目标的说明。
打印机的生成系统包含PDL解释器,解释器解析图形目标描述,并且建立图形目标数据的显示列表。生成系统也包含光栅图象处理器(RIP),其处理显示列表并且将数据生成为包括例如C,M,Y和K信道的像素值。一旦处于此格式,打印机打印页面。
大多数RIP利用大量的存储器,如众所周知的帧存储或页缓冲区,保存用于后续印刷和/或显示的页或屏幕的基于像素的图像数据说明。一般地,计算图形目标的轮廓,用色值充满轮廓并且将它们写到帧存储。对于二维的图形,简单地将出现在其它目标前面的目标写到在背景目标之后的帧存储里,从而在一个像素接一个像素的基础上替换背景目标。这通常称为“画具算法(Painter’salgorithm)”。以优先顺序考虑从最后的到最前的目标。一般地以扫描线顺序光栅扫描(rasterized)每个目标,并且在沿着每个扫描线连续的运行把像素写到帧存储。一些RIP允许目标与其它目标合成。例如逻辑或算术运算可以指定并且在一个或多个图形目标和在帧存储中已经生成的像素之间执行。在这种情况下,生成原则保持不变按扫描线顺序光栅扫描目标(或目标组),而且在沿着每个扫描线的连续运行,计算指定操作的结果,并把结果写到帧存储中。
画具运算生成法存在许多问题。一个问题是当生成后来的目标时通过生成一个目标而写到帧存储的许多像素将被重写。很清楚在使用资源将像素数据写到后来将重写的帧存储里时存在不利情况。
另一个问题是当目标要求合成时,一般地从帧存储中读取目标下的像素,并且把它们以某种方式与目标像素合并。如果帧存储中的像素保存在比要求合成的目标更低的位深(bit-depth),则大多数的合成操作产生不正确的结果。当例如图形目标是每个信道8位的RGBA位图且帧存储保留每个信道一位的半色调像素数据时是这种情况。这可以发生,因为像素值经常以印刷所需的位深保存在帧存储中。尽管有可能以每个信道全8位来存储像素,每个信道8位的RGBA帧存储在600dpi分辨率对于一张A4页面要求大于100MB的存储器。此外,一旦页面生成为每个信道8位的帧存储,必须把它转换到更低的位深以便打印,这是低效的。
其它RIP利用像素顺序生成方法,以便不再需要帧存储,并且克服过度着色的问题。在这些系统,以光栅顺序产生每一个像素。将更绘图的所有目标保持在显示列表中。在每个扫描线上,以与扫描线相交的递增顺序来保存与扫描线相交的目标的边缘。按顺序考虑这些相交点,或边缘交叉线,并且激活或停用在显示列表中的目标。在考虑的每一对边缘之间,根据哪些目标没有由不透明目标模糊化(像素-流程),为像素的间隔产生位于第一个边缘和第二边缘之间的用于每一个像素的颜色数据。在下一个扫描线的准备中,根据每个边缘的性质更新每个边缘的相交的坐标,并且把边缘排序成与那个扫描线相交的递增顺序。此外任何新的边缘也合并到边缘列表里,它被称作有效边缘列表。在本说明中,仅仅在一个像素流程中生成没有由不透明目标模糊化的目标生成方法称为“像素顺序生成方法”。
利用这样的像素顺序生成的图形系统具有显著优势,因为没有帧存储或行存贮,且没有不必要的过度绘图。在每个像素基础上使用每个目标的初始颜色数据处理要求合成的目标。
当必须为每个扫描线跟踪大量边缘并且把它们保持在由x升序排序顺序时,像素顺序生成遭遇困难。因为在扫描线中更新每个边缘,所以通常通过插入排序将边缘再插入活动边缘列表中。对于可能包括几十万个边缘的复杂页面,为每个扫描线保持边缘排序表所更求的时间变为占生成复杂页面的总时间的一大部分。

发明内容
本发明的一个目标是基本上克服,或至少改善,现有装置的一或多种不利情况。
根据本发明的第一方面,提供了生成由一个图形目标列表描述的图像的方法,该方法包括步骤把列表中的目标分配到第一目标集合和第二目标集合中的至少一个;使用第一生成方法生成第一目标集合到图像存储器,该第一生成方法确定第一集合中一个目标的一部分是否贡献于第一目标集合的生成的输出,并且如果是的话,第一生成方法生成该部分;和使用第二生成方法生成第二目标集合到图像存储,第二生成方法独立于第二集合中的其他目标来生成第二组中的每个目标。
根据本发明的进一步的方面,提供了一种生成基于目标的图像的方法,该方法包括步骤接收显示列表,该列表按从最低优先级目标到最高优先级目标的优先顺序列出图像的目标,其中显示列表具有要求合成的最高优先级目标的最后的合成目标;处理第一生成任务,第一生成任务操作显示列表中从最低优先级目标直到最后合成目标的目标;和处理至少一个第二生成任务,该任务操作具有比最后合成目标更高优先级的显示列表中的一个或多个目标,其中第一生成任务确定目标的一部分是否贡献于由第一生成任务处理的目标的生成的输出,并且如果是的话,生成该部分,并且其中第二生成任务独立于由第二生成任务处理的其它目标,生成目标到图像存储。
根据本发明的另外方面,提供了生成由表示为图形目标的数据来描述的图像的方法,该方法包括步骤(a)接收描述图像的目标列表,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;(b)按递增优先级的顺序考虑列表中的目标,并且对于每个当前考虑的目标这样处理(ba)如果当前考虑的目标不要求合成,使用第一生成方法生成当前考虑的目标到图像存储;并且(bb)如果当前考虑的目标要求合成,执行下列步骤(bb)(i)确定列表中具有比当前考虑的目标更低优先级并且具有与当前考虑的目标的边界框重叠的边界框的目标;以及bb(ii)使用第二生成方法生成当前考虑的目标和已经确定的目标,该第二生成方法确定一个目标的一部分是否贡献于由第二生成方法处理的目标集合的生成的输出,如果是的话,该第二生成方法生成该部分。
根据本发明的进一步的方面,提供了生成基于目标的图像的方法,该方法包括步骤(a)接收显示列表,该列表按从最低优先级目标到最高优先级目标的优先顺序列出图像中的目标;(b)根据至少一个预定的标准,把列表中的目标分配到第一目标集合和第二目标集合中的至少一个;(c)使用第一生成方法生成第一目标集合中的目标;并且(d)使用第二生成方法生成第二目标集合中的目标,其中,对于每轮将要生成的顺序像素,第一生成方法包括下列步骤(ca)确定第一目标集合中的对于像素的流程是有效的目标;(cb)识别具有已确定的有效目标的最高优先级的不透明目标;以及(cc)生成最高级的不透明目标和具有比最高级的不透明目标更高优先级的非不透明的有效目标;而且其中,对于每轮将要生成的顺序像素,第二生成方法包括下列步骤(da)检查第二目标集合中的当前目标是否是有效的,第二目标集合是按递增优先级顺序考虑的;和(db)如果当前目标是有效的,生成当前目标到图像存储。
根据本发明其它方面,提供了生成基于目标的图像的方法,该方法包括步骤按从最低优先级目标到最高优先级目标的优先顺序接收图像中的目标列表;将列表中的目标分配到至少一个目标集合中,其中集合中的目标在列表中具有连续的优先顺序,且其中集合中的每个目标不与集合中的任何其它目标重叠;生成至少一个目标集合到图像存储。
根据本发明的进一步方面,提供了生成由一个图形目标列表描述的图像的方法,该方法包括步骤把列表中的目标分配到第一目标集合和第二目标集合中的至少一个;使用像素顺序生成方法生成第一集合中的目标;并且使用画具运算生成法生成在第二集合中的目标。
根据本发明的另一个方面,提供了用于生成由一个图形目标列表描述的图像的设备,该设备包括第一装置,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成的输出,如果是的话,所述第一装置生成该部分;第二装置,使用第二生成方法生成目标到图像存储,该第二方法独立于由所述的第二装置接收到的其它目标来生成由所述第二装置接收的每个目标;以及用于把列表中的图形目标分配到所述第一装置和所述第二装置中的至少一个的装置。
根据本发明的另一个方面,提供了用于生成基于目标的图像的设备,该设备包括第一装置,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成的输出,如果是的话,所述第一装置生成该部分;第二装置,使用第二生成方法生成目标到图像存储,该第二生成方法独立于由所述第二装置接收到的其它目标生成由所述第二装置接收到的每个目标;用于接收图像中的目标列表的装置,其中按从最低优先级目标到最高优先级目标的优先顺序对列表中的目标排序,并且列表具有最后合成的目标,即要求合成的最高优先级的目标;装置,用于把目标分配到所述用于生成的第一装置,和所述用于生成的第二装置,其中所述用于分配的装置把从最低优先级目标直到最后合成目标的列表的第一部份分配到所述用于生成的第一装置,并且将一个或多个优先级高于最后合成目标的目标分配到所述用于生成的第二装置。
根据本发明的其他方面,提供了用于生成基于目标的图像的设备,该设备包括第一装置,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成的输出,如果是的话,所述第一装置生成该部分;第二装置,使用第二生成方法生成目标到图像存储,该第二生成方法独立于其它接收的目标生成由所述第二装置接收到的每个目标;用于接收图像中的目标列表的装置,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;用于对于一个要求合成的目标确定列表中的目标的装置,这些目标具有比合成目标更低优先级且具有与合成目标的边界框重叠的边界框;用于把非合成目标从列表中分配到用于生成的第二装置的装置;和用于从列表中把合成目标的装置,以及由所述用于确定的装置为每个合成目标确定的目标分配到用于生成的第一装置。
根据本发明的其他方面,提供了用于生成基于目标的图像的设备,该设备包括用于按从最低优先级目标到最高优先级目标的优先顺序接收图像中的目标列表的装置;用于将列表中的目标分配到至少一个目标集合的装置,其中集合中的目标在列表中具有连续的优先顺序,且其中集合中的每个目标不与集合中的任何其它目标重叠;以及用于生成至少一个目标集合到图像存储的装置。
根据本发明的另一个方面,提供了用于生成基于目标的图像的系统,该系统包括一个或多个第一生成器,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成的输出,如果是的话,所述第一装置生成该部分;一个或多个第二生成器,使用第二生成方法生成目标到图像存储,该第二方法独立于其它接收的目标来生成由所述第二装置接收的每个目标;一个显示列表发生器,产生用于图像的目标列表,其中按从最低优先级目标到最高优先级目标的优先顺序对列表中的目标排序,并且列表具有最后的合成目标,其是要求合成的最高优先级目标;显示列表存储器,存储由所述显示列表发生器产生的列表;和与所述显示列表存储器和所述第一和第二生成器通信的处理器,其中将处理器编程为把从最低优先级目标直到最后合成目标的目标分配到第一生成器中,并且把具有比最后的合成目标更高优先级的目标分配到一个或多个第二生成器。
根据本发明的另外一个方面,提供了用于生成基于目标的图像的系统,该系统包括一个或多个第一生成器,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由第一生成方法处理的一个目标集合的生成的输出,并且,如果是的话,第一生成方法生成该部分;一个或多个第二生成器,使用第二生成方法生成目标到图像存储,该第二方法独立于其它接收的目标来生成由所述第二装置接收的每个目标;显示列表发生器,产生图像中的一个目标列表,其中按从从最低优先级目标到最高优先级目标的优先顺序对列表中的目标排序;显示列表存储器,存储由所述显示列表发生器产生的列表;以及与所述显示列表存储器和所述第一和第二生成器通信的处理器,其中处理器被编程为执行下列步骤(i)按优先级递增的顺序考虑列表中的目标,并且,对优于每个当前考虑的目标这样处理(ii)如果当前目标不要求合成,将当前目标分配分配到第二生成器;和(iii)如果当前目标要求合成,确定列表中比当前考虑的目标具有更低优先级,并且具有与当前考虑的目标的边界框重叠的边界框的目标,并且把当前考虑的目标和确定的目标分配到第一生成器。
根据本发明的另一个方面,提供了包括记录在机读记录介质上的机读程序代码的计算机程序产品,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤把列表中的目标分配到第一目标集合和第二目标集合中的至少一个;使用第一生成方法生成目标到图像存储,该第一生成方法确定第一集合的一个目标的一部分是否贡献于目标第一集合的生成的输出,并且,如果是的话,第一生成方法生成该部分;以及使用第二生成方法生成第二目标集合到图像存储,该第二方法独立于第二集合中的其它目标来生成由所述第二装置接收的每个目标。
根据本发明进一步的方面,提供了包括记录在机读记录介质上的机读程序代码的计算机程序产品,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤接收显示列表,其按从最低优先级目标到最高优先级目标的优先顺序列出图像中的目标,其中显示列表具有最后的合成目标,即要求合成的最高优先级的目标;使用第一生成方法生成第一生成任务,第一个生成任务包括从最低优先级目标直到最后合成目标的显示列表中的目标;并且使用第二生成方法生成一个或多个第二生成任务,第二生成任务包括显示列表中具有比最后合成目标更高优先级的一个或多个目标,其中第一生成方法确定目标的一部分是否贡献于第一生成任务的生成输出,如果是这样的话,第一生成的方法生成该部分,并且其中第二生成方法独立于第二生成任务中的其它目标生成第二生成任务中的每个目标到图像存储器。
根据本发明更进一步的方面,提供了一个计算机程序产品,包括记录在机读记录介质上的机读程序代码,用于控制该数据处理设备的操作,在数据处理设备上执行基于目标的图像的生成方法,该方法包括步骤(a)接收描述图像的目标列表,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;(b)按优先级递增的顺序考虑列表中的目标,并且,对于每个当前考虑的目标这样处理
(ba)如果当前考虑的目标不要求合成,使用第一生成方法生成当前考虑的目标到图像存储;并且(bb)如果当前考虑的目标要求合成,执行下列步骤(bb)(i)确定列表中具有比当前考虑的目标更低优先级并且具有与当前考虑的目标的边界框重叠的边界框的目标;和(bb)(ii)使用第二生成方法生成当前考虑的目标和确定的目标,该第二生成方法确定目标的一部分是否贡献于由第二生成方法处理的目标集合的生成输出,并且,如果这样的话,第二生成方法生成该部分。
根据本发明进一步的方面,提供了包括记录在机读记录介质上的机读程序代码的计算机程序产品,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤按从最低优先级目标到最高优先级目标的优先顺序接收图像中目标的列表;分配列表中的目标到至少一组目标,其中集合中的目标在列表中具有连续的优先顺序,而且其中集合中的每个目标不与集合中任何其它目标重叠;生成至少一个目标集合到图像存储。
根据本发明进一步的方面,提供了包括记录在机读记录介质上的机读程序代码的计算机程序产品,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤把列表中的目标分配到第一目标集合和第二目标聚合中的至少一个;使用第一生成方法生成第一目标集合到图像存储器,该第一生成方法确定第一集合中的目标的一部分是否贡献于第一集合的生成输出,并且如果是的话,第一生成方法生成该部分;以及使用第二生成方法生成第二目标集合到图像存储,该第二生成方法独立于第二集合中的其它目标生成第二集合中的每个目标。
根据本发明进一步的方面,提供了包括机读程序代码的计算机程序,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤接收显示列表,该列表按从最低优先级目标到最高优先级目标的优先顺序列出图像中的目标,其中显示列表具有最后合成目标,即要求合成的最高优先级的目标;使用第一生成方法生成第一生成任务,第一个生成任务包括从最低优先级目标直到最后合成目标的显示列表中的目标;并且使用第二生成方法生成一个或多个第二生成任务,第二生成任务包括显示列表中具有比最后合成目标更高优先级的一个或多个目标,其中第一生成方法确定目标的一部分是否贡献于第一生成任务的生成输出,如果是的话,第一生成方法生成该部分,并且其中第二生成方法独立于第二生成任务中的其它目标,生成第二生成任务中的每个目标到图像存储器。
根据本发明进一步的方面,提供了包括用于控制数据处理设备操作的机读程序代码的计算机程序,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤(a)接收描述图像的目标列表,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;(b)按递增优先级的顺序来考虑列表中的目标,并且,对于每个当前考虑的目标这样处理(ba)如果当前考虑的目标不要求合成,使用第一生成方法生成当前考虑的目标到图像存储;并且(bb)如果当前考虑的目标要求合成,执行下列步骤(bb)(i)确定列表中具有比当前考虑的目标更低优先级,并且具有与当前考虑的目标的边界框重叠的边界框的目标;和(bb)(ii)使用第二生成方法生成当前考虑的目标和确定的目标,第二生成方法确定目标的一部分是否贡献于由第二生成方法处理的目标集合的生成输出,并且,如果是的话,第二生成方法生成该部分。
根据本发明进一步的方面,提供了包括用于控制数据处理设备操作的机读程序代码的计算机程序,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤按从最低优先级目标到最高优先级目标的优先顺序接收图像中目标的列表;分配列表中的目标到至少一个目标集合,其中集合中的目标在列表中具有连续的优先顺序,而且其中集合中的每个目标不与集合中任何其它目标相重叠;生成至少一个目标集合到图像存储。


现在参考

本发明的一个或多个实施例,其中图1A是一个显示在不透明字符“O”上的半透明正方形的图像的例子;图1B显示了图1A的目标的边缘;图1C显示了图1A的例子的边缘列表的示意框图;图2是用于确定主边缘列表的有效边缘,并且确定应当为其生成的有效边缘的集合的扫描线的数目的方法的流程图;图3A是用于通过由图2的方法步骤计算的有效边缘生成扫描线方法的流程图;图3B是用于通过由图2的方法步骤计算的有效边缘生成扫描线的另一种方法的流程图;图4是用于确定在像素顺序生成法中哪些目标在像素运行中起作用的方法的流程图;图5A显示了边界框重叠的两个目标;图5B显示了边界框不重叠的两个目标;图6A显示了其中两个三角形剪片剪切矩形的图片的例子;图6B显示了生成图6A的矩形和剪片的结果;图6C显示了图6A的目标的边缘;图6D显示在图6A的目标的存储器中的显示列表的示意表示;图7是用于在像素顺序生成方法中考虑到剪切确定是否激活或停用目标的方法的流程图;图8是用于在改进的画具运算生成(PARM)中确定哪些目标贡献于像素的方法的流程图;图9(a)和9(b)显示了说明在为第二和第三装置生成显示列表期间如何构造目标表方法的流程图;图10A显示在一个页面上具有五个目标的图像;图10B,10C和10D显示如何在三个生成任务中生成图10A的目标;
图10E显示在两个频带中生成的10A的页面;图11A是显示目标页面的示意图;图11B显示了使用专用像素顺序生成方法(XPSRM)生成的图11A的目标;图11C显示靠近扫描线S的图11A的目标的边缘;图12是用于激活目标的方法的流程图,其显示了当激活目标时如何在XPSRM中增加激活的目标列表中的ExclusiveCount成员,并且当停用目标时减缩;图13是用于确定在XPSRM中哪些目标贡献于像素运行的方法流程图;图14是使用像素顺序生成方法和画具运算生成法(PSRM和PARM)的第一生成装置的流程图;图15是生成流水线(render pipeline)的示意框图,在生成流水线中可以实现本公开的生成装置;图16是使用像素顺序生成方法和改进的画具运算生成法(PSRM和IPARM)的第二生成装置的流程图;图17是使用专用的像素顺序生成方法和改进的画具运算生成法(XPSRM和IPARM)的第三生成装置的流程图;和图18是说明包括生成装置的计算机系统的示意性框图。
表格说明根据在详细说明书的结尾和权利要求之前的列出的表格列表说明本发明的实施例。
表格A说明了如何将图2的方法用于图1所述的实例。
表B说明了如何将图3A的方法用于图1A所述实例的扫描线。
表C说明图7的方法如何被用于图6C的扫描线662的前三个边缘。
表D说明将第三装置应用到图11的扫描线1130。
具体实施例方式
以在计算机存储器内的数据上操作的算法和符号表示的形式来明确或隐含地介绍说明书其后的一些部分。这些算法的说明和表示是数据处理技术领域的技术人员所使用的以便最有效地向本领域技术人员表达他们工作的实质的方式。这里的算法一般地被认为是导致期望的结果的前后照应的步骤的序列。步骤要求物理量的物理操作。通常,尽管不是必须,这些量采用能够被存储,转换,合并,比较以及其他操作的电或磁信号的形式。主要由于通用的原因,有时把这些信号称为比特,值,元素,码元,字符,术语,数量等等证明是方便的。
但是应该记住上述和相似的术语将与适当的物理量有关,并且仅仅是应用于这些量的便利的标签。除非具体地表明,否则,从下文显而易见,应当理解贯穿本发明公开,利用例如“计算”,“确定”,“替换”,“产生”,“初始化”,“输出”等等术语的讨论指计算机系统或类似电子设备的操作和处理,它们把计算机寄存器和存储器内表示为物理(电子)的数据量处理和转换成在计算机系统存储器或寄存器或其他的这样的信息存储,传输或显示设备内部相类似地表示为物理量的其它数据。
本说明还公开了用于执行方法的操作的装置。这样的装置可以是为了要求的目的而特制的,或可包括通用计算机或由保存在计算机中的计算机程序有选择地激活或重新配置的的其它设备。在这里提出的算法和显示不是固有地与任何特定的计算机或其它装置相关。根据本文的教导,可以使用各种通用的机器。另外地,构造特殊的装置以执行要求的方法步骤是适当的。
此外,本发明也隐含地公开了计算机程序,因为对所属技术领域的专业人员来说由计算机代码实现这里说明的优选方法的各个步骤是显而易见。计算机程序不局限于的任何特定的程序设计语言和它的实现。应当理解各种编程语言和它的编码可能用来实现在这里包含的公开的教导。此外,计算机程序不局限于任何特定的控制流。存在许多其它计算机程序的变体,在不偏离本发明的精神或范围的前提下,其可以利用不同的控制流。此外可以并行而不是顺序地执行计算机程序的一个或多个步骤。
这样的计算机程序可以存储在任何计算机可读介质上。计算机可读介质可包括存储设备,例如磁性或光盘,存储芯片、或其它适用于与通用计算机接口的存储设备。计算机可读介质还可包括硬接线介质,例如在互联网系统中举例说明的,或无线介质,例如在GSM移动电话系统中举例说明的。当在这样的通用计算机上加载并且执行计算机程序,可有效地产生实现优选方法的步骤的装置。
在任何一个或多个附图中以相同的附图标记索引步骤和/或特征,那些步骤和/或特征为了该说明的目的具有相同的功能或操作,除非存在相反的意图。
下列简称用于本发明公开PSRM像素-顺序生成方法PARM画具运算生成法IPARM改进的画具运算生成法XPSRM专用的像素顺序生成方法DL显示列表OL目标列表CL合成列表AEL有效边缘列表AOL有效目标列表RT生成任务PART画具运算生成任务PSRT像素顺序生成任务GDI图形设备接口RIP光栅图象处理器1.0生成装置图18示意地说明了配置为用于生成并且呈现计算计图形目标图像的系统1800。系统包括一个与系统随机存取存储器(RAM)1803有关的主处理器1802,其可包括非易失硬盘驱动器或类似装置1805和易失半导体RAM1804。系统1800还包括系统只读存储器(ROM)1806,其一般地建立在半导体ROM1807上,且多数情况下可以由高密度磁盘设备(CD ROM)1808补充。系统1800还可包括用于显示图象的目标设备1513,例如打印机或以光栅方式操作的视频显示单元(VDU)。
上述说明的系统1800的组件经由总线系统1809相互连接,并且以该领域众所周知的例如IBMPC/AT类型个人电脑和由此演变的装置的计算机系统的常规运行方式来操作。
此外如图18所示,图形生成系统1505(或生成器)连接到总线1809,并且配置为根据经由总线1809由处理器1802提供的指令和数据生成来源于基于图形目标描述的基于像素的图像。生成器1505可利用系统RAM 1803用于生成目标描述,尽管优选地生成器1505同时与通常由半导体RAM形成的专用生成存储装置1530相关。
生成系统1505可以实现为在主处理器1802上的软件。可选地,可以在分立的单元上实现生成系统1505,分立单元可以是定制的硬件单元或在通用计算机上运行的软件。在其它备选方案中,生成系统可以是目标设备1513上的嵌入系统。
在图15中说明了生成流水线。在主处理器1802上运行的应用程序1501发送图形数据到主处理器的操作系统的图形设备接口(GDI)1503。GDI处理图形数据并且传递数据到图形生成系统1505,图形生成系统具有显示列表生成模块1507和生成模块1511。
显示列表生成模块1507由从GDI1503接收的数据中定义的目标集合产生显示列表。以z-水平(优先级)顺序从最低优先级目标到最高优先级目标对显示列表中的目标排序。显示列表保存在显示列表存储器1509中。生成模块1511处理显示列表,产生像素用于打印。
在生成器1505作为驻留在主机1802上的软件的情况下,生成器1505产生半色调(half-toned)位图。压缩该位图并发送给目标设备1513,其解压位图并生成像素数据的页面。
在备选方案配置中,显示列表生成模块1507驻留在主机1802上,并且生成模块1511嵌入到目标设备1513。在这种情况下,主处理器1802发送显示列表到目标设备1513,它生成显示列表并产生用于打印的像素数据。
生成模块1511使用多个生成方法,在下文中更详细地说明该生成方法。模块1511根据在下文讨论的标准来分配显示列表不同的部分到不同的生成任务,其中不同的生成任务利用不同的生成方法。生成模块1511可利用生成任务队列以便对同时执行的生成任务线程排队。使用的生成方法包括在3.0部分讨论的像素顺序生成方法(PSRM),在4.0部分说明的画具运算生成法(PARM),在6.0部分说明的改进的PARM(或IPARM),和在8.0部分说明的专用的PSRM(XPSRM)。说明了三个使用所述生成方法的不同组合的装置。
2.0数据结构当显示列表生成模块1507从GDI层1503接收目标时,它将目标解压缩成三个成分
-边缘,目标的轮廓说明;-说明如何在页面上描绘目标的绘图信息;和-说明目标颜色的填充信息。
目标的轮廓被分成上边缘和下边缘,其中每个边缘无变化地向下进行页面。取决于当沿着扫描线扫描时边缘是否激活或停用目标,将边缘分配为方向向上或向下。
在软件中边缘实现为数据结构。数据结构包含-描述边缘的轮廓的点;-当前扫描线上的边缘的X位置;和-边缘方向。
绘图信息,或水平数据保存在水平数据结构中。数据结构一般地包含-z-顺序整数,称作优先级;-填充规则,例如奇-偶或非零-卷绕;-有关目的标信息(例如目标是否是文本目标,图形目标或图像目标);-复合算符;-绘图的填充类型,例如位图,平铺显示,或浅色(flat color);和-剪切-计数,指示多少剪片在剪切此目标。
填充信息,或填充数据保存在称作填充数据结构的数据结构中。数据结构的内容取决于填充类型。对于位图填充,数据结构一般地包含-在页面上位图原点的x和y位置;-以像素为单位的位图的宽度和高度;-页面到图像的转换矩阵;-指示图像数据格式的值,(例如32bpp RGBA,或24bpp BGR,等等);和-到图像数据的指针。
对于浅色填充,数据结构一般地包含单个32位整数——8位用于红色,8位用于绿色,8位用于蓝色和8位用于阿尔法信道。
每个边缘数据结构一般地具有指向水平数据结构(level data structure)的指针。每个边缘数据结构还具有指向填充数据结构(fill data structure)的指针。
图1A显示了一个具有第一目标O1和第二目标O2的图像,第一目标是不透明橙色字符“O”,而第二目标是半透明红色正方形。
图1B显示了目标O1和O2的边缘。目标O1具有边缘=E1(下),E2(上),E3(上),E4(下);-水平数据={填充-规则=非零-卷绕,目标类型=文本,优先级=1};以及-填充数据=RGBA=255,128,0,255(不透明的橙色)。
目标O2具有--边缘=E5(下降),E6(上升);-水平数据={填充-规则=非零-卷绕,目标类型=图形,优先级=2};以及-填充激据=RGBA=255,0,0,128(半透明的红色)。
图1C示出了图1A的图像的边缘列表50。边缘E1和E4指包含有目标O1的制图信息的水平数据52,边缘E5和E6指目标O2的制图信息的水平数据56。水平数据52和56指分别包含有用于目标O1、O2的填充信息的填充数据54和58。
利用所述方式的数据结构,可根据边缘的列表来生成显示列表。将其称为基于边缘的显示列表。
在图1A所示的示例中,显示列表是边缘列表{E1,E2,E3,E4,E5,E6}。
首先通过递升y坐标、然后在y坐标相同时通过递升x坐标来存储显示列表。所存储的图1A的显示列表是{E1,E2,E5,E6,E3,E4}。
3.0像素顺序生成方法(PSRM)由生成模块1511使用的像素顺序生成方法以光栅扫描顺序一次一个地为像素生成色彩和暗度。在当前正被扫描和处理的任一像素处,像素顺序生成方法仅对那些在当前扫描像素处有效的暴露目标进行合成。如果当前被扫描的像素位于目标的边界之内,则像素顺序生成方法就确定在该像素处的目标是有效的。
生成器1505通过参照与那个目标相关联的填充计数器来实现这一点。填充计数器保持运行填充计数,该计数表明像素是否位于目标的边界之内。当生成器1505遇上与目标相关联的边缘时,它就根据该边缘的方向来增加或减少填充计数。生成器1505然后能够根据该填充计数和预定填充规则来确定当前像素是否在目标的边界之内。关于与有效目标相关的标记,在使用PSRM时生成器1505确定该目标是否被暴露。与目标相关联的标记表明该目标是否使更低优先级的目标不透明。即,该标记表明该目标是否部分透明,在该情况下,这些更低优先级的目标将对当前像素的颜色和透明性起作用。另外,该标记表明该目标是不透明的,在该情况下,这些更低优先级的目标将对当前扫描的像素的颜色和透明性不起任何作用。如果一个目标是最高的有效目标,或者如果在该目标之上的所有有效目标都使得它们的对应标记被设定为透明,则像素顺序生成方法确定该目标暴露。然后生成器1505合成这些暴露的有效目标,以确定并输出当前扫描像素的颜色和暗度。
3.1 PSRM确定有效边缘图2是示出了根据像素顺序生成方法中的主边缘列表来如何确定有效边缘的流程图。主边缘列表包含有待生成的所有边缘,有效边缘列表是与当前扫描线交叉的边缘的临时列表。
步骤251是初始化步骤,其中将变量CurY设为零,并将有效边缘列表(ActiveEdgeList)设为空集。然后,在步骤253,生成器1511从主边缘列表中读取边缘。在步骤255,生成器1511检查主边缘列表中的所有边缘是否都被处理过,或者当前读取的边缘的y值,即Edge.y是否大于在变量CurY中存储的值。
如果这些条件中一个都不满足(步骤255中的否选项),则处理然后进行到步骤259,在步骤259中将当前边缘合并到有效边缘列表中。通过递升的x值对当前边缘列表中的边缘进行排序,即沿着扫描线的顺序进行排序。一旦当前边缘被添加到有效边缘列表中,处理就返回到步骤253以考虑来自主边缘列表的下一边缘。
如果在步骤255中有任一条件满足(步骤255的YES选项),则然后在步骤257中,生成器1511确定扫描线的数量以生成N。如果主边缘列表中的所有边缘都被处理过,就将N设置成在页面上保持的扫描线的数量,即页面高度(PageHeight)和当前扫描线之间的差值N=页面高度-CurY然而,如果还有要处理的边缘,就将N设置成在CurY与在其上开始使当前读取的边缘开始的扫描线之间的扫描线的数量N=Edge.Y-CurY。
一旦确定了扫描线的数量,生成器1511就生成用于N个扫描线的有效边缘列表,然后更新该当前扫描线CurY=CurY+N。
对于像素顺序生成方法,参照图3A来进一步说明N条扫描线的生成。
接下来,在步骤261,生成器1511检查更新的CurY是否等于页面高度。如果等于,则确定在步骤263有效边缘的处理终止。然而,如果CurY小于页面高度(261的NO选项),则处理流程返回到步骤253,以处理来自主边缘列表的下一边缘。
表A示出了如何将图2的方法用于图1A至1C的示例。从左至右逐行地读取该表。每行表示在步骤253处开始的环的一次重复。为了便于表示,略去了步骤251。空框表示步骤不执行。步骤255确定在环的当前重复中执行步骤257至259中的哪一个。
在环的第一次重复中,步骤253从主边缘列表中读取边缘E1。因为CurY被初始化为零,所以E1在其上开始的扫描线E1.Y大于CurY,并因此执行步骤257。页面的起点和E1.Y之间的扫描线被生成,并且CurY被更新。
在环的最后一次重复中,所有的边缘都被处理了,因此将N设置成页面高度和CurY之间的差值。剩余的扫描线被生成并且CurY被更新。步骤251确定CurY与页面高度相等,并且该环终止。
3.2 PSRM生成扫描线图3A的流程图示出了在像素顺序生成方法中如何生成扫描线。通过图2的步骤257来调用图3A的处理。
在初始化步骤351中,生成装置1511将索引CurX设置成零,并将有效目标列表(ActiveObjectList)和临时有效边缘列表(TempAEL)设置成空集。然后,在步骤353,处理进入环,该环一直继续到扫描线的结束,即当CurX等于页面宽度(PageWidth)时。在步骤353中,生成器1511从有效边缘列表(AEL)读取边缘“Edge”。然后,在步骤355,生成器1511检查有效边缘列表中的所有边缘是否都已经被处理过,或者Edge.X,即当前扫描线和当前读取的边缘的交叉是否大于索引CurX。如果这些条件中的任一条件满足,则处理流程进行到步骤357。如果这些条件不满足(355步骤中的否选项),则处理就进行到步骤359。
在步骤359,从AEL中将当前读取的边缘删除,并将当前读取的边缘所指向的目标适当地激活或禁用。目标的激活/禁用是基于与该目标相关联的填充规则。将目标添加到有效目标列表(AOL)或从该列表中去除。参照图7对用于被剪切的目标的激活/禁用和AAOL更新步骤进行更详细地说明。
在下面的步骤360中,将Edge.X更新以表示当前读取的边缘与下一扫描线的交叉。接下来,在步骤348中,检测当前读取的边缘以查看该边缘在当前扫面线上是否终止。如果没有终止,则执行继续到步骤349,在步骤359中将该边缘添加到临时AEL(TempAEL)的适当的位置中,以保持该列表的递升x顺序。否则(步骤348的是选项),随后是步骤349,并且处理流程返回到步骤353以从有效边缘列表中读取下一边缘。
在步骤357,确定用于生成N的像素的数量。如果有效边缘列表中的所有边缘都已经被处理过,则将N设置成页面宽度和索引CurX之间的差值。否则将N设置成(Edge.X-CurX),即当前索引与当前所考虑的有效边缘的位置之间的差值。
然后,在步骤361中,为N个像素生成有效目标列表,如参照图4所具体描述的。
在步骤363,将索引CurX更新成(CurX+N),并且步骤365检查CurX是否等于页面宽度。如果是,则在步骤366,将临时边缘列表的内容复制到有效边缘列表中。然后处理循环返回到步骤351以生成下一扫描线,或者将步骤367返回到图2的步骤257。如果CurX没有达到页面宽度(365的否选项),则然后处理流程返回到步骤353。
表B示出了用于图1A图像扫描线的图3A的方法,图1A的图像具有有效边缘列表={E5,E1,E3,E4,E2,E6},即通过‘O’特征O1的中心孔的任阿扫描线。
与前面所述相同,表格的每一行表示在步骤353处开始的环的一次重复。检查步骤355确定随后是路径359/360还是路径357/361/363。空框表示在环的当前重复中不执行这些步骤。未明确示出终止步骤365和367。
最初,CurX是零,有效目标列表(AOL)是空的。
3.3 PSRM在扫描线上生成像素图4的流程图示出了在扫描线上生成像素的方法,其中仅将最不透明的目标和位于该最不透明目标上方的任何透明目标进行合成并输出。通过图3A的步骤361来调用图4的步骤。
在步骤451,生成器1511检查有效目标列表(AOL)是否为空。如果是,则生成器1511为N个像素输出白色(页面背景),在步骤470对帧存储的位深进行半色调调整(如果需要)。在步骤471处理终止并返回步骤363。
如果有效目标列表不空(步骤451的否选项),则然后处理流程进行到步骤453,其中通过递减优先级来存储有效目标列表。。有效目标列表中的项目的数量是NumObjects。
然后,在步骤457,生成器1511检查在有效目标列表中的第一目标是否为不透明。如果是,则步骤459将AOL
中的目标的填充输出到帧存储,在步骤470对帧存储的位深进行半色调调整(如果需要),并且在步骤471处理终止。在该情况下,不需要考虑有效目标列表中的任何其它目标,因为最高的目标是不透明的。
如果最高目标不是不透明(步骤457的否选项),然后生成器在步骤461中设置索引i=1。在步骤463,将Obj设置成有效目标列表的第I项中的目标。步骤465在有效目标列表中检查Obj是否不透明,或者索引i是否等于目标的总数,即(NumObjects-1)。
如果有任一条件满足(步骤457的否选项),然后生成器1511在步骤469中将AOL
和AOL[i]之间的所有目标的合成结果输出到帧存储,在步骤470对帧存储的位深进行半色调调整(如果需要)。然后处理在步骤471中终止。
如果在步骤465中的条件没有一项满足(467的否选项),然后处理流程进行到步骤467,该步骤使索引增加,i=i+1。然后处理返回步骤463,以考虑有效目标列表中的下一目标。
作为图4的处理的应用的示例,考虑图1A中的目标O1的左半部分的像素在像素E1.X和E3.X之间的扫描线E3.Y(即边缘E3在其上开始的扫描线)上的运行。对于像素的该运行,两个目标都是有效的,并且有效目标列表是AOL={O1,O2}。
在步骤451,检查AOL以查看它是否为空。AOL包含有两项,所以执行进行到步骤453。通过使优先级递减来存储AOL,导致AOL={O2,O1}。NumObjects是2。步骤457检查列表中的第一项是否不透明。O2不不透明,所以执行进行到步骤461。在步骤461将计数器i初始化为1,然后在步骤463,将变量obj设置成在位置AOL[i]处的目标。在这种情况下该目标是O1。在步骤465,因为O1是不透明的,所以执行进行到步骤469。将目标O2和O1的填充合成在一起并将结果写到帧存储。
3.4 PSRM中的剪切在诸如MicrosoftTMGDL的一些系统中,目标是由剪切域来伴随的,并且仅在由相应的剪切域限定的区域中输出目标。
在这些系统中,典型地将每个目标一次生成到帧存储,通过相应的剪切域进行剪切。一些允许待激活的多个剪切域。因此,可以通过多于一个的剪切域来将目标生成到帧存储。
在像素顺序生成方法(PSRM)中,剪切是典型地通过一组边缘和水平数据结构的“目标列表”来表示的,其中该列表中的第一项是说明剪切本身的水平数据结构。水平数据结构中的剩余项描述正被剪切的目标。
图6A是被剪切的图像的示例。图6A中的三个目标是三角形剪切650,倒置的三角形剪切652,和被剪切650和652剪切的的矩形654。图6B示出了由生成图6A的目标而产生的六边形656。
图6C示出了目标650-654的边缘。剪切650具有左边缘E1和右边缘E2。剪切652具有左边缘E3和右边缘E4,以及矩形654是通过左边缘E5和右边缘E6来限定的。边框658为目标650、652、654的外侧点划界。扫描线S662用于表示将图7的方法应用到图6A的示例。
图6D示出了在图6A的图像的显示列表660的存储器中的优选排列。在图6D中,各个边缘指向包含有用于相应目标的绘图信息的水平数据。对于边缘E1和E2,这是水平数据L1,对于边缘E3和E4,这是水平数据L2,以及对于边缘E5和E6,这是水平数据L3。目标650和652是具有水平数据L1、L2的剪切目标,其指向目标654的水平数据L3。目标654的水平数据L3反过来指向包含有目标654的填充信息的填充数据F3。
水平数据结构包括与目标相关联的剪切计数,以表明有多少个剪切域剪切相关联的目标。在该示例中,目标654具有L3。ClipCount=2,表示目标654被两个剪切所剪切。
图7示出了对有效目标列表(AOL)的管理。通过步骤359来调用图7的步骤。图7的输入是有效目标列表和当前边缘所指向的水平数据结构的列表。图7的输出是可以通过添加被激活的目标或去除禁用的目标而进行修改过的有效目标列表。
在步骤751的初始化步骤中,将计数器i初始化为零,并将变量clip_delta初始化为零。然后,在步骤753,生成器1511将变量obj设置成OL[i],OL[i]是与当前边缘相关联的目标列表OL中的第i个目标。在步骤755,生成器1511检查obj是否是剪切。如果是,则然后在步骤757,生成器1511检查该剪切是否已变成有效。如果该剪切变成了有效,则在步骤761中将变量clip_delta设置成(-1)。如果该剪切未变成有效,则在步骤753中将变量clip_delta设置成1。
在步骤759或761中设置了变量clip_delta之后,处理流程进行到763,其中将计数器i增加1。然后步骤765检查与当前边缘相关联的所有目标是否都被处理过。如果是,则图7的处理终止并控制流程返回步骤360。如果还存在与当前边缘相关联的目标(步骤765的否选项),然后处理流程返回到步骤753以处理下一目标。
如果当前正考虑的目标不是剪切域(步骤755的否选项),然后在步骤768,生成器1511将当前目标的剪切技术增加值clip_deltaObj.ClipCount=obj.ClipCount+clip_delta。
接下来,在步骤769,生成器1511检查目标obj是否变成了有效,并且obj的剪切计数是否为零。如果这两个条件都满足,则然后在步骤771,生成器1511就将obj添加到有效目标列表(如果obj还没有在有效目标列表中)。
如果步骤769中的两个条件都不满足(769的否选项),然后,如果目标obj在有效目标列表中,则生成器1511将obj从有效目标列表中去除。
在步骤771或步骤773之后,处理流程转到步骤763,如上所述,步骤763确定是否存在与当前边缘相关联的任何更多的目标。
作为示例,表C示出了图7的步骤如何在图6C所示的扫描线662的前面三个边缘上进行操作。
4.0画具运算生成法(PARM)使用画具运算的生成方法与上述的像素顺序生成方法类似。PARM和PSRM两者都要求用于各个扫描线的以递升的x顺序被跟踪并被保特的边缘。
如上所述,图2是用于确定有效边缘列表的方法。图2的步骤用于PSRM和PARM两者。
对于画具运算生成法,图2的步骤257调用图3B以生成由于N条扫描线的运行的有效边缘列表。除在PARM中仅有一个目标是有效的并因此不需要处理有效目标列表之外,图3B的处理类似于图3A的处理。从而,初始化步骤351在图3B中被步骤371代替,该步骤将有效目标设置为空(NULL),而不是将有效目标列表设置为空集(NULL set)。图3A中的步骤361(该步骤调用图4的步骤),被图3B中的步骤369代替,在该步骤中生成器1511在执行PARM时使用有效的(单个)目标的填充来生成N个像素。
图3B的步骤359a类似图3A中的步骤359,除不需要新有效有效目标列表之外。
当激活/禁用目标时,使用图7的方法,除因步骤771和773仅分别对Active标记进行设置或清零而更简单之外。
4.1 PSRM和PARM之间的区别可将上述的画具运算生成法(PARM)和像素顺序生成法之间的区别总结如下(a)在PARM中,典型地在从GDI层1503一接收到目标就生成目标,而PSRM直到接收到最后一个目标时才开始生成;(b)PARM的显示列表仅有一个目标,而所有待生成的目标都在PSRM的显示列表中;(c)在PARM中,仅将目标有效处的像素运行生成到帧存储,而PSRM在没有目标有效的位置处典型地生成白色(页面的颜色);(d)在PARM中,仅在目标和帧存储之间进行合成,而PSRM基于像素运行而合成所有起作用的有效目标并将结果写到帧存储;以及(e)在PARM中,为每个目标处理与其相关联的剪切域,而PSRM一次剪切所有目标。
在由剪切域C1剪切的具有三个目标的图像中,PARM将剪切域C1处理三次,每次处理三个目标中的一个。在PSRM中,仅将剪切域C1一次添加到显示列表。剪切域C1具有指向三个目标中的每一个的水平列表。各个目标具有为1的剪切计数,确保在生成期间剪切该目标。
当帧存储以比请求合成的目标的位深更低的位深保持像素值时,在PARM中的合成就成了问题。例如,如果帧存储包含每像素1比特的CMYK半色调像素值,并且期望将目标合成到每像素32比特的RGBA像素值,那么在合成时就会存在信息丢失。
5.0 第一方案使用PSRM和PARM的生成参照图14来说明第一生成方案。第一方案涉及混合方法,在该方法中生成器1505使用了上述画具运算生成法和像素顺序生成法两者。
如图15所示,显示列表生成模块1507生成基于边缘显示列表1509。在该列表中,为各个边缘分配目标标识符edge.ID,其表明该边缘所属的目标。
如果一个目标具有要求该目标的像素以某种方式与该目标下方的像素合并的合成算子,那么该目标就要求合成。当将目标添加到显示列表中时,显示列表生成模块1507保持对要求合成的最后一个目标的跟踪。将其称为最后合成目标。一旦将所有的目标添加到显示列表,生成模块1511就开始生成。
就生成任务而言来对图14的方法进行说明。生成任务(RT)是在执行时根据特定的生成方法来生成基于边缘的显示列表的一部分的任务。向生成任务分配来自主显示列表的一组边缘。将这些边缘保存在生成任务自己的本地主边缘列表和本地有效边缘列表中。利用PARM的生成任务被称为PART(画具运算生成任务)。利用利用PSRM的生成任务被称为PSRT(像素顺序生成任务)。
在第一方案中,生成模块1511将显示列表中的第一目标和最后合成目标之间的所有边缘分配给利用了上述PSRM的像素顺序生成任务(PSRT)。生成任务为帧存储执行并生成包括有白色空间的边缘集合。
然后,对于显示列表中的每个剩余目标,将该目标的边缘分配给利用了上述PARM的画具算法生成任务(PSRT)。该生成任务基于帧存储来执行并生成除白色空间之外的边缘集合。
因此,将像素顺序生成方法应用于要求合成的任何目标,然后基于帧存储来简单地生成剩余(不透明)目标。
参照图14,在步骤1401,生成模块1511检查最后合成目标是否大于或等于零。如果是(步骤1401的是选项),然后在步骤1403,生成模块1511将具有边缘ID<=最后_合成_目标(last_compositing_object)分配给像素顺序生成任务。然后,在步骤1405,使用在图2、3A、4和7中所述的方法步骤来执行生成任务。
接下来,在步骤1407,将索引i设置成(最后_合成_目标+1)。在步骤1409,生成器检查i是否小于N。如果不是这种情况(步骤1409中的否选项),然后就没有更多的目标要处理并且在步骤1411中程序终止。然而,如果i小于N,则处理流程继续到步骤1413,该步骤将具有边缘ID等于i的所有边缘分配给画具算法生成任务。然后,在步骤1415,使用图2、3B和7来执行生成任务。
在生成任务结束之后,步骤1417使索引i增加1,该方法返回步骤1409,以检查是否还有目标要检查。
在最后_合成_目标不大于或等于0的地方(步骤1401的否选项),处理流程直接进行到步骤1407,绕过步骤1403和1405。在该情况下,不要求像素顺序生成,并且显示列表中的所有目标都可以使用PART来生成。
第一方案的方法可被概括为以下伪代码,参照图14<pre listing-type="program-listing"><![CDATA[IF last-compositing-object>=0Assign all edges with(edge.ID<=last-compositing-object) to PSRT.Execute rendert task using Fig 2(PSRM)ENDIFSET i=last-compositing-object+1WHILE i<NWHILE i<NAssign all edges with(edge.ID=i) to PART.Execute render task.i=i+1ENDWHILE]]></pre>使用该方法将36,000个目标的页面生成在1bpp半色调的单色帧存储上,其中最后合成目标是5,在具有256MB RAM的Pentium III 667MHz上的生成时间与标准PSRM相比从6秒减小了一半到3秒。
对于本领域的技术人员应该清楚,在具有多处理器的及其上实现生成模块1511时,可以在独立的线程中生成各个PART。当在显示列表中考虑的下一目标不与当前执行的PART交叠时,然后可以创建新的线程来生成新考虑的目标。该处理继续进行,直到生成所有的目标,或发现一个目标与当前执行的PART交叠。
6.0修改后的画具算法(IPARM)提出两种方法来改进上述的PARM。第一修改涉及处理连续的非交叠不透明目标,第二中方法设计剪切多个连续的目标。
6.1 连续非交叠不透明目标画具算法生成方法事实上可以一次处理很多目标,规定这些目标不具有交叠的边界框。只要边界框不交叠,边缘存储运动就仅局部地发生在各个目标的边缘中。
例如,图5A示出了具有交叠边界框的两个目标,即使这些目标自身不交叠。目标802是具有边框803的多边形。目标802是由边缘E1、E2、E3、E4、E5、E6和E7形成,边缘E3至E6排列成锯齿图案。
目标804是具有边框805的多边形。目标804是通过边缘E8、E9、E10、E11和E12的顺序形成的。边缘E11和E12以锯齿方式排列,由边缘E8和E12形成的峰位于由边缘E3和E4形成的空心中,目标804的边缘E11和E12形成的峰位于由目标802的边缘E5和E6形成的空心中。尽管目标804与目标802不相遇或相交,但是边框805与边框803交叠。
因此,当一起生成目标802和804时,可以看出在扫描线807处,目标804的边缘E8、E12、E11和E10必须被并入有效边缘列表{E2、E3、E4、E5、E6、E7},导致边缘列表{E2、E3、E8、E12、E4、E5、E11、E10、E6、E7}。
在图5B中,将目标804从目标802移开,使得边框803、805不再交叠。使边缘E8、E12、E11、E10决不与E2、E3、E4、E5、E6、E7相交。
已经发现,生成分配给PART的若干目标(其中没有两个目标是通过边框交叠的)至少与单独生成各个目标一样快。在改进的PARM(或IPARM)中,将不通过边框交叠的连续不透明目标的独立组优选地分配给独立的PART。
6.2 剪切多个连续目标在通过一个或多个剪切域对多个连续目标进行剪切时,在典型的PARM中,剪切并生成各个目标。这在剪切域是复杂路径时并不是有效的。当PART利用PSRM来生成一组通过剪切域剪切的目标时可以改进性能。这就确保了仅一次来处理剪切。
6.3 用于IPARM的程序修改后的PARM利用在图2中所述的有效边缘列表确定方法,以及参照图3A所述的生成扫描线的方法。IPARM还使用参照图7所述的目标激活。
在步骤361,IPARM为N个像素生成有效目标列表。对于IPARM,这样的生成如图8所示。图8的方法的输入是一组有效目标。在步骤851,生成器检查有效目标列表(AOL)是否为空。如果是,该程序在步骤857终止,并且控制流程返回图3A。这是因为IPARM不生成白色空间。
如果AOL不空(步骤851的否选项),然后在步骤853,通过递减优先级值来存储有效目标列表。该列表中的第一项包括具有最高优先级的有效目标。这是因为仅将不透明目标提交给改进的PARM。执行继续到步骤855,该步骤将AOL
处的目标的填充输出到帧存储。在步骤857路由终止。
将基于改进的PARM(IPARM)的生成任务(RT)称为IPART。IPART可用于生成以下类型的数据。
1、连续非交叠的不透明目标。
2、一组剪切域加上所有被这些剪切域剪切的不透明目标,提供所有被剪切的不透明的目标。
7.0 第二方案使用PSRM和IPARM生成由生成模块1511使用的第二生成方案将上述的像素顺序生成方法和与部分6.0的IPARM合并。与第一方案相同,使用PSRM生成第一目标和最后合成目标之间的所有目标。保证所有随后的目标都将是不透明的,并因此这些目标适于候选为通过改进的PARM(IPARM)。在第二方案中,将连续非交叠目标成组以用于通过IPART来生成。
7.1 第二方案目标列表在IPARM的优选实施中,维持被称为目标列表的新列表。当每个目标被处理时就向目标列表添加一项,并通过显示列表生成器1507将该项添加到基于边缘的显示列表。目标列表中的各项包含-参照描述目标的边缘列表的开始并结束索引;-目标的边框;以及-用于表示目标是否要求合成的标记。
在通过一个或多个剪切域剪切一组目标时,第一剪切域和被剪切的最后一个目标之间的完整的边缘集合被认为是单个目标。在该情况下,边框是该组目标的所有边框和一个或更多个剪切域的结合。
因此,例如,将图6A中的剪切域650、652和矩形654的主边缘列表{E1,E2,E3,E4,E5,E6}被认为是单个目标。
对于图5A中的目标802和804,主边缘列表{E1,E2,E3,E4,E5,E6,E7,E7,E9,E10,E11,E12}和目标列表是两项-项1具有开始索引=0(称为边缘E1),结尾索引=6(称为边缘E6),边框=BB1(即框803),合成标记=FALSE。
-项2具有开始索引=7(称为边缘E1),结尾索引=11,边框=BB2(即框805),合成标记=FALSE。
7.2 第二方案显示列表生成图9(a)和9(b)示出了显示列表的生成和第二方案显示列表使用的相应目标列表。该方法假定一个目标可以仅通过一个剪切域来剪切。将剪切域看作是待生成的目标的属性。这在诸如MS Windows GDI的系统中是通用的。通过显示列表生成模块1507来执行图9(a)和图9(b)的步骤。
在步骤901,模块1507将当前剪切城CurClip设置成NULL,并将最后一个合成目标设置成负一(-1)。将计数器i设置成零并将目标列表OL
的第一项分配以下值OL
.Start=0执行继续到步骤903,该步骤检查是否还存在要处理的目标。如果对于页面没有更多的要处理的页面(步骤903的否选项),然后在步骤919执行终止。否则(步骤903的是选项),执行继续到步骤905,在步骤905中,将目标的剪切域分解成边缘、水平数据和填充数据。模块1507将这些边缘添加到边缘列表。如果该目标要求合成,然后将变量“合成”设置成TRUE,并将最后合成目标设置成计数器i。另外,如果目标不要求合成,然后将变量“合成”设置成FALSE。
接下来,在步骤907,模块1507检查目标是否具有剪切域。如果目标不具有伴随剪切域的目标,然后执行进行到步骤909,在该步骤909中,将变量“bbox”设置成待绘制的目标的边框。然后,在步骤917,对目标列表中的第i项OL[i]分配以下值OL[i].End=边缘列表的当前尺寸减1。
OL[i].BBox=变量“bbox”。
OL[i].Composites=变量“合成”。
将计数器i增加1,对目标列表中的第i项OL[i]分配以下值OL[i].Start=边缘列表的当前尺寸。
在步骤917之后,执行返回到步骤903,以确定是否还有要处理的目标。
在步骤907,如果目标具有伴随的剪切域(步骤907的是选项),然后执行继续到步骤911,在步骤911中,伴随的剪切域可与变量“CurClip”。如果剪切域相等(步骤911的是选项),然后执行继续到步骤915。
在步骤915,利用以下值来更新目标列表中的“i减1”项目OL[i-1]OL[i].End=边缘列表的当前尺寸减1。
OL[i].BBox=合并后的边框OL[i-1].BBox与目标的边框Obj.BoundingBox。
OL[i-1].Composites=OL[i-1].Composites的值的结果逐位地与“composites”的值相或。这就确保了即使当前目标不要求合并,OL[i-1].Composites也能保持TRUE。
然后模块1507利用以下值来更新目标列表中的第i项OL[i]OL[i].start=边缘列表的当前尺寸。
执行继续到步骤903,直到所有的目标被处理过。
如果在步骤911,伴随的剪切域不等于当前剪切域“CurClip”(911步骤的否选项),然后执行继续到步骤913。在步骤913,将变量CurClip设置成伴随剪切值,“Obj.Clip”。将变量bbox设置成目标和剪切域的合并边框。然后,执行继续到步骤917,如上所述。执行继续到步骤903,直到所有的目标都被处理过。
在步骤919的结束处,输出是未分类整理的主边缘列表,以及相应的目标列表。另外,识别出了最后合成目标。显示列表中的目标的总数是计数器“i”的值。
7.3第二方案生成方法图16示出了第二方案的生成方法。在步骤1601,生成模块1511检查最后生成模块是否大于或等于零。如果是,则然后在步骤1603中,模块1511将OL
.Start和OL[最后合成模块].End之间的边缘分配给PSRT。然后,在步骤1605,使用图2、3A、4和7的步骤来执成生成任务。然后执行继续到步骤1607。如果最后合成目标不大于或等于零(步骤1601的否选项),则然后不要求PSRT,并且执行直接进行到步骤1607,绕过步骤1603和1605。
在步骤1607,模块1511将索引i的值设置成最后合成目标加1。然后步骤1611检查i是否小于目标的数量N。如果没有更多的要生成的目标(步骤1611的否选项),然后该生成在步骤1609终止。如果还有要处理的目标,则然后在步骤1613,模块1511设置以下值StartObj=iTotalBBox=Obj[i].Bboxi=i+1。
然后步骤1615检查Obj[i]在TotalBBox中是否为NOT,并且i是否小于N。如果这些条件满足(步骤1615的是选项),然后执行继续到步骤1617,步骤1617设置以下值TotalBBox=TotalBBox+Obj[i].Bboxi=i+1然后执行返回步骤1615。
如果步骤1615中的条件不满足(步骤1615中的否选项),然后在步骤1619中,模块1511将OL[StartObj].Start和OL[i-1].End之间的所有边缘分配给IPART。在步骤1621,模块1511使用图2、3A、7和8的步骤来执行生成任务。然后在步骤1623,索引i被增加1,并且执行返回步骤1611,以检查是否还有目标要处理。
将第二方案的生成方法总结为以下伪代码<pre listing-type="program-listing"><![CDATA[IFlast-compositing-object>=0 Assign all edges between OL
.Start and OL[last-compositing-object].End to PSRT. Execute render task.ENDIFSET i=last-compositing-object+1WHILEi<N SET StartObj=i SET TotalBBox=OL[i].BBox i=i+1 WHILE(OL[i].BBox NOT IN TotalBBBox)AND(i<N)SET TotalBBox=TotalBBox+OL[i].BBoxi=i+1 ENDWHILE Assign all edges between OL[StartObj].Start and OL[i-1].End toPART. Execute render task.ENDWHILE]]></pre>图10A中示出了示例,其中图形950由五个目标951、952、953、954和955形成(以递升的优先级)。最后合成目标是952。
矩形951位于图像950的左上方。半透明椭圆952与矩形951部分重叠,但是不与其他目标中的任何一个接触。矩形954位于图像950的右上方并且不与其他目标中的任何一个相交。不透明矩形953位于图像950的下半部分中,并且不透明的梯形955部分地与矩形953重叠。
在第二方案中,使用像素顺序生成方法将用于目标951和952的边缘集合生成到帧存储。图10B中示出了该第一生成任务957。
目标953和954不通过边框重叠,但是目标955与目标953和954的合并后边框重叠。因此,如图10C所示,将目标953和954的边缘分配第一PART959。任务959将目标953和954生成到帧存储上。
最后,单独的PART 961用于将目标955生成到帧存储上,如图10D中所示。
7.4 分段在某些情况下,整个帧存储都可以使用,诸如当目标是每像素单色半色调输出是1比特时可以是这种情况。对于A4纸以每英寸600点(DPI)而言,用于该输出的帧存储要求大约4MB。以更大的DPI或在更大的纸上,或者更大的位深,诸如4bpp CMYK,则仅可以分配每线像素的分段(band)等于页面宽度,并且扫描线的最大数量等于比页面高度小的多的某一数量,例如256条扫描线。
在全部帧存储都可用时,生成任务可完全按照顺序执行。例如,当处理图像950时,执行PSRT 957并将所有的像素生成到帧存储。然后执行剩余的IPART 959、961中的每一个,并将目标(935-955)生成到帧存储。当连续的IPRT不重叠时,可并行地生成各个IPART。
仅在分段存储可以使用时,然后任务才部分地按顺序执行,因此就仅生成在当前分段上可见的那部分任务。当连续的IPART在一个分段内不重叠时,就可并行地生成各个IPART。
在图10A的示例中,存在三个生成任务。任务957生成目标951和952。任务959生成目标953和954,并且任务961生成目标955。如图10E所示,如果将页面分成两段B1和B2,则然后对于分段B1,任务957和959是有效的。对于H1扫描线,任务957被生成到该分段存储上,然后,对于H2扫描线,任务959被生成到该分段存储上。然后将该分段存储发送到打印机。一个任务在存储器中一直持续着直到所有的边缘都被处理过。在分段B1内完成任务957,但是任务959还有要处理的边缘(对于目标953)。在第二分段B2上,任务961是有效的。任务959被生成到分段存储上,然后任务961被生成到分段存储上。然后将该分段存储发送到打印机。
可以将该分段方法在本说明书中描述的所有生成方法。
8.0 排他像素顺序生成方法(XPSRM)当最后合成目标的数量与显示列表中的目标的总数量相比较小时,第二方案的生成方法有用。在最坏情况的情形中,如果显示列表中的最后目标要求合成,则然后在第二方案中所有目标都将使用PSRM来生成。经常的一种情况是要求合成的目标包含在本地化的区域中并且不与大量的目标重叠。
现在将对被称为排他像素顺序生成法(XPSRM)的修改后的PSRM进行说明,在该方法中仅输出被命名的目标的像素。
在XPSRM中,向水平数据结构中添加一个新成员。该新成员称为ExclusiveOutput。当有效目标列表(AOL)包含至少一个其ExclusiveOutput成员被设置成值为一(1)的目标时,才发出像素运行。AOL自己具有称为ExclusiveCount的新成员。当将目标插入AOL时,AOL.ExclusiveCount被增加object.ExclusiveCount。当从AOL去除一个目标时,将AOL.ExclusiveCount减少object.ExclusiveCount。
XPSRM使用图2所述的确定方法和图3A中所述的生成扫描线的方法来确定有效边缘列表。图12示出了XPSRM所使用的激活目标的方法(考虑剪切),该方法是图7中所示的方法的修改后的版本。
图13中示出了确定哪些目标对像素运行有用的XPSRM的方法,图4是其修改后的版本。
图13的方法包括图4的很多步骤。具体而言,由步骤453、457、459、461、463、465、467、469、470和471构成的分支未改变。在图13中初始步骤451被步骤1301取代,该步骤检查是否“AOL空OR AOL.ExclusiveCount=0”。如果该条件不满足(1301的否选项),执行处理到步骤453并且执行由步骤453-471组成的分支。
如果步骤1301的条件被满足,则然后执行就直接进行到步骤471。因此,与图4的方法的第二介变化是在XPSRM中略去了步骤455(输出白色)。因此,如果有效目标列表是空,或者有效列表不包含其ExclusiveOutput成员已经被设置了的目标,那么XPSRM就不输出任何像素。
在图12中对图7的目标激活/禁用路线的修改后的版本进行描述。除步骤1223和1221分别取代步骤773和771之外,图7和12的方法相同。步骤1223和1221包括使有效目标列表的新成员AOL.ExclusiveCount增加或减小的额外任务。
图12的输入与图7相关,该输入是有效目标列表和被当前边缘所指的水平数据结构的列表。图12的输出是修改后的有效目标列表(AOL)和可能被修改的ExclusiveCount变量。
取代了步骤773的步骤1223从AOL(如果obj在AOL中)中去除obj,从AOL.ExclusiveCount推导出obj.ExclusiveOutput。取代了步骤771的步骤1221将obj插入到AOL中(如果obj不在AOL中)并将obj.ExclusiveOutput添加到AOL.ExclusiveCount。
XPSRM允许将多个目标添加到显示列表,但是提出了仅有某些明确指定的目标出现。将利用XPSRM的生成任务称为XPSRT。
图11A中示出了示例。图像1100包含在区域1110中的一百个第一目标。第一百个目标是不透明的文本目标。图像1100还包括五个向量图形目标,1101、1102、1103、1104和1105,其中目标1105合成到图像1101、1102和1103上。然后紧随这些目标的是区域1120中的更多数量的文本目标。在上述第一和第二方案的方法中,将使用PSRM来生成第一文本目标和目标1105之间的所有目标,因为目标1105是最后一个合成目标,即使目标1105对区域1110没有影响。
相反,使用XPSRM,可将目标1105排他地生成到帧存储,因此仅输出1105,但是如图11B所示,目标1105还是依靠目标1101、1102和1103而生成。
将目标1105的ExclusiveOutput成员设置成1,确保当对目标1105有效时,XPSRT仅输出像素运行。对于这种像素运行,将目标1101、1102、1103和1105的边缘提交给XPSRT。目标1101的边缘是E1和E2,象1102的边缘是E3和E4,目标1103的边缘是E5和E6,目标1105的边缘是E9和E10。图11C中与扫描线1130相关地示出了这些边缘。因此,被传送到XPSRT的这些边缘是{E1,E2,E3,E4,E5,E6,E9,E10}。E7和E8属于目标1104,因此不包括在要生成的这些边缘中。
存储边缘列表,导致列表{E1,E2,E3,E4,E9,E10,E5,E6},并且如图2和图3A所示正常地跟踪边缘。
对于扫描线1130,有效边缘列表是{E1,E9,E2,E3,E10,E4}。参照图3A、图12和图13,在步骤351,将CurX设置成0,并将ActiveObjectList设置成空列表。在步骤353,读取E1。E1.X大于CurX,所以执行继续到步骤357。将N设置成E1.X,并且在步骤361,执行继续到1301。因为AOL是空,所以没有像素被输出,并且在步骤471,执行返回步骤363。将CurX更新成El.X,并且在步骤363,El.X不等于PageWidth,所以路线返回到步骤353。
在步骤353,读取El. E1.X=CurX,所以执行继续到步骤359,该步骤将E1从AEL中去除,并调用图12的步骤751。在步骤751,将i设置成0,并将clip_delta设置成0。在步骤753,将obj设置成E1.OL
=1101。在步骤755,目标1101不是剪切域,所以在步骤768,obj.ClipCount增加零。在步骤769,目标变成有效,并且在步骤1221,将该目标插入AOL,并且AOL.ExclusiyeCount增加1101.ExclusiveCount(该值是零)。在步骤763,i增加1,并且因为在步骤765对所有目标进行处理,所以路线在步骤767结束。然后,在步骤360,为下一扫描线而更新边缘E1.X。执行返回到步骤353。
表D总结了所发生的关键步骤和动作。
9.0第三方案使用XPSRM和IPARM生成第三生成方案使用上述排他像素顺序生成方法(XPSRM)和改进的画具运算生成方法(IPARM)。
9.1 第三方案生成显示列表在第三方案中,显示列表生成模块1507使用图9所示的方法(对步骤905作了修改)生成显示列表。
为步骤905添加了这样的逻辑如果目标要求合成,则为称为合成列表的第三列表添加新项。对步骤905的修改可总结为如下伪代码<pre listing-type="program-listing"><![CDATA[IF object.Clip< >CurClipDecompose object.Clio into edges and level dataAdd edges to edge listENDIFDecompose object into edges,level data,fill data.Add edges to edge list.IF Object requires compositingSET composites=TRUESETlast-compositing-object=iAdd nex entry to compositing list CLSET OL[i].CompositeIndex=“size-of CL”-1SET OL[i].ExclusiveOutput=1ELSESET composites=FALSEENDIF]]></pre>合成列表中的每一项是目标列表,其中第一项是合成目标自己,随后是该合成目标下面的所有目标,其中“下面”意思是“较低优先级并通过边框重叠”。合成列表是递升优先级,所以合成列表中的最后一个目标是合成目标下面的Z顺序中的最高优先级目标。取决于各个合成目标的目标列表是在生成模块1511的生成处理其间来构建的。尽管该说明是就列表而言的,但是诸如树的另选数据结构也可用于捕获相同信息。
根据图9(a)和9(b)的修改的方法的输出是未分类处理的主边缘列表;相应的目标列表;以及合成列表。
另外,已识别出了最后合成目标,并且显示列表中的目标的总数是计数器的值“i”。
然后,在生成期间,当将目标列表中的从第一个至最后一个地处理各个目标时,则针对合成列表中的所有项来检查目标的边框。如果当前所考虑的目标边框与合成目标的边框重叠,则然后将当前所考滤的目标添加到合成列表中的相应项中。
在图11A的示例中,在第三方案中生成的合成列表包含有一项。反过来该项是由四个目标{1105,1101,1102,1103}构成。
9.2 第三方案生成图17中示出了第三方案的生成方法。在初始化步骤1701,生成模块1511将索引i设置成零,并将N设置成显示列表中的目标的总数。然后步骤1703检查索引i是否小于N。如果不是该情况,则在步骤1705生成处理终止。
如果i小于N(步骤1703的是选项),然后执行进行到步骤1707,该步骤检查是否i<N并且OL[i].Composites=FALSE。如果这些条件满足(步骤1707的是选项),然后在步骤1709,模块1511设置以下值StartObj=iTotalBBox=OL[i].BBoxi=i+1步骤1709还基于边框和优先级,将项i添加到合成列表CL中的大于i的所有项中。
接下来,在步骤1711检查三个条件。如果OL[i].Bbox不在TotalBBox中,并且i<N,并且OL[i]不在合成列表CL中,则然后执行进行到步骤1713。否则(1711的否选项),执行进行到步骤1715。
在步骤1713,生成模块1511将当前目标OL[i]的边框添加到总边框TotalBBox,并增加i。然后步骤1713基于OL[i].Execution将OL[i]添加到合成列表CL中的所有项,然后返回步骤1711以处理下一目标。
在步骤1715,生成模块1511将OL[StartObj].Start和OL[i-1].End之间的所有边缘都分配给IPART。然后,在步骤1717,使用图2、3A、7和8的方法步骤执行生成任务。然后处理流程进行到步骤1719。如果步骤1707中的条件不满足(步骤1707的否选项),则步骤1719还要执行。在步骤1719,检查i是否小于N,并且OL[i].Composites是否为TRUE。如果这些条件不满足,执行返回步骤1703。如果条件满足,(1719的是选项),然后在步骤1721,生成器1511将当前目标OL[i]添加到合成列表中的所有项(基于OL[i])。然后,生成器使用XPSRM(图2、3A,12和13的方法步骤)来生成CL[OL[i].CompositeIndex]中的所有目标。索引i被增加,并且执行返回步骤1703以考虑下一目标。
还通过以下伪代码来说明图17的方法。
<pre listing-type="program-listing"><![CDATA[1.SETN=i2.SET i=03.WHILE i<N4. WHILE i<N AND OL[i].Compossites=FALSE5.SET StartOjb=i6.SET TotalBBox=OL[i].BBox7.Add entry i to all entries in CL that are over object i(based onbounding boxes and priority)8. i=i+19. WHILE OL[i].BBox NOT IN TotalBBox AND i<N,AND objecti not in CL10.SET TotalBBox=TotalBBox+OL[i].BBox11.Add object i to all entries in CL that are over i(based onbounding boxes and priority)12.i=i+113.ENDWHILE14. Render ALLobjects between StartObj and i-1 using IPARM15. ENDWHILE16. IFi<N AND OL[i].Composite=TRUE17. Add entry i to all entries in CL that are over i(based on boundingboxes and priority)18.Render ALL objects in CL[OL[i].CompositeIndex]+OL[i]usingXPSRM19. i=i+119. ENDIF20.ENDWHILE]]></pre>在图11A的示例中,目标列表由以下目标构成O1,...,O100,O101,O102,O103,O104,O105,O106,...O150,当O1-O100是文本目标1110时,目标O101-O105是向量图形目标1101-1105,并且目标O106-O150是下一目标1120。
合成列表是CL
=O150。合成列表是通过显示列表生成模块1507来确定的。
在生成期间,因为目标O1-O100不通过边框与CL
重叠,并且根据优先级都低于CL
,使用一个或多个IPARM来生成O1-O100目标中的每一个。
然后在伪代码的4和15行之间,通过生成器1511来执行以下工作第7行O101的优先级低于CL
,并通过边框与CL
重叠,所以将O101添加到CL

第11行O102的优先级低于CL
,并通过边框与CL
重叠,所以将O102添加到CL

第11行O103的优先级低于CL
,并通过边框与CL
重叠,所以将O103添加到CL

第11行O104的优先级低于CL
,并通过边框与CL
重叠,所以将O104添加到CL

第9行O105是合成目标所以环终止。
第14行使用IPRM将目标O101、102、103和104生成到帧存储。
第4行O105是合成目标所以环终止。
第16行,OL[i]=O105,其具有O105.Composite=TUE。
第17行因为在合成列表中没有比O105具有更高优先级的项,所以执行继续到第18行。
第18行CL
中的项是O105、O101、O102、O103。所以目标O101、O102、O103和O105被分配给XPSRT并被生成到帧存储。
第3行i=106。并且在第4行和15行之间,使用一个或多个IPARM来生成其他所有的目标1120。
10.0 其他方案在所有这三种方案的变体中,可以看出在生成期间,一旦生成任务开始,另一个生成任务至少能被识别,同时执行当前任务。如果下一个被识别的生成任务具有不与当前执行的生成任务重叠的边框。该处理可以继续,直到下一个被识别的生成任务具有与当前执行的生成任务重叠的边框,或生成完成。
工业实用性根据上述可以显见,所述方案可用于计算机和图像处理工业。
前面只是描述了本发明的一些实施例,在不脱离本发明的范围和精神的情况下,可以对本发明作出修改和/或改变,这些实施例是说明性的,而不是限制性的。
在本说明书的上下文中,词语“comprising”意思是“原则上包括但不是唯一的”或“具有”或“包括”,而不是“仅由......构成”的意思。词语“comprising”的变体是诸如“comprise”和“comprises”,具有相应的变型后的意思。
表A将图2的方法用于图1的实例

表B将图3A的方法用于图1A的扫描线。

表C将图7的方法应用到扫描线662的前三个边缘。
用于扫描线662的有效边缘列表{AEL)是{E5,E1,E3,E4,E2,E6}第一边缘E5被处理如下在步骤751,将计数器i初始化为零,将变量clip_delta初始化为零

第二边缘E1被处理如下在步骤751,将计数器i初始化成0,将变量clip_delta初始化成0

表C(继续)与E3相关联的对象被处理如下在步骤751,将计数器i初始化为零,并将变量clip_delta初始化成0

就这点而言,AOL包含对象矩形654。E3和E4之间的像素运行现在可以输出,该像素运行由存储在填充F3中的像素数据组成。
表D将第三方案应用到图11的扫描线1130。

权利要求
1.一种生成由一个图形目标列表描述的图像的方法,该方法包括步骤把列表中的目标分配到第一目标集合和第二目标集合中的至少一个;使用第一生成方法生成第一目标集合到图像存储器,该第一生成方法确定第一集合中一个目标的一部分是否贡献于第一目标集合的生成输出,并且如果是的话,第一生成方法生成该部分;和使用第二生成方法生成第二目标集合到图像存储,第二生成方法独立于第二集合中的其他目标来生成第二集合中的每个目标。
2.根据权利要求1的方法,其中列表中的目标具有从最低优先级目标到最高优先级目标的优先顺序,并且列表具有要求合成的最高优先级目标的最后合成目标;其中所述分配步骤包括子步骤将列表中的目标分配到目标的第一集合中,这些目标包括从最低优先级直到且包括最终合成目标的目标;以及将列表中具有比最后合成目标更高优先级的目标分配到第二目标集合中。
3.根据权利要求1的方法,其中列表中的目标具有从最低优先级目标到最高优先级目标的优先顺序,并且生成目标以形成像素,其中对于一个或多个将要生成的连续的像素的每一个运行,第一生成方法包括步骤确定在目标第一集合中对像素运行有效的目标;识别具有确定的有效目标的最高优先级的不透明目标;以及生成最高不透明目标和具有比最高不透明目标更高优先级的非不透明有效目标。
4.根据权利要求1的方法,其中列表中的目标具有从最低优先级目标到最高优先级目标的优先顺序,并且生成目标以形成像素,其中对于将要生成的连续的像素的每一个运行,第二生成方法包括子步骤检查第二目标集合中的当前目标是否是有效的,第二集合是以优先级递增的顺序来考虑的;以及如果当前目标是有效的,生成当前的目标到图像存储。
5.根据权要求4的方法,其中第二生成方法进一步包括子步骤搜索第二目标集合中的连续目标的一个组,使得该组中的目标与该组中的其他目标不重叠;以及如果找到了这样的组,将该组中的目标同时生成到图像存储中。
6.根据权利要求5的方法,其中由边界框来表示每个目标的最大范围,其中该组中目标的边界框与该组中其它目标的边界框不重叠。
7.根据权利要求4的方法,其中如果由一个剪切目标对第二目标集合中的多个连续目标进行剪切,使用第一生成方法生成该多个目标。
8.根据权利要求1的方法,进一步包括步骤产生目标列表,其中对于每个目标该列表包括由一个或多个描述该目标的边缘所组成的一个集合;指示目标的最大范围的边界框;以及指示目标是否需要合成的标记。
9.根据权要求8的方法,其中如果由一个或多个剪切目标对目标组进行剪切,被剪切的第一剪切目标和目标组的最后目标之间的边缘被增加到列表中作为一个单独的目标。
10.根据权利要求1的方法,其中列表中的目标具有从最低优先级目标到最高优先级目标的优先顺序,并且其中所述分配步骤包括子步骤以优先级递增的顺序考虑列表中的目标,并且,对于每个当前考虑的目标这样处理如果当前的目标不要求合成,将当前的目标放置在目标的第二集合中,以及如果当前的目标要合成,执行步骤(i)确定比当前的目标具有更低优先级且具有与当前目标的边界框重叠的边界框的目标;以及(ii)把当前考虑的目标和确定的目标放置在第一目标集合。
11.根据权利要求10的方法,其中确定的目标的位于当前目标边缘内的那些部分被放置在目标的第一集合中。
12.根据权利要求1的方法,其中图像存储器是一个分段存储器,其存储图像的当前考虑的部分,并且其中第一和第二生成方法生成出现在图像的当前考虑的部分中的目标。
13.根据权利要求1的方法,其中所述分配步骤将目标分配到第一生成任务和第二生成任务,用于分别由第一生成方法和第二生成方法进行生成,其中多个生成任务是同时处理的。
14.一种用于生成基于目标的图像的方法,该方法包括步骤接收显示列表,其按照从最低优先级到最高优先级的优先级顺序列出图像的目标,其中该显示列表具有一个最后合成目标,该最后合成目标是要求合成的最高优先级的目标;处理第一生成任务,第一生成任务操作显示列表中从最低优先级目标直到且包括最后的合成目标的目标;和处理至少一个第二生成任务,该任务操作显示列表中具有比最后合成目标更高优先级的一个或多个目标,其中第一生成任务确定目标的一部分是否贡献于由第一生成任务处理的目标的生成输出,并且如果是的话,生成该部分,并且其中第二生成任务独立于由第二生成任务处理的其它目标,将目标生成到图像存储。
15.根据权利要求14的方法,其中将多个不重叠和具有连续优先级顺序的目标分配给一个单个的第二生成任务。
16.一种形成由表示为图形目标的数据所描述的图像的方法,该方法包括步骤(a)接收描述图像的目标的列表,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;(b)按递增优先级的顺序考虑列表中的目标,并且对于每个当前考虑的目标这样处理(ba)如果当前考虑的目标不要求合成,使用第一生成方法生成当前考虑的目标到图像存储;并且(bb)如果当前考虑的目标要求合成,执行列步骤(bb)(i)确定列表中具有比当前考虑的目标更低优先级且具有与当前考虑的目标的边界框重叠的边界框的目标;以及bb(ii)使用第二生成方法生成当前考虑的目标和已经确定的目标,该第二生成方法确定一个目标的一部分是否贡献于由第二生成方法处理的目标集合的生成输出,如果是的话,该第二生成方法生成该部分。
17.根据权利要求16的方法,其中步骤(bb)(ii)生成位于当前考虑目标的边缘内的确定目标的区域。
18.一种生成基于目标的图像的方法,该方法包括步骤(a)接收显示列表,该列表按从最低优先级目标到最高优先级目标的优先顺序列出图像中的目标;(b)根据至少一个预定的标准,把显示列表中的目标分配到第一目标集合和第二目标集合中的至少一个;(c)使用第一生成方法生成第一目标集合中的目标;并且(d)使用第二生成方法生成第二目标集合中的目标,其中,对于每轮将要生成的顺序像素,第一生成方法包括下列步骤(ca)确定第一目标集合中的对于像素的运行是有效的目标;(cb)识别具有已确定的有效目标的最高优先级的不透明目标;以及(cc)生成最高级的不透明目标和具有比最高级的不透明目标更高优先级的非不透明的有效目标;而且其中,对于每轮将要生成的顺序像素,第二生成方法包括下列步骤(da)检查第二目标集合中的当前目标是否是有效的,第二目标集合是按递增优先级顺序考虑的;和(db)如果当前目标是有效的,生成当前目标到图像存储。
19.一种生成基于目标的图像的方法,该方法包括步骤按从最低优先级目标到最高优先级目标的优先顺序接收图像中的目标列表;将列表中的目标分配到至少一个目标集合中,其中该集合中的目标在列表中具有连续的优先顺序,且其中集合中的每个目标不与集合中的任何其它目标重叠;生成至少一个目标集合到图像存储。
20.根据权利要求19的方法,其中该列表具有一个最后合成目标,该目标是要求合成的最高优先级目标,其中所述分配步骤考虑列表中具有比最后合成目标更高优先级的目标,该方法进一步包括步骤使用一个生成方法生成列表中最低优先级目标到最高优先级的目标,该方法确定目标的一部分是否贡献于列表种目标的生成输出,如果是的话,该生成方法生成该部分。
21.一种生成由一个图形目标列表所描述的图像的方法,该方法包括步骤把列表中的目标分配到第一目标集合和第二目标集合中的至少一个;使用像素顺序生成方法生成第一集合中的目标;并且使用画具运算生成法生成在第二集合中的目标。
22.一种用于生成由一个图形目标列表所描述的图像的设备,该设备包括第一装置,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成输出,如果是的话,所述第一装置生成该部分;第二装置,使用第二生成方法生成目标到图像存储,该第二方法独立于由所述的第二装置接收到的其它目标来生成由所述第二装置接收的每个目标;以及用于把列表中的图形目标分配到所述第一装置和所述第二装置中的至少一个的装置。
23.根据权利要求22的设备,进一步包括用于生成图形目标列表的装置。
24.一种用于生成基于目标的图像的设备,该设备包括第一装置,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成输出,如果是的话,所述第一装置生成该部分;第二装置,使用第二生成方法生成目标到图像存储,该第二生成方法独立于由所述第二装置接收到的其它目标生成由所述第二装置接收到的每个目标;用于接收图像中的目标列表的装置,其中按从最低优先级目标到最高优先级目标的优先顺序对列表中的目标排序,并且列表具有最后合成目标,它是要求合成的最高优先级的目标;用于把目标分配到所述用于生成的第一装置和用于生成的第二装置的装置,其中所述用于分配的装置把从最低优先级目标到且包括最后合成目标的列表的第一部份分配到所述用于生成的所述第一装置,并且将一个或多个优先级高于最后合成目标的目标分配到所述用于生成的所述第二装置。
25.根据权利要求24的设备,其中所述用于分配的装置同时将多个目标分配到用于生成的第二装置,其中多个目标不重叠,且在列表中具有连续的优先级位置。
26.一种根据权利要求24的设备,包括多个用于生成的第二装置。
27.一种用于生成基于目标的图像的设备,该设备包括第一装置,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成输出,如果是的话,所述第一装置生成该部分;第二装置,使用第二生成方法生成目标到图像存储,该第二生成方法独立于其它接收的目标生成由所述第二装置接收到的每个目标;用于接收图像中的目标列表的装置,,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;用于对于一个要求合成的目标确定列表中目标的装置,,这些目标具有比合成的目标更低优先级且具有与合成的目标的边界框重叠的边界框;用于把非合成目标从列表中分配到用于生成的第二装置的装置;和用于从列表中把合成目标,连同由所述用于确定的装置为每个合成目标确定的目标分配到用于生成的第一装置的装置。
28.一种用于生成基于目标的图像的设备,该设备包括用于按从最低优先级目标到最高优先级目标的优先顺序接收图像中的目标列表的装置;用于将列表中的目标分配到至少一个目标集合的装置,其中集合中的目标在列表中具有连续的优先顺序,且其中集合中的每个目标不与集合中的任何其它目标重叠;以及用于生成至少一个目标集合到图像存储的装置。
29.一种用于生成基于目标的图像的系统,该系统包括一个或多个第一生成器,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由所述第一装置处理的目标集合的生成输出,如果是的话,所述第一装置生成该部分;一个或多个第二生成器,使用第二生成方法生成目标,该第二方法独立于其它接收的目标来生成由所述第二装置接收的每个目标到图像存储;一个显示列表发生器,产生用于图像中的目标列表,其中按从最低优先级目标到最高优先级目标的优先顺序对列表中的目标排序,并且列表具有最后合成目标,该目标是要求合成的最高优先级目标;显示列表存储器,存储由所述显示列表发生器产生的列表;和与所述显示列表存储器和所述第一和第二生成器通信的处理器,其中将处理器编程为把从最低优先级目标直到且包括最后合成目标的目标分配到第一生成器中,并且把具有比最后合成目标更高优先级的目标分配到一个或多个第二生成器。
30.一种用于生成基于目标的图像的系统,该系统包括一个或多个第一生成器,使用第一生成方法生成目标到图像存储,该第一生成方法确定目标的一部分是否贡献于由第一生成方法处理的一个目标集合的生成输出,并且,如果是的话,第一生成方法生成该部分;一个或多个第二生成器,使用第二生成方法生成目标,该第二方法独立于其它接收的目标来生成由所述第二装置接收的每个目标到图像存储;一个显示列表发生器,产生图像中的一个目标列表,其中按从从最低优先级目标到最高优先级目标的优先顺序对列表中的目标排序;一个显示列表存储器,存储由所述显示列表发生器产生的列表;以及与所述显示列表存储器和所述第一和第二生成器通信的处理器,其中处理器被编程为执行下列步骤(i)按优先级递增的顺序考虑列表中的目标,并且,对于每个当前考虑的目标这样处理(ii)如果当前目标不要求合成,将当前目标分配到第二生成器;和(iii)如果当前目标要求合成,确定列表中比当前考虑的目标具有更低优先级,并且具有与当前考虑的目标的边界框重叠的边界框的目标,并且把当前考虑的目标和确定的目标分配到第一生成器。
31.一种包括记录在机读记录介质上的机读程序代码的计算机程序产品,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤把列表中的目标分配到第一目标集合和第二目标集合中的至少一个;使用第一生成方法生成目标到图像存储,该第一生成方法确定第一集合的一个目标的一部分是否贡献于目标第一集合的生成输出,并且,如果是的话,第一生成方法生成该部分;以及使用第二生成方法生成第二目标集合到图像存储,该第二方法独立于第二集合中的其它目标来生成第二集合中的每个目标。
32.一种包括记录在机读记录介质上的机读程序代码的计算机程序产品,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤接收显示列表,其按从最低优先级目标到最高优先级目标的优先顺序列出图像中的目标,其中显示列表具有最后合成目标,它是要求合成的最高优先级的目标;使用第一生成方法生成第一生成任务,第一个生成任务包括显示列表中从最低优先级目标直到最后合成目标的目标;并且使用第二生成方法生成一个或多个第二生成任务,第二生成任务包括显示列表中具有比最后合成目标更高优先级的一个或多个目标,其中第一生成方法确定目标的一部分是否贡献于第一生成任务的生成输出,如果是这样的话,第一生成的方法生成该部分,并且其中第二生成方法独立于第二生成任务中的其它目标生成第二生成任务中的每个目标到图像存储器。
33.一种计算机程序产品,包括记录在机读记录介质上的机读程序代码,用于控制该数据处理设备的操作,在数据处理设备上执行基于目标的图像的生成方法,该方法包括步骤(a)接收描述图像的目标列表,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;(b)按优先级递增的顺序考虑列表中的目标,并且,对于每个当前考虑的目标这样处理(ba)如果当前考虑的目标不要求合成,使用第一生成方法生成当前考虑的目标到图像存储;并且(bb)如果当前考虑的目标要求合成,执行下列步骤(bb)(i)确定列表中具有比当前考虑的目标更低优先级且具有与当前考虑的目标的边界框重叠的边界框的目标;和(bb)(ii)使用第二生成方法生成当前考虑的目标和确定的目标,该第二生成方法确定目标的一部分是否贡献于由第二生成方法处理的目标集合的生成输出,并且,如果这样的话,第二生成方法生成该部分。
34.一种包括记录在机读记录介质上的机读程序代码的计算机程序产品,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤按从最低优先级目标到最高优先级目标的优先顺序接收图像中目标的列表;分配列表中的目标到至少一组目标,其中集合中的目标在列表中具有连续的优先顺序,而且其中集合中的每个目标不与集合中任何其它目标重叠;生成至少一个目标集合到图像存储。
35.一种包括记录在机读记录介质上的机读程序代码的计算机程序,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤把列表中的目标分配到第一目标集合和第二目标聚合中的至少一个;使用第一生成方法生成第一目标集合到图像存储器,该第一生成方法确定第一集合中的目标的一部分是否贡献于第一集合的生成输出,并且如果是的话,第一生成方法生成该部分;以及使用第二生成方法生成第二目标集合到图像存储,该第二生成方法独立于第二集合中的其它目标生成第二集合中的每个目标。
36.一种包括机读程序代码的计算机程序,用于控制数据处理设备的操作,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤接收显示列表,该列表按从最低优先级目标到最高优先级目标的优先顺序列出图像中的目标,其中显示列表具有最后合成目标,它是要求合成的最高优先级的目标;使用第一生成方法生成第一生成任务,第一个生成任务包括从最低优先级目标直到并且包括最后合成目标的显示列表中的目标;并且使用第二生成方法生成一个或多个第二生成任务,第二生成任务包括显示列表中具有比最后合成目标更高优先级的一个或多个目标,其中第一生成方法确定目标的一部分是否贡献于第一生成任务的生成输出,如果是的话,第一生成方法生成该部分,并且其中第二生成方法独立于第二生成任务中的其它目标,生成第二生成任务中的每个目标到图像存储器。
37.一种包括用于控制数据处理设备操作的机读程序代码的计算机程序,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤(a)接收描述图像的目标列表,其中按从最低优先级目标到最高优先级目标的优先顺序对目标排序;(b)按递增优先级的顺序来考虑列表中的目标,并且,对于每个当前考虑的目标这样处理(ba)如果当前考虑的目标不要求合成,使用第一生成方法生成当前考虑的目标到图像存储;并且(bb)如果当前考虑的目标要求合成,执行下列步骤(bb(i)确定列表中具有比当前考虑的目标更低优先级,并且具有与当前考虑的目标的边界框重叠的边界框的目标;和(bb)(i)使第二生成方法生成当前考虑的目标和确定的目标,第二生成方法确定目标的一部分是否贡献于由第二生成方法处理的目标集合的生成输出,并且,如果是的话,第二生成方法生成该部分。
38.一种包括用于控制数据处理设备操作的机读程序代码的计算机程序,程序代码在数据处理设备上执行以便执行生成基于目标的图像的方法,该方法包括下列步骤按从最低优先级目标到最高优先级目标的优先顺序接收图像中目标的列表;分配列表中的目标到至少一个目标集合,其中集合中的目标在列表中具有连续的优先顺序,而且其中集合中的每个目标不与集合中任何其它目标相重叠;生成至少一个目标集合到图像存储。
全文摘要
描述了一种生成基于目标的图像的方法。该方法接收图像(950)中的目标(951-955)列表,该列表按从最低优先级目标(951)到最高优先级目标(955)的优先级顺序排列这些目标。将这些目标分配到第一目标集合(951,952)和/或第二目标集合(953,955)。如果目标的一部分在第一集合中是可见的,则使用仅仅生成部分目标的第一生成方法生成第一目标集合到目标存储,并且使用第二生成方法生成目标的第二集合到图像存储,该第二方法独立于第二集合中的其他目标生成每个目标。可以基于最高合成目标(952)的优先级顺序进行分配。可以基于重叠目标(1101,1102,1103,1105)的组进行分配,其中在该组中的一个目标(1105)请求合成。
文档编号G06T15/50GK1797432SQ20051013732
公开日2006年7月5日 申请日期2005年6月30日 优先权日2004年6月30日
发明者戴维·C.·史密斯 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1