基于矢量长度比的三维网格模型零水印算法①
2022-08-04张国有王江帆
张国有,王江帆,李 婧
(太原科技大学 计算机科学与技术学院,太原 030024)
随着多媒体技术和3D 打印技术的快速发展,三维模型[1]已广泛应用于医学影像、工业制造和游戏等领域. 此外,在文物保护、化学和生物等领域,三维模型的应用也越来越普遍. 它成为继图像、视频、音频3 大主流数据类型之后的数据类型. 但在使用和传播这些数字产品的同时盗版和侵权等问题也随之而来,使得如何安全有效的保护数字产品的版权成为学者研究的一个重点问题.
数字水印作为信息隐藏的一个重要分支,在数字产品的版权保护方面发挥了重要作用. 1997 年,在ACM 国际会议上Ohbuchi 等[2]首次提出将数字水印技术应用到三维模型,为三维数字产品的版权保护提供了新思路. 此后,越来越多的学者开始研究三维网格模型数字水印技术.
根据水印算法是否修改原始模型的数据,可将其分为嵌入式水印算法[3–7]和零水印算法[8–10]. 大部分水印算法为嵌入式水印算法,它通过对模型进行细微的修改来嵌入水印信息. Cho 等[3]提出了一种改变所有顶点与质心之间欧氏距离分布的统计水印方法. 该方法能够很好地抵抗相似变换和顶点重排序这种无失真的攻击. 之后,Bors 等[11]对基于统计的水印进行了扩展,通过Levenberg-Marquardt 优化方案进行最优保存,使目标表面畸变最小化. 该方案对常见的网格攻击具有很强的鲁棒性,同时保证了曲面的最小失真.为了增强鲁棒性,Liu 等[12]提出了一种对三角网格模型进行多分辨率曲面自适应参数化的鲁棒水印算法.Liu 等将模型的所有顶点分为两组. 一个是粗糙层,它可以建立一个不变量空间. 二是作为水印嵌入特征的精细层次. 该算法具有很强的隐蔽性,对常见攻击具有很强的鲁棒性. 但这些算法对裁剪攻击的鲁棒性相对较弱,而且嵌入式水印算法不可避免地要修改原始模型信息,无法应用到对数据精度要求较高的模型;并且嵌入式水印算法嵌入水印的强度难以控制,若嵌入强度过低,算法的鲁棒性较差,嵌入强度过高,又会影响模型的视觉效果. 所以,如何平衡水印的透明性与鲁棒性之间的矛盾是嵌入式水印算法研究的一个难点问题.
为解决上述问题,温泉等[13]提出了零水印算法,零水印算法不需要对原始模型进行修改,而是利用模型本身特征构造水印信息,并将水印信息在知识产权(intellectual property rights,IPR)信息数据库中注册; 当需要对版权进行验证时,再利用零水印算法构造水印信息,并与IPR 数据库中的水印信息进行对比,以此验证模型所有者. 零水印算法并没有将信息嵌入到模型中,从而避免了透明性和鲁棒性之间的矛盾.
目前,在图像方面关于零水印算法的研究[14,15]比较多,由于三维模型数据的不规则性,并且表示方法有多种,使得构造稳定的水印存在一定困难,三维模型零水印算法较少. 徐涛等[16]利用网格空域特征的提取和变换域二次能量集中构造水印信息. 王新宇[17]提出一种三维网格模型空域零水印算法,该算法利用模型顶点范数以及该顶点的邻域顶点范数构造水印信息. 这两种算法对剪切攻击的抵抗能力都比较弱. 为了使算法能够在抵抗旋转、平移、缩放等常见攻击的同时也能够抵抗网格简化和剪切攻击,本文提出一种基于矢量长度比的零水印算法.
1 算法思想
由于零水印算法不改变原始模型信息,而是利用模型自身属性造水印信息,构造信息的鲁棒性直接影响算法的鲁棒性,因此,构造鲁棒的特征对零水印算法至关重要[18]. 顶点范数是三维模型的一种全局特征,它能够反映模型的整体形状. 一般对模型进行攻击的时候不会改变模型的全局特征,否则模型的视觉效果就破坏,从而失去使用价值. 但仅利用这一特征构造水印,在水印检测阶段,需要对模型进行重定位和重采样操作,否则就无法提取水印,重定位是为了使受到几何攻击的模型恢复到原始位置,重采样是为了使拓扑结构发生改变的模型恢复原样. 将顶点范数和顶点领域以及比例相结合,就可以避免对模型进行重定位和重采样. 若直接选择模型质心作为构造水印的基元,算法容易受到剪切攻击的影响,为了抵抗剪切攻击,可以对模型分块[19],然后用块质心代替模型质心,接着计算均值,弱化受攻击后模型顶点改变带来的影响.
三维网格模型由顶点集合和这些顶点之间的连接组成. 为了避免顶点均匀缩放、平移、旋转等相似变换的影响,可以对三维模型进行预处理,即将顶点的笛卡尔坐标转换为球坐标,然后依据需要构造的水印长度以及经度分量对顶点进行分块,对分块中的每个顶点计算出该顶点到块质心的距离和邻域顶点到块质心的平均距离,接着计算这两个长度之比,利用长度之比和密钥构造水印信息. 水印构造的流程如图1所示.
图1 水印构造流程图
2 基于长度比的零水印算法
三维网格模型可以表示为M={V,E},其中,V={Vi∈R3,02.1 模型预处理
为了更方便地对三维模型进行零水印的构造,需要对三维模型进行预处理,将三维模型的直角坐标系转换为球面坐标系,并根据经度分量对模型分块. 预处理步骤如下.
(1)为了实现三维模型坐标转换,需要计算三维模型质心坐标,由于三维模型受到攻击后可能造成模型的顶点分布不均匀,使模型质心改变,以三角形面积为权重的方法可以弱化这种影响,获得较稳健的质心. 因此,本文算法采用基于面积矩的方法计算三维模型的质心,计算公式如式(1).
其中,Vc={xc,yc,zc}表示三维模型质心坐标.A(Vi)表示Vi一环邻域内三角形的面积.
(2)平移模型即将三维模型质心与直角坐标系原点重合,计算公式如式(2).
(3)接着转换为球面坐标系,计算公式如式(3).
其中,(ρi,θi,ϕi)表示顶点Vi的球面坐标,ρi∈R,θi∈[0,2π],ϕi∈[0,π].
(4)利用模型现有的条件经度分量对模型进行分块. 根据经度坐标分量将模型等分为块,然后根据θ的取值将模型的顶点进行分块,建立顶点与θ之间的映射关系. 第i个顶点分块的表示如式(4)所示.
其中,θi,j表示顶点Vi,j的球面坐标经度分量,Nθ,i表示顶点分区Bθ,i中的顶点数目.
(5)计算每个分块中的质心Vc1,计算方法如式(1).
2.2 零水印构造
零水印的构造过程如下.
(1)对分块中的每个顶点进行以下操作.
1)计算每个顶点Vi与块质心Vc1之间的长度Dcl.
2)计算Vi一环邻域中的所有顶点与块质心之间的长度并求均值
3)计算这两个长度的比值Qi,计算公式如式(5).
(3)构建顶点的状态序列Si={S0,S1,···,SN−1},其中顶点序列如式(7).
(4)统计每个分块中0 和1 的数目,若1 的个数大于0 的个数,则本块构造的水印为1,否则为0,最后得出水印序列Si.
(5)将版权信息转换成与构造的水印长度相同的密钥L={L0,L1,···,LN−1}.
(6)将密钥与生成的水印序列进行异或,按式(8)生成最终的水印序列Wi={W0,W1,···,WN−1}.
(7)将生成的零水印信息和密钥交给知识产权信息数据库IPR 进行保存,当发生版权纠纷时根据数据库中的水印信息和密钥就可以确定模型的所有者.
2.3 零水印检测
当无法确定三维模型的版权所有者时,就需要用零水印检测算法对模型进行版权验证. 零水印是一种特殊的盲水印,检测时不需要原始模型的参与. 它的检测过程与构造过程相同,结合密钥,重复水印的构造过程,最终得到水印序列Wd,然后将Wd与数据库中的水印序列W进行比较,判定模型的版权归属.
在使用模型的时候可能对模型进行有意或无意的操作,从而使模型发生改变,使构造出的水印信息与原始水印信息不一致,难以判断水印是否存在,因此为了评价算法的鲁棒性,需要一个衡量指标,即相关性系数Corr,来判断待检测水印与原始水印之间的相关性. 计算方法如式(9)所示.
其中,wdi为待检测模型的第i位水印,为待检测水印的平均值,woi为原始水印的第i位水印,为原始水印的平均值,N为水印长度.Corr值越大说明水印越相似. 一般在验证版权使会给定一个阈值,本文参考文献[12] 的方法将阈值设为0.5,若相关性系数大于0.5 就说明受到了侵权,否则认为待检测模型中没有原始水印信息.
3 实验分析与比较
本文算法是使用Visual Studio 2013 开发平台以及OpenGL 库来实现的. 选取了bunny、dragon、rabbit、venus 这4 个具有代表性的模型进行相关实验. 模型的数据信息如表1 所示,在实验中,水印长度W=64.
表1 三维模型数据信息
3.1 鲁棒性实验
为了验证零水印算法的鲁棒性,本文使用LIRIS实验室提供的攻击软件和MeshLab 软件对三维模型分别进行相似变换、随机噪声、平滑攻击、网格简化等多种类型的攻击,对攻击后的模型重新构造水印序列,然后与原始模型水印序列进行比较,通过计算相关性系数来衡量算法的鲁棒性,相关性系数的计算如式(9)所示. 图2 为原始三维模型.
图2 原始模型
(1)相似变换
因为本文使用的是三维模型顶点的矢量长度之比这一几何变量,它不受平移,旋转和均匀缩放的影响,而且在构造水印之前已经对模型进行了预处理,所以能够很好地抵抗相似变换的攻击,即在受到这类攻击后的模型构造出来的水印与原始水印完全相同,实验结果如表2 所示.
表2 相似变换的相关系数结果
(2)平滑攻击
平滑攻击是对模型的顶点进行轻微扰动,使模型表面变光滑,它会轻微改变模型质心以及模型到块质心的距离,导致水印错误,但该攻击不会改变模型的整体形状,本文选择的矢量长度比能够反应模型整体形状,因此对该类攻击具有较高的容忍性,并且当该类攻击造成模型顶点发生剧烈变化,构造的水印严重错误时,模型必然已失去使用价值,无须再对模型进行保护.分别对模型平滑迭代10 次、20 次和30 次,部分攻击后的venus 模型如图3 所示,实验结果如表3 所示,实验表明,攻击后的模型构造出的水印信息仍与原始水印信息具有较高的相关性,即水印算法对平滑攻击具有鲁棒性.
图3 平滑攻击后的venus 模型
表3 平滑攻击的相关系数结果
(3)随机噪声
针对噪声攻击,分别对三维模型的每个顶点添加一个0.05%、0.1%、0.2%的随机噪声,图4 显示的是不同强度噪声攻击后的bunny 模型,噪声攻击测试的实验结果如表4 所示. 噪声攻击对三维模型影响比较大,容易造成模型表面失真,从而使模型的视觉效果变差. 它与平滑攻击类似都属于信号处理攻击,所以选取矢量长度比这一特征也能够抵抗该类攻击. 实验结果显示,当噪声攻击达到0.2%时,本文的算法对噪声攻击具有鲁棒性.
图4 噪声攻击后的模型
表4 噪声攻击的相关系数结果
(4)简化攻击
简化攻击是在保持模型整体形状的前提下,减少模型点、线、面的个数,这种减少是近乎等比例的减少,本文选择的矢量长度的向量比,是模型的全局几何特征,能够很好地抵抗简化攻击,并且在对模型进行预处理时使用面积矩计算模型的质心,能够弱化简化攻击后模型顶点分布不均带来的影响,进而加强对抗简化攻击的能力. 分别将模型的顶点数目简化30%、50%、70%,简化后的部分dragon 模型如图5 所示,实验结果如表5 所示,实验表明,随着模型简化率的增高,受攻击后的模型构造出的水印信息与原始水印信息仍然具有较高的相关性,即使简化率高达80%,本算法仍具有较好的鲁棒性.
图5 简化攻击后的dragon 模型
表5 简化攻击的相关系数结果
(5)剪切攻击
剪切攻击是将模型的部分点和面的信息切除,从而使模型的整体形状改变,丢失的是局部信息,并且随着剪切比例的升高,模型的质心会发生偏移,使得对模型质心依赖较大的算法难以提取出正确的水印信息.分别选取三维模型的3 个不同位置对三维模型进行10%、20%、30%的剪切,剪切后的部分bunny 模型如图6 所示,实验结果如表6 所示. 本文算法选取分块后的块质心并取均值,能够减小对模型质心的依赖,从而较好的抵抗剪切攻击,但随着剪切比例的升高,会对模型的分块产生较大的影响,所以本算法只能够抵抗较低比例的剪切攻击. 实验结果显示,当模型被剪切30%时,本文算法仍具有较高的相关性系数,能很好地提取出水印信息. 因此,本文算法在非对称模型失去保护价值之前对剪切攻击仍具有鲁棒性.
表6 剪切攻击的相关系数结果
图6 剪切攻击后的bunny 模型
3.2 相关工作比较
为了更好地验证本文算法的鲁棒性,本小节将本文的实验结果与比较经典的水印算法的实验结果进行了对比. bunny 模型的对比实验结果如图7–图10 所示.表7 为5 种水印算法鲁棒性比较.
表7 5 种水印算法的鲁棒性比较 (%)
图7 噪声攻击
图10 剪切攻击
对于相似变换,本文使用矢量长度之比这一变量,它不受旋转、平移和缩放攻击的影响,所以能很好的抵抗这类攻击,而对于文献[12]的算法是利用网格的低层分辨率建立不变空间,当模型受到攻击后,这些点顶点可能发生轻微扰动,所以该算法受旋转缩放攻击的影响.
图8 平滑攻击
如图7–图9 所示,本文算法在抵抗网格简化和剪切攻击方面的优势比较明显. 由于本文算法在对模型进行预处理时使用面积矩计算模型的中心,并且在实现过程中加入了顶点与顶点邻域之间的比值,使算法对抗不同程度的采样能力加强,所以本文算法对简化攻击具有很强的鲁棒性. 相对于其他算法,本文算法对模型中心的依赖更小,所以能较好地抵抗剪切攻击. 对于噪声和平滑攻击,本文算法在模型失去使用价值之前,检测出的阈值大于无法辨别模型归属的阈值0.5,所以本文算法也能够抵抗噪声和平滑攻击. 总体来说,本文提出的算法不需要考虑透明性问题,能够抵抗常见类型的攻击,并且对简化攻击有很强的鲁棒性,也能够抵抗一定比例的剪切攻击.
图9 简化攻击
4 结论
本文提出了一种基于矢量长度比的三维网格模型零水印算法,该算法首先对三维网格模型进行分块并计算每块质心,用块质心代替模型质心,利用顶点到块质心距离与邻域顶点到块质心的平均距离构造出鲁棒的水印序列. 实验结果表明本算法能够抵抗相似变换、噪声、平滑、剪切等常见的攻击,并且在简化攻击和剪切攻击方面的优势比较突出. 本文算法可应用于对精度要求较高的三维模型中. 下一步计划是加强算法抵抗攻击的种类以及它们的联合攻击,进一步加强算法的鲁棒性.