专利名称:用于优化半色调打印机性能的系统和方法
技术领域:
本发明一般涉及计算机图形,并且尤其涉及再现图形对象。本发明涉及一种用于再现图形对象的方法和设备。本发明还涉及一种包括计算机可读介质的计算机程序产品,该计算机可读介质具有在其中记录的用于再现图象对象的计算机程序。
背景技术:
许多常规的打印系统,诸如那些基于喷墨式技术的打印系统,其通过在页面上形成极小的墨点来打印一幅图象。这些常规打印系统中的大多数未应用现有技术已知的连续色调的打印机。也就是说,由这些常规打印系统中的某一个所打印的形成图象的点,完全存在或者完全不存在。为了获得宽范围色彩,这些打印机使用常规的混色或者半色调方法,其用两种或更多可用色彩的点模型来逼近一种期望色彩。
打印机来再现页面的一种已知方法,包括如下步骤在连接于该打印机上的一计算机存储器内配置的一帧缓存器当中,产生一页面图象;并接着在对于该图象的每一象素而言已完全产生图象之后,在该图象上执行半色调操作。为了接着打印该图象,需要计算表示被打印页面图象的点阵装置(dot arrangement)。如果对于输出图象上的每一象素而言,都必须执行该计算时,那么这种计算是一个计算量相当大的过程。如果打印机装置具有高输出分辨率时,则这个问题更加恶化。
在打印机上再现页面的另一种已知方法,意图通过在该图形对象被再现到缓存器中之前,在图象的每个图形对象上执行半色调处理来减少存储器的使用。可是,这种方法遭遇两个主要缺点。第一,图形对象可能重叠,在不会被打印的图形对象的半色调区域中,需要执行大量的工作。第二,如果图形对象并非完全不透明(即,具有一定透明度)和/或利用逻辑光栅操作进行再现,则在一个页面上的透明对象下面的图形对象数据会受到破坏,在输出图象中产生错误结果。
因此,无疑需要存在一种改良再现方法,在再现不透明和重叠对象时,该方法提供了在速度和存储器使用方面的改善。
发明内容
本发明的一个目的是大体上克服或者至少改善现有设备的一个或多个缺点。
根据本发明的一个方面,提供一种创建图象的方法,所述图象通过基于扫描线再现多个图形对象来形成,这里,每个扫描线包括至少一个象素序列,所述方法包括如下步骤(I)形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最低端图形对象的顺序进行排序;和(II)对于每个所述图象的所述扫描线以及对于所述扫描线的每个象素序列(II)(i)通过所述阵列来确定作用于所述象素序列的对象;和(II)(ii)合成与一个或多个所述作用对象相关的数据,并且把合成数据进行半色调处理以便产生所述象素序列。
根据本发明的另一方面,这里提供一种用于创建图象的设备,通过基于扫描线再现多个图形对象来形成所述图象,在此每个扫描线包括至少一个象素序列,所述设备包括阵列形成装置,用于形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最底端图形对象的顺序进行排序;通过装置,用于通过所述阵列来确定作用于扫描线象素序列的对象;和合成装置,用于合成与一个或多个所述作用对象相关的数据,并且把该合成数据进行半色调处理以便产生所述象素序列。
根据本发明的另一方面,提供了一种用于创建图象的计算机程序,通过基于扫描线再现多个图形对象来形成所述图象,其中,每个扫描线包括象素的至少一个运行,所述程序包括用于执行下列步骤的代码(I)形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最底端图形对象的顺序进行排序;和(II)对于所述图象的每个扫描线以及对于所述扫描线象素的每个运行(II)(i)通过所述阵列来确定作用于所述象素序列的对象;和(II)(ii)合成与一个或多个所述作用对象相关的数据,并且把合成数据进行半色调处理以便产生所述象素序列。
根据本发明的另一方面,提供了一种计算机可读介质,具有在其上面记录的程序,在此,该程序被配置用于创建一个图象,通过基于扫描线再现多个图形对象来形成所述图象,其中每个扫描线包括象素的至少一个运行,所述程序包括用于执行下列步骤的代码(I)形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最底端图形对象的顺序进行排序;和(II)对于所述图象的每个扫描线以及对于所述扫描线象素的每个运行(II)(i)通过所述阵列来确定作用于所述象素序列的对象;和(II)(ii)合成与一个或多个所述作用对象相关的数据并且把合成数据进行半色调处理以便产生所述象素序列。本发明的其它方面也被公开。
现在将参照附图描述本发明的一个或多个实施例,其中图1是一个通用计算机的示意框图,在其上可以实施所描述的装置(arragement);图2示出了一个再现图象的方法的纵览框图;图3示出了对图2的图象产生的象素序列;
图4示出了根据所描述装置(arragement)产生的图2的图象;和图5A和5B示出了用于打印的再现图形对象的方法流程图。
具体实施例方式
这里,在一个或多个附图当中给步骤和/或特征设置标记,其中这些步骤和/或特征具有相同的标记数字,为了说明起见,这些步骤和/或特征具有相同的功能或操作,除非出现相反意图。
下面参照图5A和图5B描述再现图形对象的一种方法500。方法500的原理具备图形对象再现的一般适用性。然而,为了容易解释,参考在页面上打印的图形对象的再现,来描述该方法500的步骤。这并非意图让本发明限制为所描述的装置(arrangement)。例如,方法500可以应用于在液晶显示器或其它显示装置上显示的图形对象的再现,其具备了包含所显示图象的点完全存在或者完全不存在的特性。这样的显示装置经常由具有极其受约束的记忆力及性能的嵌入式计算系统来驱动。
方法500最好利用通用计算机系统100来实施,例如如图1所示,其中图2到5B的处理可以用软件实现,例如在计算机系统100内执行的一个应用程序。特别是,下文所述方法500的步骤由该计算机执行的软件中的指令来完成。这些指令可以形成为一个或多个代码模块,每一个都用来执行一个或多个特定的任务。该软件还可以分成两个独立的部分,其中第一部分执行方法500,而第二部分管理第一部分与用户之间的用户接口。该软件可以存储在诸如包括下文所述存储装置在内的计算机可读介质当中。该软件通过计算机可读介质装入到计算机中,并且接着由计算机执行。带有这种软件或记录于其上的计算机程序的计算机可读介质,是一种计算机程序产品。在计算机中使用此计算机程序产品,更适合实现用于执行此处所述设备的有利设备。
计算机系统100包括计算机模块101、诸如键盘102和鼠标103之类的输入装置、包括打印机115和显示装置114的输出装置。该计算机模块101使用调制解调器(Modem)收发信机装置116与通信网络120(例如经由电话线121或其它可用介质可建立连接的通信网络)进行通信。可以使用该调制解调器116来获得对因特网以及诸如局域网(LAN)和广域网(WAN)之类的其它网络系统的访问。
该计算机模块101通常包括至少一个处理器单元105,诸如由半导体随机访问存储器(RAM)和只读存储器(ROM)形成的存储器单元106,包含视频接口107的输入/输出(I/o)接口,以及键盘102、鼠标103和可选游戏杆(未示出)的I/o接口113,以及调制解调器116的接口108。提供一存储装置109,而且通常包括硬盘驱动器110和软盘驱动器111。也可以使用磁带驱动器(未示出)。通常提供CD-ROM驱动器112作为一种非易失数据源。该计算机模块101的组件105至113,通常经由互连总线104进行通信,而在某种意义上,这将产生本领域技术人员已知的一种计算机系统100的常规操作方法。在其上可以实施所述装置(arrangement)的计算机实例包括IBM-PC(IBM个人计算机)及兼容机,Sun公司的工作站(Sun Sparcstation)或由此演化出的类似的计算机系统。
通常,该应用程序驻留于硬盘驱动器110上,并且在其执行过程中由处理器105读出和控制。从网络120当中读取的程序及所有数据的中间存储,都可以利用半导体存储器106来实现,也可能与硬盘驱动器110协力共同实现。在某种情况下,可以给用户提供在CD-ROM或软盘上编码的应用程序,并经由相应驱动器112或111读出,或者作为选择,可由用户经由调制解调器装置116从网络120当中读出。进一步来讲,软件还可以通过其它计算机可读介质装入到计算机系统100中。在这里所用的术语“计算机可读介质”指的是,参与给计算机系统100提供指令和/或数据以用来执行和/或处理的任何存储器或传输介质。存储介质的实例包括软盘、磁带、CD-ROM、硬盘驱动器、ROM或集成电路、磁光盘,或者诸如PCMCIA卡之类的计算机可读卡,而不论这些装置是在计算机模块101内部或是外部。传输媒体的实例包括无线或红外发射信道,还有到另一计算机或网络装置的网络连接,以及包含有电子邮件传输和记录于网站等上面的信息的互联网或内部网。
方法500的步骤使半色调处理与在计算机系统100上执行的一个现有主机再现系统相结合。在方法500中,将固定色彩的区域转换成一种平铺式表示,这可用于为不论多大的图象的任何区域表示半色调色彩。因此,方法500对宽区域输出页面而言,提高了主机再现系统的性能。进一步来讲,在方法500中,可按照要求将位象数据转换成相应的半色调表示,因此在相应图象的再现期间节省了相当大的存储容量。
当再现系统从一个边缘交叉到下一边缘产生象素数据运行时,在一扫描线的基础上执行该方法500的步骤,以及按照要求来执行该方法500的步骤。在该方法500中,利用表示该图象的图形对象的显示列表或阵列对该图象进行再现,此处,在用以打印于页面上而被输出之前,将该对象转换成半色调表示。优选地,在图象输出之前在图象对象上执行混色。可替代地,对本领域技术人员来说已知的误差漫射、二值化或任何其它半色调技术可以在图象对象上来执行。按照这种方式下的输出产生,缩减了在对象半色调区域当中通常所需做的工作,同时不需要使用帧缓存器。如果需要的话,方法500还会在图形对象上执行色彩转换。
使用方法500来再现的图形对象,比如可以定义单调色或混合色区域、位象数据或平铺图象数据。在方法500中,可以为不同对象类型(例如文本对象,图形对象,图象对象)预先计算出半色调数据,并且该半色调数据可以与将用于再现的表示图形对象的原始输入数据一起被储存。如上所述,半色调数据可以基于本领域技术人员已知的任何混色技术。可替代地,半色调数据可以基于误差漫射、二值化或本领域技术人员已知的任何其他半色调技术。在已知图象对象完全不透明的地方,宁可使用与不透明对象相关的半色调数据来直接再现图象,也不愿应用透明度作为一个独立的后再现步骤,正如其在传统再现方法中经常执行的那样。与传统再现方法相比,使用方法500再现单调色对象极大地降低了必须进行色彩转换及半色调的象素数量。进一步来说,就是只对实际上可见的图象对象区域进行处理。因此,例如在需要临时帧存储的常规打印机再现方法上,减少了再现图形对象的存储器数量。
更进一步来讲,如果页面上的一个将要再现的对象是不透明的,则该对象的原始色彩或图象数据,对于取决于数据的合成操作或逻辑光栅操作可以最高精确度来使用。然而,如果已知一个页面上的所有图形对象为完全不透明的,则这种原始输入数据可以被删除,结果进一步节省了存储容量。
再进一步来讲,在对象数据(即,显示列表)列表驻留在存储器106中并且由打印机115执行根据方法500的对象数据再现的系统当中,方法500可以例如显著减小相关假脱机操作的文件大小。由于在显示列表假脱机到打印机115之前,原始连续色调位图数据被替换为等效的半色调数据,因而实现了假脱机操作的文件尺寸的减小。
参见图2,在方法500中,包括对象203、204和205的一个图象200,通过例如在图象200扫描期间产生边缘交叉信息进行再现。边缘交叉信息从图形对象202的列表中提取,来表示图象200,在此对列表202进行深度预排序(即,z-排序)。接着,使用该边缘交叉信息来产生象素序列,这些象素将被输出到打印机(如打印机115)以用于在页面210上进行打印。例如,图3示出了在扫描线301穿过边缘322、323和324且同时引起象素序列325、326、327和328处的图象200的一部分。
如上所述,可以利用方法500再现单调色(即,恒定色区域)(如对象203)、再现两个端点之间内插的色彩(例如对象204)、以及再现位象数据(如位象205)。可还以利用该方法500对遍及所再现区域的重复的或平铺的位象数据进行再现。尤其是,恒定色区域被转换成平铺表示,该平铺表示接着被应用在那个图象区域的半色调操作中。
该方法500最好作为一个应用程序来实现,此应用程序驻留在硬盘驱动器110上,并且在其执行过程中由处理器105读出和控制。方法500从步骤501开始,在此,处理器105检测将被再现的第一图形对象。在下一个步骤503,图形对象被处理器105分解成为定义对象的一组边缘、对象的优先级信息、对象的光栅操作、以及对象的相应缠挠(winding)规则。该方法500继续下一个步骤505,在此,定义该对象的边缘组被添加到存储器106内的一边缘数据库当中。在下一个步骤507,如果该图象的所有对象已经被处理器105接收,则方法500继续下一个步骤509。否则,方法500返回到步骤501。
在步骤509,在存储器106内配置的边缘数据库当中所存储的边缘,按照y坐标升序、x坐标升序以及优先级升序(即,z排序)进行排序。在下一个步骤511,处理器105为即将被再现的图象选择一条扫描线。对于在步骤511所选扫描线上运行的象素,在下一步骤513,激活那些带有被扫描线穿入的边缘的对象,同时解除激活那些带有被扫描线穿出的边缘的对象。方法500继续下一个步骤514,在此,如果当前象素序列的最高优先级活动(active)对象是不透明的,则方法500继续下一个步骤515。否则,方法500进入步骤517。在步骤515,如果最高优先级对象的填充数据已作了半色调处理,那么方法500进入步骤519。否则,方法500进入步骤516,在此,为对象的填充数据产生半色调信息,并且该半色调信息连同该对象的原始填充数据一起被储存在存储器106中。方法500继续下一个步骤519,在此,使用该对象的半色调填充数据来输出象素序列,用以在打印机(如打印机105)上打印。
在步骤517,当前象素序列的全部可见对象的填充数据被合成在一起,以用来产生用于象素序列的数据。同时还在步骤517,当前象素序列的数据被半色调处理后接着输出以用于打印。在下一个步骤521,如果对于当前扫描线已经处理了全部象素序列,则方法500继续下一步骤523。否则,方法500返回到步骤513。在步骤523,如果对于将要再现的图象已经处理了全部扫描线,则方法500结束。否则,方法500返回到步骤511,在此处理器105将选择下一条扫描线。
现在将参考图2至4的实例进一步解释该方法500。参见图4,扫描线最好从将要再现的页面210顶部向下产生。然而,本领域技术人员应该理解,还可以从页面210的底部产生扫描线。正如在图4中看到的,对于扫描线401产生象素序列431、450和451而对于扫描线402产生象素序列434、435、436和437。在扫描线401之前的任何扫描线都未与图形对象203或205中任一个相交叉,因此由扫描线401之前的扫描线产生的象素序列不会引起任何半色调输出。这对于象素序列431也如此。在扫描线处理期间遇到的第一个非白色图形对象是单调填充对象203。在方法500中,对象203被转换成表示对象203一部分的平铺图象433,并且从扫描线401起,在单调填充对象203内的全部后续象素序列均使用该平铺图象433来产生半色调输出以直接用于在打印机115上打印。按照这种方式产生象素序列,引起了在速度和效率方面超过常规再现方法的改善,因为平铺图象可以由具有少量系统开销的计算机系统(如计算机系统100)进行再现。
对于扫描线402,象素序列434将为白色,并且象素序列435将利用该平铺图象433。在方法500中,为了象素序列436,图象对象205的一部分被转换成图象对象205内所看到的半色调图象438(即由阴影区域表示)。该半色调图象438被用于图象对象205内的全部后续象素序列,假定该图象对象205在对象203和205之间的重叠区域457(即,由假想线表示的)中完全不透明。与之相反,如果图象对象205并非完全不透明,则利用单调填充对象203和图象对象205的原始数据合成重叠区域457。此合成操作的结果接着被半色调处理。然而应当指出的是,只有在重叠区域457内、以及只有当相应合成操作或逻辑光栅操作需要这种操作时,才需要这种合成。
继续参见图4的实例,如果预先已知图形对象203、205或204当中没有一个需要合成(由于所有对象是不透明的),则在半色调图象产生之后,该图象对象203的原始位图数据可以被舍弃。例如,这样的操作引起了一个24比特RGB色调图象的存储器使用率方面的极大降低。这样一种RGB图象的原始数据,每一象素占用三字个节,而在相同分辨率的图象半色调表示的每一个象素四比特,将两个象素压缩到一个字节当中,提供了一个6∶1的改善。
当处理器105从一个边缘交叉到下一边缘产生象素数据的运行时,最好执行该方法500的步骤。这产生了超过常规再现方法的好几个优点。首先,在一个或多个象素序列内只有实际可见的每一图形对象区域被处理。其次,如果一个对象并非不透明,则该对象的原始填充色或图象数据,对于取决于该对象的任何合成操作或逻辑光栅操作可以最高精确度来使用。第三,如果已知在将要再现的页面上没有透明的图形对象存在,则在与较低优先级对象相关的数据已经被半色调处理之后,与隐藏对象相关的数据(即,较低优先级对象)可以被舍弃掉,从而为图象数据产生了相当可观的存储容量节省。最后,位象数据可以按需要被转换成半色调表示,因而节省了相当多的存储容量。
该方法500也能够在诸如一个或多个集成电路之类的专用硬件中执行,以实现图5中的功能或子功能。此类专用硬件可以包括图形处理器、数字信号处理器,或者一个或多个微处理器以及相关存储器。
前面所指出的方法包括一个特定的控制流程。这里有该方法的许多其他变形,其在不超出本发明的精神或范围的情况下可使用不同的控制流程。此外,那些一个或多个方法步骤可以并行执行而非按顺序执行。
先前的描述只是本发明的某些实施例,而在不偏离本发明的范围和精神的情况下,可做出修改和/或变化,这些实施例是说明性的而非限定性的。
权利要求
1.一种用于创建图象的方法,其中该图象是通过按扫描线再现多个图形对象而形成的,且其中每条扫描线包括至少一个象素序列,所述方法包括如下步骤(I)形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最底端图形对象的顺序进行排序;和(II)对于所述图象的每条扫描线以及对于所述扫描线的每个象素序列(II)(i)通过所述阵列来确定对所述象素序列有贡献的对象;和(II)(ii)合成与一个或多个所述有贡献的对象相关的数据,并且把合成数据进行半色调处理以便产生所述象素序列。
2.根据权利要求1的方法,其中,步骤(II)(ii)还包括如下子步骤(II)(ii)(a)确定相应于所述象素序列的一个最顶端作用对象是否是不透明的;和(II)(ii)(b)如果所述最顶端作用对象是不透明的,则把表示所述最顶端作用对象的象素数据进行半色调处理以便产生所述象素序列。
3.根据权利要求1的方法,还包括把所述对象分解成为它们的组份属性的步骤,它们的组份属性包括相应对象的至少一个边缘。
4.根据权利要求4的方法,其中,步骤(II)(i)包括进一步子步骤通过一个另外的阵列来确定定义所述象素序列的对象边缘。
5.根据权利要求4的方法,还包括取决于所述作用对象的哪一边缘被一条当前扫描线穿过来确定对象作用的步骤。
6.根据权利要求1的方法,其中,步骤(II)(ii)包括进一步子步骤预先使用半色调数据来产生所述象素序列。
7.一种用于创建图象的设备,其中该图象是通过按扫描线再现多个图形对象来形成所述图象,且其中在此每条扫描线包括象素的至少一个序列,所述设备包括阵列形成装置,用于形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最底端图形对象的顺序进行排序;通过装置,用于通过所述阵列来确定对扫描线的一个象素序列有贡献的对象;和合成装置,用于合成与一个或多个所述有贡献的对象相关的数据,并且把该合成数据进行半色调处理以便产生所述象素序列。
8.如权利要求7所述的设备,其中,所述合成装置还包括确定装置,用于确定相应于象素所述运行的一个最顶端作用对象是否是不透明的;和半色调装置,如果所述最顶端作用对象是不透明的,则用于把表示所述最顶端作用对象的象素数据进行半色调处理以便产生所述象素序列。
9.根据权利要求7的设备,还包括用于把所述对象分解成为它们组份属性的分解装置的步骤,它们的组份属性包括相应对象的至少一个边缘。
10.根据权利要求7的设备,还包括用于通过一个另外的阵列来确定定义所述象素序列的对象边缘的装置。
11.根据权利要求7的设备,还包括取决于所述作用对象的哪一边缘被一个当前扫描线穿过来确定对象作用的装置。
12.一种用于创建图象的计算机程序,通过基于扫描线再现多个图形对象来形成代码以用于执行下列图象,其中每个扫描线包括象素的至少一个运行,所述程序包括用于执行下列步骤的代码(I)形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最底端图形对象的顺序被排序;和(II)对于所述图象的每个扫描线以及对于所述扫描线象素的每个运行(II)(i)通过所述阵列来确定作用于所述象素序列的对象;和(II)(ii)合成与一个或多个所述作用对象相关的数据并且把合成数据进行半色调处理以便产生所述象素序列。
13.一种计算机可读介质,具有在那上面记录的一个程序,在此,程序被配置用于创建一个图象,通过在一个扫描线的基础上再现多个图形对象来形成所述图象,其中每个扫描线包括象素的至少一个运行,所述程序包括用于执行下列步骤的代码(I)形成表示所述图象的所述图形对象的一个阵列,所述阵列按照从最顶端图形对象到最底端图形对象的顺序进行排序;和(II)对于所述图象的每个扫描线以及对于所述扫描线象素的每个运行(II)(i)通过所述阵列来确定作用于所述象素序列的对象;和(II)(ii)合成与一个或多个所述作用对象相关的数据并且把合成数据进行半色调处理以便产生所述象素序列。
全文摘要
一种创建图象的方法(500)被公开。通过在一个扫描线(例如301)的基础上再现多个图形对象(例如203,204,205)来形成所述图象(例如200),在此每个扫描线(301)包括象素(例如325)的至少一个运行。方法(500)形成表示图象(500)的图形对象(203,204,205)的一个阵列。该阵列按照从最顶端图形对象到最底端图形对象的顺序进行排序。对于图象(200)的每个扫描线(301)以及对于扫描线(301)的每个象素(325)运行,阵列被通过来确定作用于象素(325)运行的对象(203,204,205)。如果所述最顶端作用对象是不透明的,那么把表示所述最顶端作用对象的象素数据进行半色调处理以便产生所述的象素(325)运行。否则,与一个或多个该作用对象相关的数据被合成并且该合成数据被半色调处理以便产生象素(325)运行。
文档编号G06F3/12GK1447286SQ0310823
公开日2003年10月8日 申请日期2003年3月25日 优先权日2002年3月25日
发明者戴维·C·史密斯, 吉尔斯·帕克特 申请人:佳能株式会社