一种透明页面的光栅化处理方法及装置
技术领域
本发明涉及光栅图像处理技术,特别是指一种透明页面的光栅化处理方法及装置。
背景技术
PDF是Portable Document Format的缩写,PDF是一种用来描述页面内容的电子文档格式。目前,国外绝大多数文字、图形和图像处理软件的页面都已广泛使用PDF文件格式进行描述,国外的电子书大部分也是使用PDF文件格式;在国内,排版软件也开始由PostScript格式逐渐过渡到PDF文件格式。
PDF文件格式自推出到现在已经历了多个版本的更新,其中最重要的更新是PDF 1.4版本。在PDF 1.4版本之前,PDF规范使用的成像模型是取代模型,即当一个文字、图形或图像等图元放入页面时,总是使用当前颜色值取代与图元相对应的页面背景;而从PDF 1.4版本开始,PDF规范引入了透明成像模型,即当一个文字、图形或图像等图元放入页面时,不是简单地使用当前颜色值取代对应于图元的页面背景,而是要与对应于图元的页面背景进行混色运算,经过混色运算后得到的颜色值成为新的页面背景的颜色值。通过引入透明概念,极大地丰富了PDF页面的描述能力,如PDF页面能够支持各种透明、阴影、羽化等特殊效果。目前,PDF的最新版本为PDF 1.6,其页面描述能力已经远远超出先前推出并在业界成为事实上标准的页面描述语言PostScript。
根据PDF规范,在透明混色运算过程中,涉及到的相关参数除了与图元相对应的背景颜色、图元颜色即前景颜色外,还包括图元的贡献度参数即前景Alpha参数、背景的贡献度参数即背景Alpha参数等。当计算一个透明组(Transparency Group)时,与透明运算相关的参数除了以上提到的参数外,还会涉及透明组的形状参数即Shape参数,透明组初始背景的颜色值和初始背景的贡献度参数即初始背景的Alpha参数。以上涉及的这些与透明混色运算相关的参数都是基于像素级的,即对于不同像素而言,这些参数的取值可能是不一样的,这就需要针对所有像素逐个进行计算和存储,并且所有像素级的透明混色运算必须是至少基于8位深度的。位深度也称为像素深度或颜色深度,用于度量在显示或打印图像中的每个像素时可以使用多少颜色信息。较大的位深度、即每像素信息的位数更多,意味着数字图像具有较多的可用颜色和较精确的颜色表示。例如,位深度为1的像素有两个可能的值:黑色和白色;而位深度为8的像素有256个可能的值。这样,位深度越大,数据量越大。由此不难看出,透明混色运算是非常复杂而费时的,运算过程中也需要消耗大量的内存。当一个页面中使用了大量的透明组,而且透明组内部又嵌套定义透明组时,透明混色运算将更加复杂,内存开销更大,进行光栅化处理的效率也将更低。
为了支持PDF 1.4版本中定义的透明,各种PDF光栅化应用软件和设备,例如,用于显示PDF文件内容的阅读器、PDF光栅图像处理器等,通常采用完全基于点阵的分段光栅化处理方法。首先对PDF页面进行扫描,通过判断扫描文件中是否含有透明参数来判断PDF页面是否含有透明对象,如果是,则根据透明模型对含有透明对象的页面的每一个像素进行透明混色运算,得到最终的8位页面点阵,否则,根据传统的取代模型对不含透明对象的页面进行分段光栅化。由于进行光栅化处理时是以整个页面为单位的,对于含有透明对象的页面,其数据处理量是非常大的,使得这种方法的光栅化效率非常低。
一种改进的方法是将含有透明对象的页面进行分段光栅化处理,对于不含透明对象的页面段,根据传统的取代模型生成8位深度的页面段点阵;对于含有透明对象的页面段,采取完全基于点阵的方法进行透明混色运算,生成最终的8位深度页面段点阵。将页面划分为含有透明对象的透明页面段和不含透明对象的非透明页面段,这种以页面段为单位进行光栅化处理的优化方法,与以整个页面为单位进行光栅化处理的方法相比有一定改进,由于根据取代模型光栅化非透明页面段比根据透明模型光栅化透明页面段速度要快得多,因此,对于透明对象只集中在若干个页面段的透明页面,光栅化效率能够得到较大提高。页面段是沿页面横向划分得到的。透明页面是指含有透明对象的页面。透明对象是指具有透明属性的对象。
但是,优化方法的局限性也是显而易见的,当页面中含有纵向贯穿整个页面的透明对象时,由于此时的页面段已经延展至整个页面,此时,进行光栅化处理时,仍然需要针对整个页面根据透明模型对所有像素进行透明混色运算,优化方法的优越性也就无从显现了。另一方面,在光栅化处理过程中,除了需要存储所有色版的页面段灰度点阵外,还需要额外存储页面段内部每一个像素的Shape参数和Alpha参数,所有这些参数都必须使用8位的点阵来表示才能进行透明混色计算,因此,分段光栅化处理的方法,内存开销是非常庞大的。对于高分辨率的光栅化输出设备,这几块页面点阵的数据量是非常庞大的,例如,一个A3幅面的PDF页面在输出分辨率为2400点每英寸(DPI)的照排设备上输出,青版(Cyan)、品红版(Magenta)、黄版(Yellow)、黑版(Black)等四个色版加上Shape参数和Alpha参数共6块页面点阵的数据量高达6G字节,这样,对每页的页面点阵缓冲区光进行一次清零操作就会占去相当比例的光栅化处理时间。虽然通过分段进行光栅化处理的方法,不再需要缓冲全部的页面点阵,但分段多了,需要跨段处理的图元数量就会相应增加,从而直接影响光栅化效率。
综上所述,现有的基于点阵的光栅化处理方法,数据处理量非常大,使得内存开销巨大,进行光栅化处理的效率非常低。
发明内容
有鉴于此,本发明提供一种透明页面的光栅化处理方法及装置,提高进行光栅化处理的效率。
本发明提供的透明页面的光栅化处理方法包括以下步骤:
A、对透明页面的页面描述文件进行语法解释,划分页面块,将所产生的图元对象信息和透明参数写入中间文件;
B、从中间文件中逐个读取图元对象和透明参数,分块组装页面点阵。
步骤A中所述划分页面块,为:根据透明参数将页面划分为多个包含透明对象或非透明对象的页面块;或将页面划分为多个大小相同的页面块。
所述大小相同的页面块的大小为:宽度为32、16、8个像素,高度为32、16、8个像素。
将页面划分多个大小相同的页面块时,所述页面块的属性信息包括:页面块类型、灰度值及对应于页面块点阵的索引信息。
步骤A中所述划分页面块,为:确定当前图元是否具有透明属性,如果当前图元具有透明属性,则当前图元对应的外接矩形所对应的所有页面块为透明页面块;如果与页面块相交的所有图元都不具有透明属性,则该页面块为非透明页面块。
步骤B中所述分块组装页面点阵,为:根据透明模型对透明页面块进行光栅化处理组装页面点阵,根据取代模型对非透明页面块进行光栅化处理组装页面点阵。
步骤B中所述分块组装页面点阵为:根据语法解释得到的页面块属性为非透明页面块,当前应放入该页面块的图元块具有透明属性时,不对当前图元块进行处理。
步骤B中所述组装页面点阵,包括:将透明页面块区分为透明单色块、透明双色块和透明混色块,透明单色块是指页面块内所有像素只有一个灰度值,透明双色块是指所有像素只有两个灰度值,多于两个灰度值的透明块即为透明混色块。
步骤B中所述组装页面点阵,为:将非透明页面块区分为非透明单色块、非透明双色块和非透明混色块,非透明单色块是指页面块内所有像素只有一个灰度值,非透明双色块是指所有像素只有两个灰度值,多于两个灰度值的非透明块为非透明混色块。
步骤B中所述组装页面点阵,进一步包括:将页面中文字和图形对应的图元划分为多个大小相同的图元块,将图元块区分为黑块、白块和混合块,黑块内部所有像素均为1,白块内部所有像素均为0,其余图元块为混合块,使用黑白点阵表示黑块、白块和混合块内所有像素的灰度值。
所述黑白点阵使用游程编码的方式对图元块序列进行压缩。
所述步骤B进一步包括:将页面中的图像或渐变对应的图元按混合块进行处理,使用平展点阵表示块内部各像素的灰度值。
步骤B中所述组装页面点阵,进一步包括:对透明组采取分块光栅化处理的方法,光栅化处理的结果分块放入其对应的父页面中。
步骤B中所述组装页面点阵,进一步包括:将页面像素的形状参数和贡献度参数所对应的页面点阵划分为大小相同的块。
所述块的大小为:宽度为32、16、8个像素,高度为32、16、8个像素。
所述页面描述文件:为PDF格式;或为可扩展标记语言页面标准XPS格式。
本发明提供的透明页面的光栅化处理装置包括语法解释单元、分块单元、文件存储单元和组装单元,语法解释单元用于对透明页面的页面描述文件进行语法解释,并将语法解释提供给分块单元;分块单元用于根据语法解释对页面进行分块,并区分透明页面块和非透明页面块,并将分块信息提供给组装单元;文件存储单元用于存储由语法分析所产生的图元对象信息和透明参数,并将图元对象信息和透明参数提供给组装单元;组装单元用于根据透明页面块和非透明页面块的页面块类型以及图元对象信息和透明参数进行光栅化处理,分块组装页面点阵。
本发明中,对透明页面进行两遍扫描,第一遍扫描是对透明页面的页面描述文件进行语法解释,划分页面块,将图元对象信息和透明参数写入中间文件;第二遍扫描是从中间文件中逐个读取图元对象和透明参数,分块组装页面点阵。与传统的光栅化处理方法相比,本发明提出的方案至少具有以下几个方面的优点。
第一,能够有效降低页面点阵组装过程所需的内存开销。例如,非透明单色块根本不需要平展点阵缓冲区,非透明双色块只需要平展点阵缓冲区的1/8。对非透明页面块进行光栅化处理时,根本不需要考虑与透明相关参数的点阵缓冲区。
第二,能够有效提高页面点阵组装效率。对非透明页面块,可直接按照最终的取代模型组装页面点阵,只有对透明页面块才需要依次按透明模型组装页面点阵。对于透明页面块,如果透明相关参数对应的页面块类型均为透明单色块,则对该透明页面块进行繁杂的透明混色运算只需执行一次,无需逐点进行透明混色运算,而现有的光栅化处理方法需要对每个页面或页面段内部的所有像素逐点进行透明混色运算。
第三,最终得到的页面点阵是分块描述的,这样也能够提升对页面点阵的后续处理的处理效率,如校色和挂网等处理的处理效率,无需再逐点进行处理。例如,对单色块内部所有像素只需要校色一次,而不需要逐点进行校色;而对双色块只需要校色两次。
第四,根据本发明提出的方案产生的页面点阵数据本身就是压缩的,如单色块和双色块的页面点阵,非常有利于点阵数据在***中的传输及在输出设备上的输出。根据实际需要,可对双色块和混色块对应的点阵数据进行压缩,也可以对块描述表进行压缩,以进一步减少分块描述的页面点阵的数据量。
附图说明
图1示出了非透明对象和透明对象在页面中的分布示意图;
图2示出了页面分块示意图;
图3示出了本发明中透明页面光栅化处理装置结构示意图。
具体实施方式
本发明中,对透明页面进行两遍扫描,第一遍扫描是对透明页面的页面描述文件进行语法解释,页面描述文件如PDF文件、可扩展标记语言页面标准(XPS,XML Paper Specification)文件等。虽然PDF文件和XPS文件描述页面的方式差别很大,但通过对应的语法分析,都可以将页面内容分解为一系列的基本图元对象,如文字对象、图形对象、图像对象、渐变对象以及它们的组合体。此外,通过语法解释还可以得到与这些图元对象对应的颜色参数和与透明相关的透明参数等信息,然后将所产生的所有图元对象信息和透明参数写入中间文件,作为第二遍扫描的输入;第二遍扫描是从中间文件中逐个读取图元对象和透明参数,分块组装页面点阵。透明参数为标识图元是否具有透明属性的参数。所述中间文件可全部存储于内存缓冲区;或中间文件的一部分存储于内存缓冲区,另一部分存储于外部存储器。为了减少第二遍扫描过程中的内存开销,上述的分块页面组装过程实际上是在传统的分段组装的基础上再进行分块的,在组装一个页面段点阵时,只需要关心与当前组装段相交的图元对象,忽略所有与当前组装段不相交的图元对象。
图1示出了非透明对象和透明对象在页面中的分布示意图,如图1所示,实际页面中,透明对象通常只出现在页面的部分区域,因此,现有根据透明模型对整个页面或页面段进行光栅化处理,显然是不经济的,光栅化处理的效率也非常低。本发明中提出对透明页面进行光栅化处理时,区分透明区域和非透明区域,根据透明模型对透明区域进行光栅化处理,根据取代模型对非透明区域进行光栅化处理。这样,本发明中可将根据透明模型进行光栅化处理的透明区域减小至最低,使得根据透明模型进行光栅化处理的数据量大大降低,能够大大提高光栅化处理的效率。
根据对页面描述文件的语法解释,将划分的页面块确定为透明页面块或非透明页面块,具体处理为:确定当前图元是否具有透明属性,如果当前图元具有透明属性,则当前图元对应的外接矩形(Bounding BOX,BBOX)所对应的所有页面块为透明页面块;如果与页面块相交的所有图元都不具有透明属性,则该页面块为非透明页面块。透明页面块是指含有透明对象的页面块,非透明页面块是指不包含透明对象的页面块。
第二遍扫描中的分块组装页面点阵是指根据透明模型对透明页面块进行光栅化处理组装页面点阵,根据取代模型对非透明页面块进行光栅化处理组装页面点阵。分块组装页面点阵时,可根据页面块的原类型和当前图元块的类型分别进行优化处理。例如,中间处理得到的透明页面块被后续的非透明纯色块完全取代时,该页面块将由透明页面块转变为非透明页面块,此时可进行优化处理,具体处理过程如下:如果将某一图元放入页面块时,根据图元的透明参数得到该页面块的属性应为透明页面块,而根据语法解释得到的该页面块的最终属性为非透明页面块,此时,由于中间的混合透明运算最后在该页面块中均会被最后的图元块所取代,因此,中间的混合透明运算可省略,直接进行最后的根据取代模型进行光栅化处理,得到该页面块的页面点阵,即如果根据语法解释得到的页面块属性为非透明页面块,且当前应放入该页面块的图元块具有透明属性,则不对当前图元块进行处理,这样能够节省不必要的中间处理,降低需要处理的数据量。
针对每一色版,包括Shape参数和Alpha参数,其对应的页面点阵采用分块描述的方法。划分页面块时,可根据透明参数将页面划分为多个包含透明对象或非透明对象的页面块;也可将页面划分为多个大小相同的页面块。将页面划分多个大小相同的页面块时,可根据光栅化设备的分辨率来确定每个页面块的大小,例如,每个页面块的大小可为宽度为32、16、8个像素,高度为32、16、8个像素。
每个页面块具有以下属性:页面块类型、灰度值及对应于页面块点阵的索引信息。页面块点阵存储于点阵缓冲区。
在页面点阵组装过程中,将透明页面块区分为透明单色块和透明混色块两种类型,如图2所示,其中,透明单色块是指页面块内部所有像素只有一个灰度值;透明双色块是指页面块内部所有像素只有两个灰度值;透明混色块是指页面块内部像素具有多个灰度值,根据透明模型对透明混色块进行光栅化处理后,每个像素的灰度值可使用平展点阵进行表示。
在页面点阵组装过程中,将非透明页面块区分为非透明单色块、非透明双色块和非透明混色块三种类型,如图2所示,其中,非透明单色块是指页面块内部所有像素只有一个灰度值;非透明双色块是指页面块内部所有像素只有两个灰度值,只需要1位就能够表示出每个像素的灰度值,如果页面块点阵为8位,则表示非透明双色块的灰度值的数据量可降低至原来的1/8;非透明混色块是指页面块内部像素具有多个灰度值,根据取得模型对非透明混色块进行光栅化处理后,每个像素的灰度值可使用平展点阵进行表示。
对于页面中出现的文字、图形等图元对应的黑白点阵划分为一系列图元块,各图元块的大小可相同,例如,每个图元块的大小可为宽度为32、16、8个像素,高度为32、16、8个像素。页面中出现的文字、图形等图元可根据图元对象信息确定得到。根据图元对象信息,将图元块区分为黑块、白块和混合块三种类型,黑块表示图元块内部所有像素均为1,白块表示图元块内部所有像素均为0,除了黑块和白块以外的其他图元块为混合块,使用黑白点阵进行表示。对于图元块的黑白点阵可使用游程编码的方式对图元块序列进行压缩,以便提高处理效率。
针对图像、渐变等图元按照混合块进行处理,使用平展点阵进行表示。
对于页面像素的Shape参数和Alpha参数所对应的8位页面点阵采取上述相同的分块描述方法,即将该8位页面点阵划分为大小相同的块,每个块的大小可为宽度为32、16、8个像素,高度为32、16、8个像素。
对透明组也使用以上描述的处理方法,即将透明组视为一个子页面,采取分块光栅化处理的方法,光栅化处理的结果分块放入其对应的父页面中。
本发明中,透明页面的光栅化处理装置如图3所示,包括语法解释单元、分块单元、文件存储单元和组装单元,其中,语法解释单元用于对透明页面的页面描述文件进行语法解释,并将语法解释提供给分块单元;分块单元用于根据语法解释对页面进行分块,并区分透明页面块和非透明页面块,并将分块信息提供给组装单元;文件存储单元用于存储由语法分析所产生的图元对象信息和透明参数,并将图元对象信息和透明参数提供给组装单元;组装单元用于根据透明页面块和非透明页面块的页面块类型以及图元对象信息和透明参数进行光栅化处理,分块组装页面点阵。
分块单元区分透明页面块和非透明页面块时,确定当前图元是否具有透明属性,如果当前图元具有透明属性,则当前图元对应的外接矩形所对应的所有页面块为透明页面块;如果与页面块相交的所有图元都不具有透明属性,则该页面块为非透明页面块。透明页面块是指含有透明对象的页面块,非透明页面块是指不包含透明对象的页面块。
组装单元分块组装页面点阵时,根据以上方法描述的具体过程进行处理,在此不再赘述。
以上描述的光栅化处理的实现方案不仅适用于采用PDF描述的透明页面,还适用于采用其他指令语言描述的透明页面,如采用可扩展标记语言页面标准(XPS,XML Paper Specification)描述的透明页面。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。