基于分组策略和邻域关系定位的三维网格双重水印方法与流程

文档序号:15312903发布日期:2018-08-31 22:17阅读:135来源:国知局

本发明涉及一种基于分组策略和领域关系定位的三维网格双重水印方法。



背景技术:

数字水印技术是一种被广泛认可且有效的版权保护策略。经过多年的发展,数字水印技术已经相当成熟,可以应用到各种需要的场景中。数字水印的基本原理是利用数据的冗余信息,在原始的载体数据(如音频、视频、图像、三维模型等)中嵌入水印信息。水印信息可以是有意义的版权信息,例如图片、公司的商标和作者的名字等;也可以是无意义的信息,例如随机生成的字符串或者号码。水印信息是隐藏在载体数据中的,不会破坏原始载体的视觉效果。在水印嵌入过程未知的情况下破解水印方法的难度较大,所以数字水印的安全性得到了保证。当人们需要版权认证时,可以通过与水印嵌入过程相对应的水印提取方法来提取水印,以达到内容认证、版权保护的目的。

与图像、音频和视频等传统的数字水印技术相比,三维模型数字水印的研究相对较少。这种现状的出现是由于三维模型的拓扑结构和模型数据的不规则采样引起的,并且针对三维模型的攻击方式复杂多变也是一个主要的因素。相对于图像,三维模型的表示方法较为复杂。图像相当于二维矩阵,图像中的像素值作为该矩阵的元素值。这意味着所有这些像素在图像中都具有固有的顺序,例如可以通过行扫描或者列扫描建立一个序列。这个顺序通常用于同步水印比特(知道水印的位置以及以何种顺序嵌入)。然而,对于经常构成水印比特载体的网格元素,不存在一个简单且稳定的本征顺序。三维网格文件中的顶点和面片顺序不固定,对模型进行顶点重排序操作后模型的外观没有发生变化,因此三维网格文件中顶点或者面片的排列顺序并不能作为嵌入水印的依据。除此之外,由于三维模型的顶点分布是不均匀的,缺乏一个有效的三维网格模型的频域变换方法。

三维模型数字水印与图像水印一样要求水印具有透明性,并且三维模型对水印的透明性要求更为严格,水印不仅需要具有视觉上的透明性,还需要具有功能的透明性。例如对于一个零件的模型来说,其规格大小的精确度要求非常高,微小的改变都会影响由该零件组装的设备的质量,几何修改必须在未来装配的公差范围内;或者有些三维模型有设计上的限制,例如模型的对称性必须被保留。



技术实现要素:

本发明的目的在于提供一种基于分组策略和领域关系定位的三维网格双重水印方法。

本发明的三维网格模型水印方法在三维网格模型中同时嵌入鲁棒水印和脆弱水印,并利用双目标优化模型进行双重水印耦合处理,来解决鲁棒水印和脆弱水印相互干扰的问题,达到版权保护和内容认证的双重效果。

本发明方法的具体步骤是:

步骤(1)对三维模型顶点进行分组:

把三维模型从笛卡尔坐标系转换到球坐标系,利用模型顶点到模型中心的距离对顶点进行分组。根据嵌入的水印长度作为分组数对模型顶点进行均匀分组,每个顶点落到相应的组中。

步骤(2)获取每个组内的顶点数量,调节相邻两组内顶点的数量关系来嵌入鲁棒水印。为了减少对模型视觉效果的影响,尽量修改靠近组边界的顶点。

步骤(3)利用双目标优化模型进行双重水印耦合处理。

设三维模型嵌入鲁棒水印后被修改的点为耦合点,没有被修改的点为非耦合点。追求两个目标:一个是三维网格模型的形变尽可能小,另一个是脆弱水印的嵌入对于鲁棒水印的影响尽可能小。通过双目标优化模型选取边界距离小的顶点来嵌入脆弱水印。

步骤(4)对脆弱水印进行分块,每块长度为128位。在水印信息中每遇到连续的5个“1”就在后面插入一个“0”,分别对每个水印块进行md5加密,在每个水印块和密文信息头部插入字符序列“01111110”作为水印块和密文块开始的标志。

步骤(5)顶点v(x,y,z)的三个坐标分量在水印嵌入过程中有不同的作用:x分量用于标识顶点v(x,y,z)是否有嵌入水印,y分量用于嵌入水印信息,z分量用于嵌入密文信息。通过双目标优化模型选取可嵌入顶点v(x,y,z),获取顶点v(x,y,z)的一环邻域顶点,并对一环邻域顶点进行排序。计算一环邻域中顶点与一环邻域顶点排序后最小顶点的均差值,并通过调节相应顶点的坐标分量来改变顶点与一环邻域的几何关系,从而嵌入脆弱水印。

