具体实施方式
在本发明实施例中为了提高图像路径陷印生成的准确性,以及提高图像路径陷印生成的适用性,如图1所示,提供了一种图像路径生成陷印的方法,具体包括以下步骤:
S101:根据每个图像对象与相邻的图元对象的相交路径,从所述图像对象和所述图元对象中提取用于陷印生成的有效数据,并确定所述有效数据的属性信息。
在本发明实施例中图元对象包括:文字对象、图形对象、渐变对象及图像对象。在用户空间下,即每个页面空间下,根据每个图元对象点的坐标值,及每个图元对象的边界框(Bounding Box,BBox)参数,确定每个图像对象与相邻的图元对象的相交路径。
根据相交路径提取有效数据,可以提取整个图像对象及与图像对象相邻的图元对象的所有数据作为有效数据提取,也可以按照一定规则选择参与图像路径陷印生成的数据作为用于陷印生成的有效数据。
S102:根据所述相交路径上的点及所述有效数据的属性信息,确定参与所述相交路径上每个点陷印生成的图元对象。
其中该图元对象包括,图像对象及与图像相邻的其他图元对象。
S103:根据参与所述相交路径中每个点陷印生成的图元对象,将该相交路径上的点划分为至少一个陷印区域。
具体包括:确定参与相交路径上每个点陷印生成的图元对象,将参与陷印生成的图元对象相同的点划分至少一个陷印区域。
S104:当该陷印区域中的点对应的参与陷印生成的图元对象包含图像对象时,根据陷印区域内相交路径上点的颜色的梯度变化,将该陷印区域划分为至少一个子陷印区域。
具体包括:比较陷印区域内相邻每两个点的颜色梯度与设置的梯度阈值的关系,将颜色梯度小于设置梯度阈值的点划分为一个子陷印区域。
S105:在每个子陷印区域内,按照陷印规则生成图像路径陷印。
其中,当所述子陷印区域内每个点对应的参与陷印生成的图元对象为图像对象和图形对象时,比较所述子陷印区域内所有点的颜色平均值与图形对象的颜色值,按照陷印规则生成图像路径陷印;
当所述子陷印区域内每个点对应的参与陷印生成的图元对象为图像对象和图像对象时,比较所述子陷印区域内所有点对应每个图像对象的颜色平均值,按照陷印规则生成图像路径陷印。每个点对应的参与陷印生成的图元对象,以下简称为每个点对应的陷印生成的对象。
该方法还包括,当该陷印区域中的点对应的参与陷印生成的图元对象不包含图像对象时,按照图形对象间的陷印规则生成路径陷印。其中在本发明实施例中Image Mask图像对象只有一个颜色值,因此可以视为图形对象进行处理。
在本发明实施例中图像对象可能只含有一个图像点阵,也可能是一个复杂的图像,例如含有一个或多个Mask点阵,或者图像本身就是一个Mask点阵,或者含有叠印参数。在本发明实施例中如果图像对象为一个Mask点阵,即为Image Mask对象,取1值表示使用Mask对应点的颜色替换下方图元对象对应点的颜色,取0值表示不替换下方图元对象对应的颜色;如果图像对象中同时含有Mask点阵和图像点阵,即为ImageType3或Image Type4,则取1值用图像对象对应点的颜色替换下方图元对象对应点的颜色,取0值表示不替换下方图元对象对应的颜色。
下面结合说明书附图对本发明实施例进行详细说明。
如图2所示,为本发明实施例中图像对象和图元对象的相交路径的分布示意图。由于图2中图形对象A与图像对象B相交确定的陷印路径1,图像对象B与图像对象C相交确定的陷印路径2中实际参与图像路径陷印的点集中在相交路径周围,因此在提取有效数据的过程中,可以根据相交路径按照一定的规则,选择参与图像路径陷印生成的数据作为有效数据,采用该方法提取参与陷印的有效数据,不需获取相交图元对象的所有数据,在处理的过程中可以节省资源,同时也提高了陷印生成的效率。如图3所示,为本发明实施例中根据相交路径提取有效数据的方法,具体包括以下步骤:
S301:确定两个图元对象相交路径的BBox参数。
其中,由于每个图元对象都有一个BBox参数,因此当两个图元对象相交时,可以确定该两个图元对象陷印路径的BBox参数,该陷印路径的BBox参数可以表示该相交路径在用户空间下所占用的矩形区域的大小。
S302:判断该相交路径的BBox参数是否不大于设置的BBox阈值,当判断结果为是时,则进行S303;否则,进行S304。
S303:根据该相交路径的BBox参数,将整个相交路径的BBox区域作为有效数据的提取区域。
当该相交路径的BBox参数不大于设定的BBox阈值时,该相交路径可能由文字对象或者小图形对象与图像对象相交确定,提取该相交路径内的所有数据,可以使由文字对象或者小图形对象确定的复杂路径的数据被一次完整的提取出来。
S304:按照路径的方向将相交路径折线化,采用首尾相连的折线段拟合该相交路径。
将相交路径折线化的具体方式包括:保证折线段上每一个点到相交路径的垂直距离都不大于设定的距离阈值。
S305:按照预定的算法确定每个折线段的有效区域,将有效区域内的数据作为有效数据进行提取。
在本发明实施例中按照预定算法确定每个折线段的有效区域的方法包括:在陷印空间下根据每个折线段的长度及设置的陷印宽度确定每个折线段的有效区域。当然在具体的确定过程中,为了陷印的准确度,可以根据每个折线段的长度和/或设置的陷印宽度扩大有效区域的范围。同样在陷印输出的过程中为了减少数据冗余,可以生成裁剪(Clip)路径,根据Clip路径删除冗余数据。
并且提取的有效数据可能为图形数据、也可能为图像数据,在提取有效数据时要确定此有效数据的属性信息,即该有效数据为图形数据或图像数据或其他图元数据。
如图4所示,为将相交路径折线化后在用户空间下所生成的效果图。阴影标注的矩形区域为一条折线段的有效区域,其中该有效区域在陷印空间下生成。该矩形区域的长边平行于折线段,宽边垂直于折线段。区域的中心线即为相交路径的折线段。矩形的长度取折线段在陷印空间下的长度,宽度为陷印宽度的2倍。其中,这里的陷印宽度是在陷印空间下,根据用户设置的陷印宽度值确定的,例如为用户设置的陷印宽度值的1.5倍等。
并且在图4中,有效区域所在的空间为陷印空间OTrap,其中陷印空间的坐标轴的方向与用户空间的坐标轴方向一致,但与用户空间存在着平移和缩放的空间关系,图像对象的空间为OImg,图像对象的空间与现有的PDF规范下规定相同,用户空间为Ouser,在现有PDF规范下规定相同,由OTrap到OUser的空间变换为CTMT2U,,由OImg到Ouser的空间变换为CTMI2U,,则由有效区域的陷印空间到图像对象的空间变换为CTMT2I,并且,CTMT2I=CTMT2U×(CTM-I2U)-1。同时,如果相交路径的有效数据是按照路径方向获得的,那么对每一个折线段提取的数据点阵对应到陷印空间还可能会有一个旋转操作,旋转的角度即为折线段与陷印空间X轴的夹角。例如折线段的提取的数据点阵空间为OLine,由OLine到OTrap的空间变换为旋转和平移CTMLi2T,则由折线段有效区域到图像对象的空间变换为CTMLi2I=CTMLi2T×CTMT2U×(CTMI2U)-1。
同时,在本发明实施例中对于经图像空间到陷印空间的变换后,超出图像点阵范围的有效数据,取图像点阵中距离变换点距离最近的数据。如果含Mask对象,还需要同时生成Mask的点阵部分。Mask数据对于变换后超出的部分,Mask区域的取值取0,即保留页面之前的内容。
在本发明实施例中为了提高图像路径生成陷印的效率,根据有效数据的生命周期分类存储数据,具体包括:
根据当前对象与其他图元对象相交路径,提取有效数据,判断当前图元对象是否需要做陷印处理,如果是,则将提取的有效数据存放在当前陷印处理数据管理器(Current Trap-Processing Data Manager,CTP)内,如果不是,则将提取的有效数据存放在待陷印处理数据管理器(Later Trap-Processing DataManager,LTP)内。判断其为以下情况时当前对象不必做陷印处理:判断当前图元对象为非图像对象;或判断当前图元对象为两个相交图像对象中的第一个被判断对象。两个数据管理器的功能基本相同,只是在当前对象为图像对象时,路径陷印生成后,CTP中保存的数据被清空。而LTP中保存的数据在整个页面的路径陷印生成后被清空。
并且,为了便于图像路径的陷印生成,每条陷印路径中的对象都保存一个数组,该数组中每个数组元素对应参与该路径陷印的一个图像对象的有效数据在管理器中的索引值及对应的管理器编号。
当前图像对象的全部有效数据获取完毕之后,便需要开始对每条相交路径依次进行图像路径的陷印处理。一般情况下,一条相交路径会有两个图元对象参与陷印的生成。在本发明实施例中,如果只有一个图元对象参与路径陷印,那该条路径可以认为是此图元对象与页面背景相交,相交路径只可能是做富黑的内缩陷印。
此外,参与陷印的对象也可能会由多个对象构成,即为复合对象。该对象的特点是参与组合的对象中必然至少有一个是含有Mask点阵或者叠印参数,在该对象覆盖下的页面背景的内容也会对最终的路径陷印生成做出贡献,因此,可以将这些对象的集合作为一个复合对象参与陷印。图5为本发明实施例提供的一个复合对象。其中陷印路径由图形对象和复合对象相交得到,其中对复合对象展开,按照页面对象的放置顺序,其中与页面直接相邻的序号为1图层为图像对象或其他对象,位于序号为1的图层之上的为序号为2的图层,该图层为含有叠印参数的对象,位于最上方的是序号为3的图层,该图层为含Mask的图像对象,其中阴影部分的取值为1。
参与路径陷印的对象,如果至少有一个是图像对象,其中包括Type3和Type4类型的图像,不包括Image Mask对象,陷印位置遵从图像陷印位置的设置。如果两个对象都是图形或Image Mask对象,则按照普通陷印位置规则生成陷印区域。当出现黑版陷印时,黑版陷印位置的设置将获得最高的优先级别。
如图6所示,在本发明实施例中按照相交路径将相交路径前进方向的左侧的陷印对象作为集合一,将相交路径前进方向的右侧的陷印对象作为集合二,在每个集合中根据相交路径上的点及提取的有效数据的属性信息,确定参与相交路径每个折线段上每个点陷印生成的图元对象的序号点集的方法,具体包括以下步骤:
S600:开始。
S601:根据相交路径上的点,按照一定顺序判断参与该点陷印生成的对象是否读取完毕,如果是,判断相交路径上下一个点的对象的序号集合;否则,进行S602。
其中按照一定顺序判断参与该点陷印生成的对象是否读取完毕,可以按照页面中按照从上向下的顺序判断,当然也可以按照其他的顺序判断。
S602:判断是否陷印生成对象为小对象,如果是,则不处理该点,否则,进行S603。
其中,判断陷印生成对象是否为小对象可以判断对象的线条宽度是否小于设定的宽度阈值,或判断字体是否小于设定的字体阈值,如果判断结果为是,则认为对象为小对象。一般小对象包括:窄路径或小字体。
S603:判断读取的陷印生成对象是否含有Mask参数,如果是,进行S604;否则,进行步骤S606。
S604:判断该Mask参数在该点的值是否为1,如果是,进行S605;否则,不记录对象的序号返回S601。
S605:判断读取的陷印生成对象是否含有叠印参数,如果是,跳至S601;否则,进行相交路径上下一个点的判断。
S606:对应该点的陷印生成对象集合中记录该对象的在图层中的序号,判断读取的陷印生成对象是否含有叠印参数,如果是,跳至S601;否则,判断相交路径上下一个点的对象的序号集合。
其中该陷印生成对象在图层中的序号,如图5所示每个对象在页面中有一定的序号,其中由于左右两边参与陷印的对象可能不同,因此在具体实施过程中每个对象所在图层对应的序号唯一,或者将陷印对象按照位于相交路径的左右位置进行区分,再确定对象所在图层的序号。
如图7所示,为本发明实施例中根据相交路径,在相交路径的左右两侧的对象集合中,确定了参与相交路径上每个点的陷印生成的图元对象的序号点集后,根据相交路径中每个点对应的序号点集中陷印生成的图元对象的属性信息,确定陷印区域,以及当陷印区域中的点对应的陷印生成对象包含图像对象时,根据陷印区域内相交路径上点的颜色梯度变化,将该陷印区域划分为至少一个子陷印区域,具体包括以下步骤:
S700:开始。
S701:按照顺序判断相交路径上每点,在相交路径左右两侧的集合中保存的参与陷印生成的图元对象序号是否完全相同,如果是,则进行S702;否则,进行步骤S703。
S702:不处理该点,该点不做陷印处理,进行S705。
S703:判断该点与前一个点对应的左右两侧的集合中记录的,参与陷印生成的图元对象序号是否完全相同,如果是,进行S704;否则,进行S705。
S704:将该点归入到当前待生成陷印的陷印区域的点集中。
S705:判断该陷印区域点集中,每个点对应的相交路径左右两侧的集合中保存的参与陷印生成的图元对象序号中是否至少有一个为图像对象,其中该图像对象不包括Image Mask对象,如果是,则进行S706;否则,进行S707。
S706:根据陷印区域内点的颜色梯度变化,将该陷印区域划分为至少一个子陷印区域。
S707:确定该陷印区域中的点对应的对象为图形对象。
当陷印区域中的点对应的陷印生成对象为图形对象时,根据该陷印区域生成Clip路径,按照陷印规则生成陷印。当将陷印区域划分为至少一个子陷印区域后,对划分后的每个子陷印区域进行Clip路径的生成并生成陷印。
在本发明实施例中,如果折线段上每个点对应的相交路径左右两侧的集合中保存的参与陷印生成的图元对象都不是复合对象时,则参与陷印的对象可能是一个图像对象和一个图形对象,也可能是两个图像对象,因此,相交路径上的点应该在两个对象内,此时可以不做陷印区域的划分,可以直接对整个折线段按照图像的梯度变化确定每个子陷印区域。
在本发明实施例中按照陷印区域内点的颜色梯度变化划分子陷印区域的方法包括:
首先,读取陷印区域内的每个点,根据每个点在陷印生成图像对象的各个色版中的邻域,其中该邻域的范围可以为根据陷印宽度确定的正方形的大小,取每个点在图像对象的各个色版中的邻域颜色平均值。
然后,比较当前点的颜色平均值与前一个点的颜色平均值,当该梯度值小于设定的梯度阈值时,将该当前点保存到一个子陷印区域内;否则,则说明颜色梯度值出现较大的跃变,对已经保存的该子陷印区域内的各个点进行陷印规则的判断。
其中,计算图像对象的梯度的过程包括,根据两个对象A和B以及各个色版进行计算,具体为:
Grad=MAX(|A.C1-B.C1|,|A.C2-BC2|,......|A.Cn-B.Cn|)
对子陷印区域内的点进行陷印规则的判断包括:
当该子陷印区域内的每个点对应的陷印生成对象为图像对象和图形对象时,将该子陷印区域内所有点的颜色平均值与图形对象的颜色值比较,进行陷印规则的判断,从而决定来自两个对象的颜色是否满足作陷印的要求。其中,在本发明实施例中由于Image Mask图像对象只有一个颜色,因此,可以将该Image Mask图像对象作为图形对象处理;
当该子陷印区域内的每个点对应的陷印生成对象为图像对象和图像对象时,将该子陷印区域内,所有点对应每个图像对象的颜色平均值进行比较,进行陷印规则的判断,从而决定来自两个图像对象的颜色是否满足作陷印的要求。
其中,陷印颜色是逐点进行计算并填充的,依据陷印颜色的生成规则,根据每个点在相交路径两侧的对象集合中,参与该点陷印的对象的对应点的颜色值作为陷印颜色生成的陷印。其中,如果该对应点为图像对象中的点时,该点在的颜色值为其邻域内各点颜色值的平均值,当该图像对象中有叠印参数时,按照叠印方式获取叠加后的颜色值,将该叠加后的颜色值作为陷印后的颜色值。
同时,在进行陷印生成时,还生成相交路径上每个子陷印区域的Clip路径。该Clip路径为一个封闭曲线,其中该封闭曲线的中心线,与相交路径的走向完全一致,并且其宽度为用户空间下的陷印宽度。Clip路径是用户空间下的浮点型描述,作用于子陷印区域点阵上,用于精确描述子陷印区域的范围,Clip路径具体位于陷印路径的什么位置,可以根据设置的陷印图像位置参数来确定,其中,该陷印图像位置参数包括居中、内缩、外扩和随机,并且该参数的执行都针对图像对象的边界而言,例如当为内缩处理时,按照图像对象的边界,内缩陷印宽度的大小。
在本发明实施例中为了提高陷印生成的效率,当得到每个陷印区域的点阵后,将每个陷印区域点阵都作为一个图像对象输出时,可能会使最终生成的PDF文件的尺寸过大,从而影响PDF解释器的效率。因此,可以将所有的陷印区域的点阵合并为一个图像点阵后输出,其中图像点阵的大小为相交路径的BBox空间在陷印空间下的大小,而将每个陷印区域点阵合并为一个图像点阵后,每个陷印区域对应的区域Clip路径也可以合并为一个Clip路径,也可以减少对Clip路径的操作量。
如图8所示,本发明实施例提供了一种图像路径陷印生成的装置,包括:
数据获取模块80,用于根据每个图像对象与相邻的图元对象的相交路径,从所述图像对象和所述图元对象中提取用于陷印生成的有效数据,并确定所述有效数据的属性信息;
序号搜集模块82,用于根据所述相交路径上的点及所述有效数据的属性信息,确定参与所述相交路径上每个点陷印生成的图元对象;
第一划分模块83,用于根据参与所述相交路径中每个点对应的陷印生成的图元对象,将该相交路径上的点划分为至少一个陷印区域;
第二划分模块84,用于当该陷印区域中的点对应的参与陷印生成的图元对象包含图像对象时,根据陷印区域内相交路径上点的颜色梯度变化,将该陷印区域划分为至少一个子陷印区域;
陷印生成模块85,用于在每个子陷印区域内,按照陷印规则生成图像路径陷印。
所述陷印生成模块85还用于:
当该陷印区域中的点对应的陷印成成对象不包含图像对象时,则按照图形对象之间的陷印规则生成路径陷印。
所述数据获取模块80包括:
比较确定单元800,用于确定两个图元对象相交路径的BBox参数,比较所述相交路径的BBox参数与设置的BBox阈值,根据比较结果确定有效区域;
提取单元801,用于提取所述有效区域内的数据为有效数据。
所述比较确定单元800包括:
第一确定子单元8001,用于当所述相交路径的BBox参数不大于设置的BBox阈值时,根据所述相交路径的BBox参数,将该相交路径的BBox区域作为有效区域。
所述比较确定单元800包括:
第二确定子单元8002,用于当所述相交路径的BBox参数大于设置的BBox阈值时,按照相交路径的方向,采用连接的折线段拟合所述相交路径,根据每个折线段按照预定的算法确定每个有效区域,其中每个有效区域与一个折线段相对应。
所述装置还包括:
判断模块81,用于判断当前图元对象是否需要做陷印处理,根据判断的结果分类存储所述有效数据及所述有效数据的属性信息。
所述判断模块81包括:
第一判断单元810,用于判断当前图元对象是否为非图像对象,当所述图元对象为非图像对象时,则所述图元对象不需要做陷印处理;
第二判断单元811,用于判断当前图元对象是否为两个相交图像对象中的第一个判断对象,当所述图元对象为两个相交图像对象中第一个被判断对象时,则所述图元对象不需要做陷印处理。
所述判断模块81还包括:
第一存储单元812,用于当判断当前图元对象需要做陷印处理时,存储所述有效数据及所述有效数据的属性信息。
所述判断模块81还包括:
第二存储单元813,用于当判断当前图元对象不需要做陷印处理时,存储所述有效数据及所述有效数据的属性信息。
所述第一划分模块83包括:
序号判断单元830,用于确定参与相交路径上每两个点对应陷印生成的图元对象;
第一划分单元831,用于将参与陷印生成的图元对象相同的点划分为一个陷印区域。
所述第二划分模块84包括:
梯度比较单元840,用于比较陷印区域内相邻每两个点的颜色梯度与设置的梯度阈值的关系;
第二划分单元841,用于将颜色梯度小于设置梯度阈值的点划分为一个子陷印区域。
所述陷印生成模块85包括:
第一陷印生成单元850,用于当所述子陷印区域内每个点对应的参与陷印生成的图元对象为图像对象和图形对象时,比较所述子陷印区域内所有点的颜色平均值与图形对象的颜色值,按照陷印规则生成图像路径陷印。
所述陷印生成模块85包括:
第二陷印生成单元851,用于当所述子陷印区域内每个点对应的参与陷印生成的图元对象为图像对象和图像对象时,比较所述子陷印区域内所有点对应每个图像对象的颜色平均值,按照陷印规则生成图像路径陷印。
所述陷印生成模块85还用于:
根据相交路径确定每个子陷印区域的Clip路径,根据所述Clip路径及所述陷印规则生成图像路径陷印。
本发明实施例提供了一种图像路径生成陷印的方法及装置,按照参与每个点陷印生成的对象是否相同,将对应的对象相同的点划分为一个陷印区域,如果陷印区域含有图像对象,根据对应的图像梯度的变化,将陷印区域进一步划分为至少一个子陷印区域,之后在每个子陷印区域内按照陷印规则生成图像路径陷印,因此本发明实施例提供的图像路径生成陷印的方法,可以有效的提高陷印生成的准确性,同时也可以在更广的范围内应用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。