[发明专利]一种基于颜色属性值变换的OOX格式文档的数字水印方法有效
申请号: | 201910282750.5 | 申请日: | 2019-04-10 |
公开(公告)号: | CN109993681B | 公开(公告)日: | 2023-07-07 |
发明(设计)人: | 杨裔;杨理;郭文杰;路永钢;李廉 | 申请(专利权)人: | 兰州大学 |
主分类号: | G06T1/00 | 分类号: | G06T1/00;G06F21/62 |
代理公司: | 兰州智和专利代理事务所(普通合伙) 62201 | 代理人: | 赵立权 |
地址: | 730000 甘肃*** | 国省代码: | 甘肃;62 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 颜色 属性 变换 oox 格式 文档 数字 水印 方法 | ||
1.一种基于颜色属性值变换的OOX格式文档的数字水印方法,其特征在于,包括水印嵌入方法和水印提取方法两个方法过程,并分别包括如下步骤:
所述水印嵌入方法的具体步骤为:
a1.首先读取OOX格式文档包中的主文档部件document.xml文件,并提取出所述document.xml文件中的所有w:p节点待处理;
a2.对于w:p节点下每一个含有字符的w:r节点,首先对其进行分裂操作,然后依次对它们的颜色属性值进行变换以进行水印嵌入操作,具体为:对w:r节点中颜色属性的RGB值的R通道值进行变换,使相邻两个w:r节点RGB值的R通道值彼此不同从而保持相互独立分离状态,对于RGB值的G和B通道值进行变换以进行水印嵌入;若该w:p节点不含w:r节点或w:r节点内无字符则跳过不予处理;
其中,水印嵌入的具体过程为:
将给定的水印信息转化为一个二进制水印串信息,并将该二进制水印串信息的每一位数值作为一个水印位,其中数值0和1作为水印信息,另外增加数值2作为水印结束标记信息;根据当前水印位的值对当前w:r节点RGB值的G通道和B通道值加以变换,每次首先查看水印串是否已经嵌完,若已嵌完,则令当前w:r节点与上一个w:r节点RGB值的G通道或B通道值之差的绝对值为2;
否则,按顺序从水印串信息中读取一位水印位,若其值为1,则令当前w:r节点与上一个w:r节点RGB值的G或B通道值之差的绝对值为1;若其值为0,对当前w:r节点RGB值的G或B通道值不予变换;当原w:r节点分裂出来的所有新w:r节点的颜色值变换完成后,删除原w:r节点;
若w:r中不含color属性,则为该w:r节点添加color属性并将其RGB值赋值为“000000”;
更具体地,步骤a2的过程为:
在进行w:r节点RGB值变换时,为w:r节点RGB值的三个通道值各设置一个累加变化量,将该累加变化量与前一个w:r节点的RGB值的通道值相累加,作为当前w:r节点的通道值,具体地:
(一)w:r节点分裂操作
对于RGB中的R通道,该累加变化量可使相邻两个w:r节点的R通道值之差的绝对值为1、2或3,从而利用前后相邻的两个w:r节点中RGB值的R通道值的不同使两个w:r节点保持独立分离状态;然后,对于每一个w:r节点,根据从水印串信息中按次序读取的水印位对其RGB值的G和B通道值依次分别进行变换,即在对每一个原始w:r节点进行分裂操作和对其通道值进行变换操作之前,首先判断该w:r节点的颜色属性值是否与上一个已变换完成的w:r节点的颜色属性值相似,若相似,则将上一个w:r节点的RGB值赋给当前w:r节点,若当前w:r节点RGB值的各通道值与上一个w:r节点对应通道的最大接受值相同,则将对应通道的累加变化量赋值为-1,并依次对该w:r节点RGB值的G和B通道值分别进行变换;若当前RGB各通道值与上一个RGB对应通道的最小接受值相等,则将对应通道的累加变化量赋值为1,并依次对该w:r节点RGB值的G和B通道值分别进行变换; 若不相似,则将当前w:r节点与上一个w:r节点之间视为隔断,在该原始w:r节点被分裂后的第一个新w:r节点和上一个已完成变换操作的w:r节点之间不进行水印嵌入操作;对于第一个原始w:r节点或者从某隔断处开始的第一个w:r节点的RGB值各通道,若其值为255则将其值减1,若值为0则将其值加1;通过上述步骤将原w:r节点分裂为N个新的w:r节点,N为w:r节点包含的字符数,并按顺序为每个节点分配一个字符;
其中,所述最大接受值是指,如果w:r节点RGB值的某一通道值与其对应累加变化量相加后的值在超过某个值max_acc后,形成的新的RGB值与原有RGB值不再相似,则该max_acc值为该w:r节点对应通道的最大接受值;
所述最小接受值是指,如果w:r节点RGB值的某一通道值与其对应累加变化量相加后的值在低于某个值min_acc后,形成的新的RGB值与原有RGB值不再相似,则该min_acc值为该w:r节点对应通道的最小接受值;
(二)w:r节点RGB值变换操作
在变换之前所有新的w:r节点拥有相同的属性和属性值;第一个w:r节点属性值保持不变,从第二个w:r节点开始对RGB各通道的值进行变换,其中,R通道的具体操作为:
将该通道对应的累加变化量值与上一个w:r节点的已经变换完成的RGB中R通道的值相加,并将结果作为当前w:r节点的RGB中R通道的值,将R通道的累加变化量置为其相反数,再进行下一w:r节点RGB值中R通道的变换;
G和B通道具体操作为:
G和B通道累加变化量初始值设定为1;依次对G通道值和B通道值进行变换,在进行G通道值变换时,首先,判断水印信息串中的水印是否被全部嵌入完毕,若已经嵌入完毕,则令当前w:r节点的G通道变化量值为2或者-2,然后将G通道变化量值与上一w:r节点的G通道值相加作为当前w:r节点的G通道值;然后修改G通道变化量值为1或-1,且针对以下情况做不同方式的处理:(1)若G通道变化量值修改前为1且当前值为2,则修改其值为-1;(2)若G通道变化量值修改前为-1且当前值为-2,则修改其值为1;若水印信息串中的水印尚未被全部嵌入,则:(1)若当前水印位为1,将G通道变化量值与上一w:r节点的G通道值相加作为当前w:r节点的G通道值,然后将G通道变化量置为相反数;(2)若当前水印位为0,不对G通道的值进行变换;
B通道的变换同G通道;
a3.重复步骤a2,直至嵌完所有含有字符的w:r节点,然后将document.xml文件重新写入到原OOX文档包;
所述水印提取方法的步骤为:
b1.首先读取OOX格式文档包中的主文档部件document.xml文件,并提取出所述document.xml文件中的所有w:p节点待处理;
b2.对于每一个w:p节点的子节点,按顺序获取其中所有含有字符的w:r节点或子节点中所有含有字符的w:r节点;
b3.从第二个元素开始遍历步骤b2中获取的w:r序列,获取当前w:r节点 RGB值的G通道和B通道值VG1、VB1 ,以及上一个w:r节点RGB值的G通道和B通道值VG0,VB0,分别计算得到VG1与VG0之差的绝对值∆G,以及VB1与VB0之差的绝对值∆B,∆G和∆B的值为0、1或2,若为0或1则将该值添加到一个水印序列尾部,若为2则表明此为结束标记,也即下一个水印序列的开始标记;
b4.重复步骤b3,直至遍历完所有w:r序列内的元素。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于兰州大学,未经兰州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910282750.5/1.html,转载请声明来源钻瓜专利网。