步骤(6)提取嵌入的水印采用如下方法:

步骤6.1.首先计算模型的中心点o坐标,接着计算各顶点vi到模型中心o的距离ρi,通过最大半径ρmax和最小半径ρmin确定每个组的范围并对模型顶点进行分组。

步骤6.2.从第二个组开始每两个组形成一个二元组,比较二元组内两个组的顶点数目。前一个组比后一个组顶点数目多,则提取的水印信息是“1”,反之,提取的水印信息是“0”。遍历所有的二元组得到完整的鲁棒水印。

步骤6.3.计算模型顶点与其一环邻域的均差值,通过顶点坐标分量x与均差值的数量关系判断该顶点是否有嵌入水印,若该顶点是嵌入顶点,则利用y分量提取脆弱水印,利用z分量提取密文信息。

步骤6.4.将得到的水印信息w和密文信息p根据“01111110”标识进行分块,对每块水印信息进行md5加密得到新的密文信息p'。如果p!=p'说明该水印块被篡改,反之如果p=p',则说明该水印块没有被篡改,去掉嵌入时添加的“0”得到脆弱水印。

本发明有益效果如下:

本发明方法提取水印不需要原始网格,并且鲁棒水印与脆弱水印互不干扰。同时,鲁棒水印能抵抗常见攻击,攻击包括几何变换、噪声、顶点重排序、简化和细分,脆弱水印具有篡改定位功能。

附图说明

图1双重水印耦合示意图

图2双重水印算法总体流程

图3鲁棒水印嵌入流程

图4脆弱水印嵌入流程

图5鲁棒水印提取流程

图6脆弱水印提取的流程。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

如图1-6所示,基于分组策略和领域关系定位的三维网格双重水印方法,具体步骤如下:

步骤(1)对三维模型顶点进行分组:

把三维模型从笛卡尔坐标系转换到球坐标系,利用模型顶点到模型中心的距离对顶点进行分组。根据嵌入的水印长度均匀分组,每个顶点落到相应的组中。

令(xi,yi,zi)代表具有n个顶点数量的三维模型的第i个顶点的笛卡尔坐标。计算三维模型的中心(xc,yc,zc),使用主元分析法得到主轴v。设球坐标系的原点在通过中心(xc,yc,zc)沿着主轴v方向的直线上,如公式(1)所示。

是通过穷举搜索得到的,可以使分组后各组内的顶点个数分布尽可能均匀,满足公式(2)的要求。

[tmin,tmax]定义了将要考虑的t的范围,这个范围要满足原点坐标(xc,yc,zc)在三维模型边界内,abs(x)代表x的绝对值,|bk|表示组bk内顶点的个数。

用球面坐标(ρi,φi,θi)表示顶点(xi,yi,zi),并且1≤i≤n,ρi∈[0,+∞),φi∈[0,π]和θi∈[0,2π)。把模型对应于径向坐标p={ρi:1≤i≤n}的顶点分为k个组b={bk:1≤k≤k},bk是p的子集,如公式(3)所示。

bk={ρi:ρmin+(k-1)·δρ≤ρi<ρmin+k·δρ}(3)

ρmin和ρmax是p的最小值和最大值,并且

δρ=(ρmax-ρmin)/k(4)

δρ是每个组的范围大小,设定ρmax∈bk。

步骤(2)获取每个组内的顶点数量,调节相邻两组内顶点的数量关系来嵌入鲁棒水印。如图3所示,为了减少对模型视觉效果的影响,尽量修改靠近组内边界的顶点。

对顶点分组完成后,从第二个组b2开始,将相邻的组分成二元组(b2,b3),(b4,b5),...,(bk-2,bk-1),将水印嵌入到每一个可嵌入的二元组中。满足公式(5)则二元组是可嵌入的。

|bk|+|bk+1|+|bk+2|≥nthr(nthr≥1)(5)

nthr是设定的一个整数阈值,它的作用是平衡鲁棒性和透明性。可以注意到b1和bk不参与嵌入水印,这意味着主轴上投影的两个端点(ρmin和ρmax)在嵌入过程中不会发生移动,增加了在提取过程中的鲁棒性。如果k是奇数,则还需要排除一个组,本发明中排除的组是bk-2。

