本发明涉及打印数据的带并行绘制技术。
背景技术:
传统上,已经提出了用于增大从主机计算机等接收到的打印数据(pdl数据)的页面的绘制速度的各种技术。例如,日本特开2011-158951公开了如下的图像处理设备,其中在该图像处理设备中,一个核根据与页面相对应的pdl数据以带为单位来生成一个页面的中间数据,并且多个核并行进行用于绘制不同带的中间数据。
存在pdl数据包括图像数据作为页面的构成的一部分的情况。此外,存在诸如此的图像数据横跨多个带排列的情况。为了通过使用上述日本特开2011-158951的技术来进行横跨多个带的图像数据的带并行处理,需要以带为单位对图像数据进行分割,针对与各带相对应的各分割后的图像来生成中间数据,并且进行绘制。因此,处理成本增加。
技术实现要素:
根据本发明的一种图像处理设备,其使用第一绘制单元和第二绘制单元,其中所述第一绘制单元用于基于打印数据对页面内的第一区域进行绘制,以及所述第二绘制单元用于基于所述打印数据对所述页面内的第二区域进行绘制,所述图像处理设备包括:控制器,其具有用于执行存储器中存储的指令的处理器或者具有电路,其中,所述控制器被配置为:基于所述打印数据来获取以跨所述第一区域和所述第二区域的方式配置的图像数据;使访问了所述图像数据的所述第一绘制单元利用所述图像数据的全部像素中的在所述第一区域内的像素来进行绘制;以及使访问了所述图像数据的所述第二绘制单元利用所述图像数据的全部像素中的在所述第二区域内的像素来进行绘制。
根据本发明的一种图像处理设备的控制方法,所述图像处理设备使用生成单元、第一绘制单元和第二绘制单元,其中,所述生成单元用于基于打印数据以页面为单位生成中间数据,所述第一绘制单元用于基于所述中间数据来对页面内的第一区域进行绘制,以及所述第二绘制单元用于基于所述中间数据来对所述页面内的第二区域进行绘制,所述控制方法包括以下步骤:使所述生成单元基于所述打印数据生成包括跨所述第一区域和所述第二区域的压缩图像数据的页面的中间数据的步骤;以及使所述第一绘制单元基于通过对所述压缩图像数据进行解压缩而获得的图像数据来对所述第一区域进行绘制,并且使所述第二绘制单元基于通过对所述压缩图像数据进行解压缩而获得的图像数据来对所述第二区域进行绘制。
根据本发明的一种图像处理设备,其通过基于打印数据将页面分割成第一区域和第二区域来进行绘制,所述图像处理设备包括:存储器,用于存储以跨所述第一区域和所述第二区域的方式配置的图像数据;第一绘制器,用于访问所述图像数据,并且通过使用所述图像数据的全部像素中的在所述第一区域内的像素来进行绘制;以及第二绘制器,用于访问所述图像数据,并且通过使用所述图像数据的全部像素中的在所述第二区域内的像素来进行绘制。
根据本发明的一种非瞬态计算机可读存储介质,其存储用于使计算机进行图像处理设备的控制方法,所述图像处理设备使用生成单元、第一绘制单元和第二绘制单元,其中,所述生成单元用于基于打印数据以页面为单位生成中间数据,所述第一绘制单元用于基于所述中间数据来对页面内的第一区域进行绘制,以及所述第二绘制单元用于基于所述中间数据来对所述页面内的第二区域进行绘制,所述控制方法包括以下步骤:使所述生成单元基于所述打印数据生成包括跨所述第一区域和所述第二区域的压缩图像数据的页面的中间数据的步骤;以及使所述第一绘制单元基于通过对所述压缩图像数据进行解压缩而获得的图像数据来对所述第一区域进行绘制,并且使所述第二绘制单元基于通过对所述压缩图像数据进行解压缩而获得的图像数据来对所述第二区域进行绘制。
通过以下(参考附图)对典型实施例的说明,本发明的其它特征将变得明显。
附图说明
图1是示出图像处理设备的硬件结构的示例的图;
图2a是与图像处理设备的打印处理有关的软件结构的框图,以及图2b是示出根据第一实施例的rip的硬件结构示例的图;
图3是示出直到从打印作业生成位图图像数据为止的流程的流程图;
图4是示出包括压缩图像的页面的示例的图;
图5是示出与图4中的页面相对应的打印作业的图;
图6是示出与pdl数据相对应的中间数据的图;
图7是说明用于以带为单位并行进行绘制处理的处理的图;
图8是示出第一绘制处理的流程的流程图;
图9是示出扫描行处理的详情的流程图;
图10是示出将图像数据存储在解压缩图像存储用存储器内的方式的图;
图11是示出第二绘制处理的流程的流程图;以及
图12是示出根据第二实施例的rip的硬件结构示例的图。
具体实施方式
以下,参考附图来说明用于实现本发明的实施例。以下的实施例所示的结构仅是示例,并且本发明不限于示意性示出的这些结构。
第一实施例
首先,说明根据本发明的图像处理设备的硬件结构。图1是示出图像处理设备的硬件结构的示例的图。图1所示的图像处理设备100经由lan120而与主机pc130连接。期望进行打印的用户在主机pc130中生成要打印的文档的打印作业,并且经由lan120将打印作业从主机pc130发送至图像处理设备100。打印作业包括采用页面描述语言所述的数据(pdl数据),这指定了如何将诸如文本、图像(照片)和图形等的对象排列在页面内。由此,打印作业还被称为打印数据。然后,在本实施例中,前提是在pdl数据的页面内包括照片对象的压缩图像。这里,作为图像处理设备100,假定通过针对中间数据以带为单位进行并行绘制技术来进行打印的sfp(单功能打印机)。然而,图像处理设备可以是包括诸如作为复印机的功能和作为fax的功能等的多个功能的mfp(多功能打印机)。可以将本实施例的方法广泛应用于具有用以通过针对中间数据以带为单位并行绘制来进行打印的功能的任意设备。以下将说明构成本实施例的图像处理设备100的各单元。
在图1中,虚线矩形示出控制器单元,并且该控制器单元包括cpu101、ram102、rom103、大容量存储装置104、操作单元i/f106、网络i/f107、系统总线108、图像总线i/f109以及图像总线110。cpu101是用于进行各种类型的运算操作处理的处理器并且负责对图像处理设备100整体的控制。ram102是cpu101进行工作的系统工作存储器。此外,ram102还用作在用于暂时存储通过解释从主机pc130接收到的打印作业内的pdl数据所生成的中间数据以及用于进行对中间数据的绘制处理时的工作区域。rom103存储系统等的引导程序等。大容量存储装置104例如是硬盘驱动器,并且存储用于各种类型的处理的系统软件以及从主机pc130接收到的打印作业。
操作单元105具有用于显示各种菜单和打印数据信息等的显示器,以及用户进行各种输入操作的按钮和按键,并且操作单元105经由操作单元i/f106而与系统总线108连接。
网络i/f107是用于经由lan120相对于包括主机pc130的外部装置发送和接收各种类型的数据和信息的接口。这些单元各自连接至系统总线108。
图像总线i/f109是用于连接系统总线108和用于以高速传输图像数据的图像总线110的接口,并且图像总线i/f109是用于转换数据结构的总线桥。rip(光栅图像处理器)111和打印机单元连接至图像总线110。
rip111包括多个处理器、存储器、解压缩处理电路等,并且基于来自cpu101的指示来将作为从pdl数据生成的中间数据的dl(显示列表)转换成光栅格式的图像数据(位图图像数据)。打印机单元112经由装置i/f113来接收rip111所生成的位图图像数据,并且将图像形成并输出在诸如纸张等的打印介质上。在本说明书中,“绘制”意味着通过作为中间数据的dl来生成光栅格式的图像数据,并且与光栅化相同。
图2a是示出与图像处理设备100的打印处理有关的软件结构的框图,并且图像处理设备100包括pdl数据分析模块201、中间数据生成模块202和绘制模块203。
pdl数据分析模块201对从主机pc130输入的打印作业中所包括的pdl数据进行分析,并且获取页面信息和页面信息中所包括的对象信息。将所获取到的页面信息和对象信息发送至中间数据生成模块202。
中间数据生成模块202基于从pdl数据分析模块201接收到的页面信息和对象信息来生成包括对象描绘命令等的中间数据(dl)。将所生成的中间数据发送至绘制模块203。
绘制模块203基于所生成的中间数据针对各带并行进行绘制,并且以页为单位生成位图图像数据。图2b是示出根据本实施例的rip111的硬件结构示例的图,这使得能够通过绘制模块203来针对各带进行并行绘制。rip111包括第一绘制处理单元211、第二绘制处理单元212以及被配置为基于来自第一绘制处理单元211的解压缩指令来对中间数据中所包括的压缩图像进行解压缩的解压缩处理单元213。将被解压缩处理单元213解压缩后的图像数据存储在解压缩图像存储用存储器220中。此外,解压缩处理单元213在其内部具有寄存器(未示意性示出),并且在内部寄存器中存储所接收到的解压缩指令中的完成了解压缩处理的解压缩指令的数量(被解压缩的压缩图像的数量)。每当完成了针对一页的处理时,将内部寄存器中所存储的数值初始化为“0”。在本实施例中,假定如下结构:通过cpu102根据预定程序使用ram102来实现pdl数据分析模块201和中间数据生成模块202。然而,还可以在rip111内的封闭结构中进行直到对pdl数据进行分析并且生成位图图像数据为止的所有处理。此外,在本实施例中,假定将先前说明的ram102用作解压缩图像存储用存储器220,但是还可以设置与ram102分离的用于解压缩图像存储的专用存储器。
术语的说明
这里,综述本实施例的绘制处理中出现的“边缘”、“扫描行”、“跨距”、“级别”、“填充”以及“带”的各术语。
边缘(edge)指页面内存在的对象之间的边界或者对象和背景之间的边界。即,边缘是对象的轮廓。
扫描行(scanline)是在图像形成处理中对存储器内的图像数据进行连续扫描的主扫描方向。扫描行的高度是一个像素。
跨距(span)指单个扫描行中的边缘之间的区间。该区间还被称为闭合区域。
级别(level)是表示页面内要进行描绘的对象之间的深度的位置关系的信息,并且无例外地向各对象分配不同的级别号。级别还被称为z顺序,并且表示对象沿着从页面的背面侧向页面的正面侧的方向(在页面的描绘范围在xy平面上展现的情况下与xy平面垂直的方向:z轴方向)的排列顺序。
填充(fill)是针对跨距的填充信息,并且存在针对诸如位图图像数据和阴影等的各像素而具有不同颜色值的填充,或者存在颜色值在诸如实体填充等的跨距内不变的填充。因此,针对一个跨距(闭合区域),存在与跨距有关的对象数量相对应的数量的级别,并且存在与级别数相对应的数量的不同填充。此外,在位图图像数据被指定为填充的情况下,将位图图像数据预先存储在ram102中。在pdl数据包括压缩图像的情况下,在rip111参考作为填充之前,将解压缩后的位图图像数据存储在ram102上的预定位置处。
带(band)指多个扫描行的束。
随后,说明直到从打印作业生成位图图像数据为止的处理的大致流程。图3是示出直到从打印作业生成位图图像数据为止的流程的流程图。以下,在假定从主机pc130发送包括具有如图4所示的图像(照片)属性的对象401~403的压缩图像的页面的打印作业的情况下给出说明。在本实施例的情况下,为了并行进行后述的步骤s303中的绘制处理,没有预先进行对打印作业的数据的分割。
在步骤301中,pdl数据分析模块201对从主机pc130接收到的打印作业内的与图4中的页面相对应的pdl数据进行分析。图5示出与图4中的页面相对应的打印作业。
打印作业500包括用于指示打印作业的开始的作业开始命令510、用于指定要打印的图像的pdl数据520、以及用于指示打印作业的结束的作业结束命令530。作业开始命令510包括用以设置pdl数据520的打印处理时的分辨率的打印分辨率信息、用以指定单面/双面打印的打印面指定信息、用以指定薄片进给盒的薄片进给盒选择命令、以及用于指示pdl数据520的类型的pdl标识符。尽管为了简要而在本实施例中省略了,但是作业开始命令510还包括用以指定装订薄片的页边空白位置的命令和用以选择薄片排出口的命令等。此外,除了上述打印环境以外,作业开始命令510还可以包括能够由操作单元105设置的各种命令。pdl数据520总共包括六个命令:pdl数据开始命令521、图像描绘命令522~524、页面进给命令525和pdl数据结束命令526。pdl数据开始命令521指示pdl数据520的开始,并且包括用以选择各页面的薄片尺寸的薄片尺寸选择命令、用以指定在描绘命令中所使用的单位的单位指定命令、以及用以指示描绘命令有效的区域的描绘区域设置命令。图像描绘命令522是与图4的页面中的对象403相对应的描绘命令,并且包括描绘位置、对象的宽度和高度、压缩格式、压缩图像的数据大小以及压缩图像数据。这里,描绘位置意味着采用页面的左上角作为原点(0,0)的情况下描绘目标对象的开始点的坐标(与后述的描绘开始坐标相同)。同样地,图像描绘命令523是与对象402相对应的描绘命令。此外,图像描绘命令524是与对象401相对应的描绘命令。页面进给命令525是用以指示随后的描绘命令是针对下一页面的命令。然后,pdl数据结束命令526是用以表示pdl数据的结束的命令。
将说明返回至图3的流程。
在步骤302中,中间数据生成模块202基于与分析后的pdl数据有关的信息来生成位图图像数据生成所需的中间数据(dl)。对于中间数据的生成,可以应用公知技术。图6示出与图5所示的打印作业500的pdl数据520相对应的中间数据。图6所示的中间数据600总共包括9个命令:描绘帧设置命令601、描绘区域设置命令602、压缩图像解压缩命令603、604和607、描绘命令605、606和608以及页面结束命令609。在图4的页面的示例中,作为图像描绘命令524的中间数据,生成压缩图像解压缩命令603和描绘命令605。同样地,作为图像描绘命令523的中间数据,生成压缩图像解压缩命令604和描绘命令606。此外,作为图像描绘命令522的中间数据,生成压缩图像解压缩命令607和描绘命令608。此外,在该步骤中,在生成中间数据的情况下,通过参考pdl数据520中所包括的图像描绘命令的描绘位置,来对与各图像描绘命令相对应的中间数据的描绘命令进行排序。具体地,首先对中间数据中所包括的描绘命令的描绘开始坐标进行排序,以使得按升序顺序排列y坐标,然后对描绘开始坐标的y坐标相同的描绘命令进行排序,以使得按升序顺序排列x坐标。此外,在该排序处理中,在描绘命令是针对压缩图像的描绘命令的情况下,在紧挨着该描绘命令之前插入对应的压缩图像解压缩命令。在紧挨着该描绘命令之前插入压缩图像解压缩命令的原因在于:通过使压缩图像的解压缩进入待机状态直到紧挨着描绘命令的执行之前为止,来尽可能地节省用于存储解压缩后的图像数据的ram102。针对排序后的描绘命令的描绘开始坐标中的y坐标相同的压缩图像的描绘命令,在多个描绘命令之前分别插入多个对应压缩图像解压缩命令。通过如上所述对中间数据中所包括的描绘命令进行排序,可以在绘制处理中从页面的开始点(即,x坐标和y坐标均为“0”的原点)起按照像素的顺序来进行绘制(还称为扫描行绘制)。
在图6所示的中间数据600中,描绘帧设置命令601是用以指定颜色空间和灰度的命令。描绘区域设置命令602是用以指定页面图像的宽度和高度的命令。压缩图像解压缩命令603是对与dpl数据500中的图像描绘命令524相对应的压缩图像的解压缩命令。在压缩图像解压缩命令603中,说明了图像描绘命令524中所包括的压缩图像数据的参考目的地的起始地址、用于解压缩处理的量化表的参考目的地的起始地址、以及与存储解压缩后的图像数据所需的数据大小有关的信息。基于颜色空间以及图像的宽度和高度来计算存储图像数据所需的数据大小。压缩图像解压缩命令604是与同样生成的图像描绘命令523相对应的压缩图像的解压缩命令。此外,压缩图像解压缩命令607是与图像描绘命令522相对应的压缩图像的解压缩命令。描绘命令605指示根据压缩图像解压缩命令603所解压缩出的图像的描绘命令,并且包括描绘开始坐标、路径点列(指示描绘区域的各顶点坐标)以及用以指示是否进行级别(颜色)合成处理的信息。在本实施例中,在描绘命令605的描绘区域内,仅描绘一个图像,并且不会发生与位于背面或者正面的图像的合成,因此“不进行”级别合成。描绘命令606是对同样生成的压缩图像解压缩命令604所解压缩的图像的描绘命令。此外,描绘命令608是对同样生成的压缩图像解压缩命令607所解压缩出的图像的描绘命令。此外,页面结束命令609是用以指示页面的结束的命令。如上所述,通过对通过按照扫描行上的出现顺序分析pdl数据所获取到的对象信息进行排序,来生成中间数据。因此。图5所示的pdl数据500的描绘命令的顺序与图6所示的中间数据600的描绘命令的顺序有所不同。也就是说,在pdl数据500中,与对象403相对应的描绘命令522首先到来。但是在图6所示的中间数据600中,离原点(0,0)最近的对象401的描绘命令605首先到来。
此外,生成中间数据,以使得在描绘命令的处理的完成时,清除针对描绘命令的处理所参考的、针对rip111的压缩图像解压缩所确保的作为解压缩图像存储用存储器220的ram102内的区域。也就是说,在图6的中间数据600中,确定各命令的顺序,以使得压缩图像解压缩命令603和604在描绘命令605和606之前到来,并且压缩图像解压缩命令607在描绘命令608之前到来。由此,rip111可以参考在描绘命令605、606和608的处理时点所需的解压缩后的图像,并且可以在描绘命令605和606的处理完成并且压缩图像解压缩命令603和604的解压缩结果的丢弃之后对压缩图像解压缩命令607进行处理。
说明返回至图3的流程。
在步骤303中,绘制模块203通过使用图2b中的各处理单元211~213、基于在步骤302中所生成的中间数据来进行以带为单位的并行绘制,并生成位图图像数据。将在另一部分中再次说明作为本实施例的特征的带并行绘制处理。
以上是直到从打印作业生成位图图像数据为止的大致流程。
带并行绘制处理
以下,将详细说明通过使第一绘制处理单元211和第二绘制处理单元212相互协作来进行以带为单位的并行绘制的方法。以下,假定一个带是1024个扫描行的集合,并且位于页面的最上部的带是第一带。图7是说明用于基于图6的中间数据针对各带并行进行绘制处理的处理的图。绘制模块203基于图6中的中间数据、按照从页面的顶部起的顺序以扫描行为单位生成位图图像。此时,将页面分割成预定带区域(这里为1024个扫描行的束),并且通过第一绘制处理单元211针对奇数带区域生成位图图像且通过第二绘制处理单元212针对偶数带区域生成位图图像。这样,第一绘制处理单元211和第二绘制处理单元212在对页面整体的中间数据进行分析的同时并行工作,并且分别进行所分配的带区域的绘制。
第一绘制处理
首先,将说明第一绘制处理单元211负责的第一带(这里为奇数带)的绘制处理(第一绘制处理)。图8是示出根据本实施例的第一绘制处理的流程的流程图。
在步骤801中,第一绘制处理单元211读取在步骤302中所生成的中间数据中所包括的一个命令。读取中间数据中所包括的哪一个命令是由指示器来管理的,并且按照形成初始命令的顺序来读取这些命令。在指示器所指示的命令的读取完成时,指示器移动至下一命令。这样,可以顺次读取中间数据中所包括的命令。
在步骤802中,第一绘制处理单元211判断步骤801中所读取的命令是否为页面结束命令。在所读取的命令不是页面结束命令的情况下,处理进入步骤s803。另一方面,在是页面结束命令的情况下,终止本处理。
在步骤803中,第一绘制处理单元211判断命令是否为用以指定对象的描绘的描绘命令。在所读取的命令不是描绘命令的情况下,处理进入步骤804。另一方面,在是描绘命令的情况下,处理进入步骤807。
在步骤804中,第一绘制处理单元211判断在步骤s801中所读取的命令是否为压缩图像解压缩命令。在所读取的命令是压缩图像解压缩命令的情况下,处理进入步骤805。另一方面,在所读取的命令不是压缩图像解压缩命令的情况下,处理进入步骤s811。
在步骤805中,第一绘制处理单元211对所读取的压缩图像解压缩命令的数量(解压缩指令的数量)进行计数。每当读取解压缩命令时,向解压缩处理单元213给出用以对压缩图像进行解压缩的指令。因此,此时,第一绘制处理单元211与被配置为对向解压缩处理单元213发出的解压缩指令的数量进行计数的计数单元相对应。计数值的初始值是“0”,并且在图6的中间数据的情况下,在读取与对象403相对应的压缩图像解压缩命令607的时点,计数值是“3”。在读取页面结束命令时对该计数值进行重置,并且恢复成初始值“0”。也就是说,针对各页面而不是针对各带将计数后的压缩图像解压缩命令的数量重置。
在步骤806中,第一绘制处理单元211向解压缩处理单元213给出用以对与所读取的压缩图像解压缩命令有关的压缩图像进行解压缩的指令。当接收到该指令时,解压缩处理单元213对目标压缩图像进行解压缩,并且将解压缩后的图像展开至作为解压缩图像存储用存储器220的ram102上。在压缩图像的解压缩处理完成时,解压缩处理单元213将已经完成了处理的解压缩指令的数量存储在内部寄存器中。内部寄存器的初始值是“0”,并且在该流程终止时对计数值进行重置并再次恢复成“0”。在通过第一绘制处理单元211给出用以对压缩图像进行解压缩的指令之后,处理返回至步骤801。
在步骤807中,第一绘制处理单元211通过在步骤801中所读取的描绘命令来推导要描绘的对象在描绘对象的扫描行上的坐标(x坐标)。例如,在图7中的对象401的情况下,推导形成对象401的轮廓的矩形的左端和右端这两者的x坐标。在后述的边缘排序处理(步骤901)中使用与这里所推导的边缘有关的坐标信息。在该步骤中,针对一个对象,还推导属于其它邻接带(这里为偶数带)的部分的边缘坐标。原因在于:对于特定扫描行上的边缘坐标的推导,使用该特定扫描行之前的一个扫描行上的边缘坐标。例如,在每当扫描行前进一行时特定边缘的坐标仅移动δx的情况下,可以通过将δx与紧挨在该特定边缘之前的边缘的坐标相加来容易地求出推导目标边缘的坐标。针对随后的扫描行处理,对如上所述那样完成了边缘坐标的推导的描绘命令进行假脱机(spool)。
在步骤808中,第一绘制处理单元211判断在步骤807中假脱机的描绘命令之后的命令(下一要读取的命令)是否为基于指示器的描绘命令。原因是为了针对位于y坐标方向上的彼此接近的多个对象,一起进行后述的扫描行处理。在下一读取目标命令是描绘命令的情况下,处理进入步骤809。另一方面,在下一读取目标命令是描绘命令以外的命令的情况下,处理进入步骤810。
在步骤809中,第一绘制处理单元211判断在当前时点假脱机的全部描绘命令的描绘范围在y坐标方向(副扫描方向)上是否与下一读取目标描绘命令的描绘范围重叠。在这种情况下,在当前时点假脱机的全部描绘命令包括最近在步骤807中假脱机的描绘命令。下一读取目标描绘命令仅是针对判断所参考的,并不是实际读取出的。在该判断中,确认当前假脱机的描绘命令之一的描绘范围的开始y坐标和结束y坐标之间的范围和下一读取目标描绘命令的描绘范围的开始y坐标和结束y坐标之间的范围之间是否存在重叠。在判断结果表示存在重叠的情况下,处理返回至步骤801,然后进一步确认与其它对象是否存在重叠。另一方面,在不存在重叠的情况下,处理进入步骤810,然后进行对在当前时点假脱机的描绘命令的绘制范围的扫描行处理。
这里,通过采用图6的中间数据的情况作为示例来说明直到确定执行扫描行处理为止的实际流程。首先,读取两个对象401和402的压缩图像解压缩命令603和604,并且给出用以对对应的两个压缩图像进行解压缩的指令(s801~s805)。随后,读取对象401的描绘命令605并推导其边缘坐标,并且对描绘命令605进行假脱机(s807)。由于下一读取目标命令是对象402的描绘命令606,因此确认描绘范围在y坐标方向上是否存在重叠,并且判断为存在重叠(s809中为“是”)。然后,读取对象402的描绘命令606(s801)并推导其边缘坐标,并且对描绘命令606进行假脱机(s807)。在该时点,下一读取目标命令是对象403的压缩图像解压缩命令607,因此步骤808中的判断结果表示“除描绘命令以外的命令”,并且一起进行两个描绘命令605和606的扫描行处理。这里,假定在描绘命令606和压缩图像解压缩命令607之间存在y坐标方向上与对象401和402重叠的具有例如图形属性的对象的描绘命令α。在这种情况下,在对描绘命令606进行假脱机的时点,下一读取目标命令是图形对象的描绘命令α,并且进一步地,确认描绘范围在y坐标方向上是否存在重叠并判断为存在重叠(s809中为“是”)。作为其结果,读取图形对象的描绘命令α(s801),并且一起进行这三个对象的扫描行处理。
在步骤810中,第一绘制处理单元211针对与在当前时点假脱机的描绘命令相对应的描绘范围进行扫描行处理。这里,生成了奇数带(在图7的示例中为第一带、第三带和第五带)的区域的位图图像数据。稍后将说明扫描行处理的详情。
在步骤811中,第一绘制处理单元211进行基于除了描绘命令和压缩图像解压缩命令以外的命令(描绘帧设置命令和描绘区域设置命令等)的处理。例如,基于描绘帧设置命令601来进行对处理目标页面的色调级别数的设置。从图6中的中间数据可以看出,描绘帧设置命令和描绘区域设置命令是在绘制处理的第一阶段进行的。
在步骤812中,第一绘制处理单元211判断是否针对中间数据内的全部命令完成了处理。在存在未处理的命令的情况下,处理返回至步骤801,并且读取下一命令。存在未处理的命令意味着剩余了除页面结束命令以外的命令。
以上是第一绘制处理单元211负责的奇数带区域的第一绘制处理的内容。可以存在第一绘制处理单元负责偶数带的结构。
扫描行处理
随后,说明上述步骤810中的扫描行处理的详情。按从具有与在y坐标方向上聚集的两个或更多对象的假脱机描绘命令相对应的描绘范围内的开始y坐标的扫描行起的顺序,针对各扫描行进行该处理。以下,将作为在描绘范围内的扫描行的处理目标的扫描行称为“关注扫描行”。图9是示出扫描行处理的详情的流程图。以下,根据图9的流程来给出说明。
在步骤901中,从与假脱机描绘命令相对应的描绘范围内的扫描行确定关注扫描行。在紧接着处理开始之后的阶段,如上所述将具有开始y坐标的扫描行确定为关注扫描行。
在步骤902中,针对关注扫描行进行边缘排序处理。具体地,首先,指定出现在关注扫描行上的一个或多个对象。然后,从先前说明的步骤807中所推导的边缘坐标中,针对指定的对象获取与关注扫描行有关的边缘坐标,并且按照x坐标的升序顺序重新排列所指定的对象。通过该重新排列,可以按照x坐标的升序顺序生来成位图图像数据的像素值。
在步骤903中,针对关注扫描行进行级别排序处理。具体地,进一步指定影响按照步骤902中的顺序排列的边缘(跨距)之间的像素的颜色的对象,并有还按照级别的顺序来重新排列所指定的对象。
在步骤904中,判断是否针对被指示要解压缩的全部压缩图像完成了解压缩处理。具体地,将先前所述的步骤805中所获得的解压缩指令的数量(计数值)与解压缩处理单元213的内部寄存器的计数值(完成了解压缩处理的图像的数量)相比较。在解压缩处理单元213的内部寄存器的计数值小于解压缩指令的数量的计数值的情况下,(例如,以固定间隔)重复比较直到这两个计数值变得相等为止。代替以固定间隔进行比较,还可以例如每当完成了针对一个压缩图像的解压缩处理时进行比较。在诸如此的比较结果表示这两个计数值相等的情况下,处理进入步骤905。在先前所述的两个描绘命令605和606的扫描行处理的情况下,在步骤805中所读取的压缩图像解压缩命令的数量是2,因此,在内部寄存器的计数值(完成了解压缩处理的图像的数量)变成“2”的阶段,处理进入步骤905。
在步骤905中,判断关注扫描行是否包括在处理目标带(这里为奇数带)中。在关注扫描行包括在处理目标带中的情况下,处理进入步骤906。另一方面,在关注扫描行包括在非处理目标带(这里为偶数带)中的情况下,处理进入步骤907。
在步骤906中,针对关注扫描行,进行用以生成位图图像数据的像素值的填充处理。在描绘目标对象是压缩图像的照片对象的本实施例的情况下,读取展开到解压缩图像存储用存储器220上的解压缩后的图像的数据,并且基于根据级别排序的对象针对各跨距生成像素值。将所生成的像素作为处理目标页面的位图图像数据的像素值而存储在ram102中。
在步骤907中,判断是否完成了针对与假脱机描绘命令相对应的描绘范围内的扫描行的处理。在存在未处理的扫描行的情况下,处理返回至步骤901,并且通过确定下一关注扫描行来继续该处理。另一方面,在完成了该处理的情况下,处理进入步骤908并丢弃假脱机描绘命令,并且结束本处理。
这里,通过采用图7中的第三带的扫描行处理作为示例来给出具体说明。图10是示出将图像数据存储在作为解压缩图像存储用存储器220的ram102内的方式的图。在图10中,区域1010是为了存储压缩图像解压缩命令603所解压缩出的图像数据而确保的区域,并且区域1020是为了存储压缩图像解压缩命令604所解压缩出的图像数据而确保的区域。如上所述,在ram102内连续确保这两个区域。还在后述的第二绘制处理中参考区域1010,并且读取需要的图像数据。第一绘制处理单元211基于描绘命令605和606从ram102读取完成了压缩图像解压缩命令603和604的解压缩的图像数据。此时,通过第一绘制处理单元211所读取的图像数据仅是在第三带的区域内存在的图像数据。现在,在第三带中,存在两个对象:对像401和对象402。例如,在对象401的情况下,首先,根据描绘命令605中所包括的开始坐标以及通过路径点列所展现的矩形区域的宽度和高度,来计算第三带的区域内的图像数据大小。这里,对象401的宽度是2304-256=2048个像素,并且与对象401的整体的1/4相对应的高度是3072(1024×3)-2816=256个像素。然后,由于存在rgb的三个通道,因此第三带的区域内的对象401的图像数据大小将是2048×256×3=1572864个字节(灰度8位:0x180000)。然后,通过将所计算出的上述图像数据大小与解压缩后的图像的起始地址相加所获得的值(0x02000000+0x18000=0x02180000)是对象401的第四带的起始地址。在第一绘制处理中,使用直到对象401的第三带的末尾像素的像素。因此,在第一绘制处理中,省去了0x02180000和对象401的随后地址的读取。通过从第四带的起始地址减去1个像素(3个字节)(即,(0x02180000)-1个像素(3个字节)=0x217fffd)来获得对象401的第三带的末尾像素的地址。通过从第四带的起始地址减去1个字节(即,(0x02180000)-1个字节=0x217ffff),来获得第一绘制处理中所使用的数据的末尾地址。如上所述,在本实施例中,可以通过省去一部分图像数据的读取来降低处理成本。针对对象402,同样进行诸如此的处理的序列。作为其结果,读取与作为处理目标带的第三带中所包括的对象401和402的上部四分之一相对应的部分图像1031和1032的图像数据。然后,第一绘制处理单元211针对所读取的部分图像数据进行填充处理。将与通过填充处理所生成的部分图像1031和1032相对应的部分的像素值存储在ram102中。最终的位图图像数据包括通过第一绘制处理所生成的像素值和通过后述的第二绘制处理所生成的像素值。也就是说,通过根据本实施例的带并行绘制处理所获得的针对各页面的位图图像数据的像素值是分别通过这两个绘制处理单元所生成的像素值的集合。
以上是第一绘制处理单元211的扫描行处理的内容。
第二绘制处理
接着,说明第二绘制处理单元212负责的第二带(这里为偶数带)的绘制处理(第二绘制处理)。图11是示出根据本实施例的第二绘制处理的流程的流程图。除了处理目标带是偶数带以外,该流程图的内容与示出第一绘制处理的图8的流程图的内容基本相同。主要差异在于:在第二绘制处理中,在读取压缩图像解压缩命令的情况下,仅对解压缩指令的数量进行计数,并且不向解压缩处理单元213给出基于压缩图像解压缩命令的解压缩指令。以下,根据图11的流程图,主要说明第二绘制处理的特征部分。
步骤1101~1105与先前所述的图8的流程中的步骤801~805相对应。在步骤1101中所读取的中间数据与第一绘制处理单元211所读取的中间数据相同。如上所述,该流程的内容同样是对所读取的压缩图像解压缩命令的数量(解压缩指令的数量)进行计数(s1105),但是之后,不向解压缩处理单元213给出解压缩指令,并且处理返回至步骤1101。
步骤s1106~1111与先前所述的图8的流程中的步骤s807~812相对应。在步骤1109中的扫描行处理的内容同样与先前所述的图9的流程所示的内容相同,但是第二绘制处理与第一绘制处理的不同之处在于处理目标带是偶数带。也就是说,通过图9的流程中的关注扫描行是否包括在处理目标带中的判断(s905),判断该带是否为偶数带,并且针对偶数带的带区域进行填充处理(s906)。
这里,通过再次使用图10,说明图7的第四带的扫描行处理。第二绘制处理单元212同样基于描绘命令605和606从ram102中读取完成了利用压缩图像解压缩命令603和604的解压缩的图像数据。此时,第二绘制处理单元212所读取的图像数据仅是在第四带的区域内存在的图像数据。也就是说,读取与作为处理目标带的第四带中所包括的对象401和402的下部四分之三相对应的部分图像1033和1034的图像数据。
部分图像1033和1034的读取是通过直接访问与目标图像数据的第四带相对应的部分的数据地址而进行的。数据地址的计算方法与第一绘制处理相同,并且数据地址是通过图像数据的数据大小、起始地址和带区域等而计算出的。
例如,从0x02180000读取第四带的区域内存在的对象401的图像数据。从对象401的路径点列(2304,3840),知道对象401的末尾像素存在于第四带的区域内。由此,在第二绘制处理,足够读取对象401从0x02180000到末尾地址的图像数据。对象的图像数据的末尾地址是0x025fffff,并且对象401的末尾像素的地址是0x025ffffd。
因此,在第二绘制处理中,省去了对象401的0x02180000之前的地址的读取。这被称为地址跳跃。如上所述,在本实施例中,可以通过省去一部分图像数据的读取来降低处理成本。针对对象402,同样进行诸如此的处理的序列。
然后,第二绘制处理单元212针对所读取的部分图像数据,进行填充处理。将与通过填充处理所生成的部分图像1033和1034相对应的部分的像素值存储在ram102中。
以上是第二绘制处理单元212中的扫描行处理的内容。
在本实施例中,说明了存在两个绘制处理单元的情况。然而,绘制处理单元的数量仅需要是两个或更多,并且不限于两个。例如,在存在三个绘制处理单元的情况下,这些绘制处理单元之一向解压缩处理单元给出用以对压缩图像进行解压缩的指令,并且其它绘制处理单元参考解压缩后的图像中的需要部分并进行绘制处理。也就是说,仅需要设计各绘制处理单元以共享方式使用一个解压缩后的图像的结构。
根据本实施例,多个绘制处理单元各自读取共同的中间数据,并在以共享方式使用各绘制处理单元分别负责的跨带区域的压缩图像的解压缩结果的同时进行带并行绘制处理。由此,即使针对pdl数据内的以跨带区域的方式存在的压缩图像,也使得能够在无需在pdl数据的分析阶段和中间数据的生成阶段预先对压缩图像进行解压缩并且无需以使各分割后的图像包括在各带区域内的方式将图像分割成多个图像的情况下进行并行处理。由此,即使在pdl数据内的以跨过带边界的方式存在压缩图像的情况下,也可以抑制绘制的开始的延迟。
第二实施例
在第一实施例中,说明了如下方面:并行工作的多个绘制处理单元之一给出用以对压缩图像进行解压缩的指令,并且其它绘制处理单元同样使用通过该解压缩指令而解压缩出的图像。接着,将如下方面说明为第二实施例:并行工作的多个绘制处理单元各自具有解压缩处理单元和解压缩图像存储用存储器。基本的设备结构和处理流程与第一实施例相同,因此以下将说明不同点。
图12是示出根据本实施例的rip111的硬件结构示例的图。本实施例的rip111具有第一绘制处理单元211'和第二绘制处理单元212',并且还具有与各绘制处理单元相对应的第一解压缩处理单元1201和第二解压缩处理单元1202。此外,与各解压缩处理单元相对应地设置第一解压缩图像存储用存储器1211和第二解压缩图像存储用存储器1212,并且在被各解压缩处理单元解压缩之后的图像数据分别存储在第一解压缩图像存储用存储器1211和第二解压缩图像存储用存储器1212中。
然后,在本实施例的情况下,第一绘制处理单元211'和第二绘制处理单元212'这两者进行先前所述的图8所示的流程(即,包括向解压缩处理单元给出解压缩指令的步骤的流程)。最终的位图图像数据包括第一绘制处理单元211'生成的像素值和由第二绘制处理单元212'生成的像素值。也就是说,针对通过根据本实施例的带并行绘制处理所获得的各页面的位图图像数据的像素值也是分别由两个绘制处理单元生成的像素值的集合。
在本实施例的情况下,绘制处理单元的数量仅需要是两个或更多,并且不限于两个。例如,在存在三个绘制处理单元的情况下,各绘制处理单元通过使用与各绘制处理单元相对应地设置的解压缩处理单元来进行与各绘制处理单元自身负责的带区域有关的压缩图像的解压缩处理。然后,各绘制处理单元参考各解压缩后的图像的所需部分,并进行绘制处理。也就是说,仅需要设计各绘制处理单元分别生成并使用针对各绘制单元自身的解压缩后的图像的结构。
根据本实施例,并行工作的各绘制处理单元向对应的解压缩处理单元给出解压缩指令,并且分别生成解压缩后的图像。由此,各绘制处理单元不再需要依赖于其它绘制处理单元,因此,使得能够快速地进行处理。
变形例
在第一实施例中,说明了如下方面:在中间数据内包括压缩图像和用以对压缩图像进行解压缩的指令。然而,在中间数据内所包括的图像可以是非压缩图像。非压缩图像与压缩图像的不同之处在于:在无需进行解压缩处理的情况下将该非压缩图像用于描绘命令。通过使用压缩格式(bitmap)、数据大小、数据起始地址和图像id来管理非压缩图像。在非压缩图像的情况下,可以如针对地址跳跃处理那样使用数据起始地址。
其它实施例
本发明的实施例还可以通过如下的方法来实现,即,通过网络或者各种存储介质将执行上述实施例的功能的软件(程序)提供给系统或装置,该系统或装置的计算机或是中央处理单元(cpu)、微处理单元(mpu)读出并执行程序的方法。
根据本发明,即使在打印数据的页面内以跨过带边界的方式包括图像数据的情况下,也可以抑制页面的绘制的开始的延迟。
尽管已经参考典型实施例说明了本发明,但是应该理解,本发明不局限于所公开的典型实施例。所附权利要求书的范围符合最宽的解释,以包含所有这类修改、等同结构和功能。