通过增加或者减少三元组(bk,bk+1,bk+2)各个组内的顶点的个数来向二元组(bk,bk+1)中嵌入水印比特wi。更具体的说,为了嵌入wi=0,将顶点从bk和bk+2动到bk+1中,并且满足公式(6):

|bk+1|-|bk|≥nthr(6)

把顶点移动到bk+1的方式有两种,一种是从bk中移动nleft个元素,根据公式(7):

另一种方式是从bk+2中移动nright个元素,根据公式(8):

最后把球坐标转换到笛卡尔坐标,得到嵌入鲁棒水印的三维模型。

步骤(3)利用双目标优化模型进行双重水印耦合处理。

设三维模型嵌入鲁棒水印后被修改的点为耦合点,没有被修改的点为非耦合点。

追求两个目标:一个是三维网格模型的形变尽可能小,另一个是脆弱水印的嵌入对于鲁棒水印的影响尽可能小。通过双目标优化模型选取边界距离小的顶点来嵌入脆弱水印。

如图4所示,在具体应用过程中对于待处理的三维网格模型载体遵循先嵌入鲁棒水印信息,然后在已嵌入鲁棒水印的基础上再嵌入脆弱水印的原则。采用这样的双重水印嵌入策略存在着鲁棒水印和脆弱水印耦合的现象,即后嵌入的脆弱水印信息会影响和覆盖已经嵌入的鲁棒水印信息,导致鲁棒水印信息被严重破坏。

如图1所示,根据半径有三个分组:ci-1组位于半径区间[ρi-2,ρi-1],组ci位于半径区间[ρi-1,ρi],组ci+1位于半径区间[ρi,ρi+1]。三个分组已嵌入的鲁棒水印信息分别为:由于要求ci-1组中点的数量多于ci组。故而在嵌入第一重水印时修改点p0将其从ci组移动到ci-1组,即图1中的p0',此模型修改是由鲁棒水印的嵌入而引起的。在后续嵌入脆弱水印时,如果需要进一步修改p0'并且改动存在很大的不确定性,则修改后p0'的位置可能会继续落在原来的分组ci-1,也可能落在其他分组,比如图1所示ci组中,此时两组中点的数量发生了改变。

为了进一步提高优化求解效率,在处理此双目标优化问题选取嵌入脆弱水印顶点时,提出基于边界距离(boundarydistance,bd)的方法选择脆弱水印的嵌入顶点。bd的主要思想是根据点在其分组的边界距离,如图1所示,点p1的边界距离为bd=|d1-d2|,bd值越小说明该点越居于分组的中心位置,当改动该点时越不容易引起对已嵌入的鲁棒水印信息的改变,故而采取的贪心策略是优先选择边界距离小的点。

步骤(4)对脆弱水印进行分块,每块长度为128位。在水印信息中每遇到连续的5个“1”字符就在后面插入一个“0”字符,分别对每个水印块进行md5加密,在每个水印块和密文信息头部插入字符序列“01111110”作为水印块和密文块开始的标志。

步骤(5)顶点v(x,y,z)的三个坐标分量在水印嵌入过程中有不同的作用:x分量用于标识顶点v(x,y,z)是否有嵌入水印,y分量用于嵌入水印信息,z分量用于嵌入密文信息。通过双目标优化模型选取可嵌入顶点v(x,y,z),获取顶点v(x,y,z)的一环邻域顶点,并对一环邻域顶点进行排序。计算一环邻域中顶点与一环邻域顶点排序后最小顶点的均差值,并通过调节相应顶点的坐标分量来改变顶点与一环邻域的几何关系,从而嵌入脆弱水印。

设三维模型表示为m(v,f),其中v是模型m所有顶点的集合,f表示模型m的所有三角面片的几何,即代表模型的拓扑结构。设水印信息为w=(w1,w2,...,wn),顶点在水印嵌入前后分别记为v(x,y,z)和v(x',y',z')。具体的过程如下:

步骤5.1.首先对三维模型的顶点进行排序:先按照x的大小排序,如果x的大小相等,则按y的大小排序,以此类推;通过对水印信息的分块和加密,可以得到136位的wr'和相同长度的pr'。然后,把(wi,pi)作为一个二元组分别嵌入到模型顶点坐标分量的y和z中。

步骤5.2.将第i个顶点vi(x,y,z)一环邻域中的顶点进行排序:先按照x的大小排序,如果x的大小相等,则按y的大小排序,以此类推;得到顶点vi(x,y,z)的一环邻域顶点序列vj(j=1,2,…),vj表示vi一环邻域中的顶点,排在序列最前面的顶点为v1,同时v1也是一环邻域中的最小顶点,标记为vm(xm,ym,zm)。定义是顶点vi一环邻域中的顶点与一环邻域顶点排序后最小顶点vm(xm,ym,zm)的均差值,如公式(9)所示:

其中,n(v)表示顶点vi(x,y,z)一环邻域中顶点的集合,|n(v)|表示一环邻域中顶点的数量。

步骤5.3.设定一个参数λ,对于顶点vi(x,y,z)记six和dix的值如公式(10)所示:

然后得到公式(11)的关系:

其中qix是两个浮点数的商然后再向下取整后的值,rix是两者求余后的结果,这里说明一下,因为rix是两个浮点数的余数,可以由公式(12)计算得到:

rix=dix-qix·six(12)

通过双重水印耦合处理的优化模型计算每个顶点的bd距离,需要保证选择的每个嵌入顶点的一环邻域是相互独立的,也就是说每个嵌入顶点的一环邻域上的点相互不重叠。对排序后的三维模型的所有顶点设置一个标记位。这种选择嵌入顶点的目的是为了防止在嵌入脆弱水印时对先前嵌入的脆弱水印信息造成影响。最后选择同时满足优化模型和一环邻域相互独立的顶点为脆弱水印嵌入顶点。

假设选择在顶点vi(x,y,z)中嵌入水印信息,则qix的值需要满足奇数的要求,如果qix是偶数,则修改di'x=dix+six。如果顶点vi(x,y,z)不是被选择的嵌入顶点,则qix的值必须是偶数,如果qix是奇数,同理修改di'x=dix+six,如公式(13)所示:

其中η=qix%2,dix=|x|,因此可以通过调整顶点vi(x,y,z)的x坐标分量来标记嵌入顶点,调整方式如公式(14)所示:

设定siy,siz,diy,diz的值如公式(15):

然后得到公式(16):

其中qiy和qiz是两个浮点数的商然后再向下取整后的值,riy和riz是两者求余后的结果。

二元组(wi,pi)是作为水印信息分别嵌入到顶点vi(x,y,z)的y和z坐标分量中,所以通过调整y和z的坐标值来嵌入水印。qiy和qiz如果调整为偶数表示嵌入0,调整为奇数表示嵌入1。为了使得qiy%2=wi和qiz%2=pi,通过嵌入水印的值来抖动调制距离diy和diz。具体操作如公式(17)和公式(18)所示:

因为diy=|y|,diz=|z|,所以可以通过修改顶点vi(x,y,z)的y和z坐标来调整diy和diz。

如图5和6所示,步骤(6)提取嵌入的水印,具体如下:

步骤6.1.首先计算模型的中心点o坐标,接着计算各顶点vi到模型中心o的距离ρi,通过最大半径ρmax和最小半径ρmin确定每个组的范围并对模型顶点进行分组。

步骤6.2.从第二个组开始每两个组形成一个二元组,比较二元组内两个组的顶点数目。前一个组比后一个组顶点数目多,则提取的水印信息是“1”,反之,提取的水印信息是“0”,遍历所有的二元组得到完整的鲁棒水印。

步骤6.3.计算模型顶点与其一环邻域的均差值,通过顶点坐标分量x与均差值的数量关系判断该顶点是否有嵌入水印,若该顶点是嵌入顶点,则利用y分量提取脆弱水印,利用z分量提取密文信息。

如图6所示,对于顶点vi'(x',y',z'),定义是顶点vi'一环邻域中的顶点与一环邻域顶点排序后最小顶点vm(xm,ym,zm)的均差值,如公式(19)所示:

对于在嵌入过程中使用的参数λ,记

可以得到关系:

对于qi'x的值是奇数的顶点,从该顶点的y分量中提取w'并从z分量中提取p'。对于水印嵌入过程中使用的参数λ,记:

可以得到如下关系:

最后提取出水印信息和加密信息:

w'=qi'y%2,p'=qi'z%2(24)

步骤6.4.将得到的水印信息w和密文信息p根据“01111110”进行分块,对每块水印信息进行md5加密得到新的密文信息p'。如果p!=p'说明该水印块被篡改,如果p=p',去掉嵌入时添加的“0”得到脆弱水印。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1