针对三维动画中关键帧数据的数字水印算法

李亚琴+方立刚
摘 要: 提出一种针对三维动画中关键帧数据的数字水印算法。算法中水印的嵌入对象是运动对象的运动坐标,将运动坐标形成一个方阵,将具有惟一性的水印信息嵌入到方阵的特征向量的特定元素中,形成含有水印的动画。当动画的版权出现争议时,利用提取算法从动画中提取出水印,以证明版权。通过仿真实验表明,该算法的隐蔽性、抗攻击性较好,可以推广到其他形式或用其他软件制作的CG作品中。
关键词: 数字水印; 动漫; 三维动画; 3D MAX; 关键帧; 运动坐标
中图分类号: TN915.08?34; TP391 文献标识码: A 文章编号: 1004?373X(2017)19?0052?04
Digital watermarking algorithm for key frame data in three?dimensional animation
LI Yaqin, FANG Ligang
(Jiangsu Province Support Software Engineering R&D Center for Modern Information Technology Application in Enterprises, Suzhou 215104, China)
Abstract: A digital watermarking algorithm for key frame data in 3D animation is put forward, whose embedded object is the motion coordinates of moving object. The motion coordinates are formed into a square matrix. The unique watermarking information is embedded into the specific element of feature vector of the square matrix to form the new animation with watermark. When the copyright of an animation is disputed, the extraction algorithm is used to extract the watermark in the animation to prove its copyright. The results of simulation experiments show this algorithm has perfect concealment and high anti?attacking performance, and can be applied to CG works in other forms or produced with other softwares.
Keywords: digital watermarking; anime; three?dimensional animation; 3D MAX; key frame; motion coordinate
0 引 言
随着网络技术、数字化CG技术的发展,创作的多媒体资源内容越来越丰富,形式越来越多样,凝聚的内涵越来越深刻,其在互联网上发布、共享、开放和传播的数量也越来越大。随之而来的是,非授权使用者下载拷贝、更名和肆意使用这些网络多媒体资源也变得越来越容易,由此产生的网络多媒体资源的版权保护问题变得越来越突出[1]。
数字水印技术作为一种有效可行的版权保护技术,在二维图像和视频的版权保护方面已经得到深入的研究和广泛的应用。近几年,由于三维图像和视频具有立体性和高信息量,三维媒体系统发展迅速,市场价值凸显,市场份额逐渐增加,由此衍生的三维图像和视频的版权保护问题逐渐成为研究的热点[2]。
迄今为止,关于数字媒体的版权保护已经相当成熟,针对文本、图像、音频、视频等的数字水印算法在算法性能上也相当成熟。针对多媒体资源版权保护的研究正上升到理论高度[3?4]。针对二维动画的数字水印方法中,比较突出的有文献[5],在Matlab软件中完成水印的嵌入和提取,主要思路是将水印图像嵌入到Flash动画文件的结束标签之后,这样可以提高水印的隐蔽性,也不会影响原始动画的观看效果。文献[6]按照字节把选定的水印信息嵌入到Flash动画中,算法支持高容量图像作为水印。文献[7]要求在读入Flash文件时以字节数组的形式,依据字节数组中每一字节中比特“1”的计数的奇偶性来进行水印嵌入和提取,采用數值异或和数值取反的算法将水印嵌入到Flash动画中。
基于3D MAX三维动画的水印方案中,文献[8]把整个动画渲染得出的所有帧叠加,把水印信息嵌入到后期合成阶段。目前,对3D MAX动画的水印算法研究不多,且针对关键帧的算法研究少之又少,所以针对3D MAX软件制作的动画,把水印隐形地嵌入到关键帧中,既不会破坏动画的观赏效果,又可以鉴定动画的版权。
本文提出一种应用于3D MAX三维动画的数字水印方法,主要是应用于3D MAX软件的关键帧中,首先分析一个运动物体的所有运动帧,记录所有运动帧上的物体坐标,其次将坐标形成一个矩阵,求得矩阵的特征向量,再将水印信息嵌入到特征向量中,最后利用新的嵌入水印的特征向量形成新的坐标,用新的坐标约束物体的位置,形成含有水印信息的三维动画。
1 3D MAX关键帧动画
3D MAX是当前流行的制作三维动画的主要软件之一,随着3D MAX软件功能的不断完善,CG软件制作平台纷纷由Unix工作站向基于网络的PC平台转移,CG制作成本大大降低,CG制作由电影的高端应用进入电视游戏等低端应用。
用3D MAX制作的三维动画可以在网络上发布共享,然而随之而来的侵权问题越来越严重,盗版者无视原创作者的心血,肆意下载抄袭原创作品,扰乱了文化市场的良好秩序,破坏了中国影视动漫市场的良好原创风气。所以,应用于3D MAX三维动画中的数字水印方法需要进一步研究,以有效保护3D MAX三维动画的知识产权。
2 提出针对三维动画关键帧数据的水印算法
3D MAX中可以制作多种类型的动画,其中一种是关键帧动画,在时间线上根据故事情节需要创建多个关键帧,在关键帧上修改对象的属性,从而完成动画效果。
本文选择把水印嵌入到三维动画的运动参数中,主要是嵌入到动画的运动坐标上。
嵌入位置选择的是运动坐标的最不重要位,也就是采用LSB算法,LSB算法作为数字水印技术最早也是最经典的算法,在数字水印概念首次被提出时就使用它构建水印嵌入和提取算法。LSB算法虽然鲁棒性不高,但具有算法简单、信息隐藏量大、对设备要求低的特点,是其他算法无可比拟的[9]。
2.1 水印嵌入算法
步骤1:将一个选定运动对象的全部坐标值或者部分选定坐标值形成一个矩阵,记为[X,][X]是一个[n×n]的方阵。
步骤2:求方阵[X]的特征值[V]和特征向量[D,V]是一个对角矩阵,[D]是一个[n×n]的方阵,记为:
[D=d11d12d13…d1nd21d22d23…d2n???dij?dn1dn2dn3…dnn]
式中:[i=1,2,…,n; j=1,2,…,n。]
步骤3:选取有效的水印信息,即选取能代表作者身份且惟一性的信息,记为[W,][W=[Wa]a=1,2,…,m,][m]是水印的长度。
步骤4:将水印信息[W]嵌入到特征向量[D]中。
Step1:依次提取[dij]的小数点后最后一位,记为[Ldij;]
Step2:依次将[Ldij]与[Wi]进行异或操作[L_d_ij⊕][W_i,]如果两个数值相同,则不嵌入水印,继续比较[L_d_ij+1,]重复Step2;如果数值不相同,即[Ldij⊕Wi=1,]则转入Step3比较大小;
Step3:比较大小,嵌入水印
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
{
{if[Wa=9] [Ldij=45];
else if[Ldij>Wa] [Ldij=Wa];
a++;
}
if(a>m) break;
}
}
2.2 水印提取算法
如果一部三維动画短片的版权出现争议,原创作者要捍卫自己的主权,可以对这部短片进行水印提取。水印提取算法是嵌入算法的逆过程。
步骤1:将一个选定对象的全部坐标值或者部分选定坐标值形成一个矩阵,记为[X,][X]是一个[n×n]的方阵。
步骤2:求方阵[X]的特征值[V]和特征向量[D,][V]是一个对角矩阵,[D]是一个[n×n]的方阵,记为:
[D=d′11d′12d′13…d′1nd′21d′22d′23…d′2n???d′ij?d′n1d′n2d′n3…d′nn]
式中:[i=1,2,…,n; j=1,2,…,n。]
步骤3:从特征向量[D]中提取水印。
Step1:依次提取[d′ij]的小数点后最后一位,记为[L′dij;]
Step2:依次将[L′dij]与[Wi]进行异或操作[L_d_ij′⊕W_i,]如果两个数值相同[Wi=L′dij,]则此位置嵌入了水印;如果数值不相同,即[L′dij⊕Wi=1,]则此位置未嵌入水印。提取出的水印记为[W,][W=W′a][a=1,2,…,m,][m]是水印的长度。
Step3:水印是9的特殊处理
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
{if([L′dij=5])
if([L′dij-1=4])
[W′a=9];
}
}
本文提出的嵌入算法,工作量主要是遍历三维动画中一个运动物体的所有运动坐标来嵌入水印,基本操作为赋值。设三维动画有[n]帧,每帧选择一个坐标,水印信息有[m]位,赋值次数为[m]次,其时间复杂度为[θm]。
本文提出的提取算法的工作量主要是遍历三维动画中一个运动物体的所有运动坐标来提取水印,基本操作为比较。设三维动画有[n]帧,每帧选择一个坐标,水印信息有[m]位,比较次数为[m]次,其时间复杂度为[θm]。
3 仿真实验
本文选择的三维动画短片,情节是一架卡通飞机在飞行过程中撞上立柱沉入大海,动画长度共有100帧,选择的运动对象是卡通飞机,飞机有100个坐标值,把100个[X]轴坐标值形成一个10×10的方阵,将水印信息利用本文提出的算法嵌入到方阵的特征向量中,本文实验选择的水印信号是二代身份证号,共有18位。本文实验全部在3D MAX 2014和Matlab R2011b中完成。
图1是仿真实验的GUI界面,然后在callback中编写代码完成实验。
将三维动画渲染成连续的静态图片来定量比较嵌入水印后视频的变化程度,原始动画和嵌入水印的动画都各有100帧,则渲染后两部动画都各有100张连续的静态图片,分别求对应位置的两幅图片的峰值信噪比,最后将100个峰值信噪比进行平均得出本算法的峰值信噪比PSNR为52.733 2。
下面选择动画的第37帧进行举例,图2是原始视频的第37帧,在嵌入水印时,由于第37帧的坐标符合嵌入判断条件,所以在37帧上嵌入了水印,图3是嵌入水印视频的第37帧,视觉上难以察觉视频的变化。
原始坐标矩阵[X]和嵌入水印的坐标矩阵[X]的相关系数为0.999 9,所以证明本文算法的水印隐蔽性很好。
三维动画中,一个物体的世界坐标有[X,Y,Z]三个轴向,所以本实验可以将其他水印信息嵌入到[Y]轴坐标方阵和[Z]轴坐标方阵中,实现多水印的嵌入。
对含有水印的动画进行攻击,以验证算法的性能,本文所做的攻击都是在3D MAX软件中对.max源文件进行攻击:
(1) 删除帧攻击
本文水印信号选择的是18位身份证号码,也就是一共修改了原动画中的18个坐标,即18%,如果动画长度更长,那么被修改的坐标的比例更小,被删除的几率也更小。将动画中的第37帧删除,提取水印时将只能提取出17位,提取水印和原始水印的相关系数是0.730 3。
(2) 修改帧攻击
对动画进行微改,对动画中飞行器的坐标进行微改,提取水印时仍然可以提取出18位,但是部分位的数据不准确,提取水印和原始水印的相关系数是0.850 9。
(3) 修改动画长度
将动画的长度由原来的100帧修改为120帧,由于只是长度增加,动画速度降低,所以对水印影响较小,提取水印和原始水印的相关系数是0.923 7。
(4) 压缩
如果使用格式工厂等软件对动画进行压缩以及格式转换,为了不改变动画的视觉效果,大多的压缩算法主要是针对动画背景和其他肉眼难以区别的元素,而对运动元素不会做过多处理,本文提出的算法将运动物体的运动坐标作为水印嵌入目标,所以具有很好的抗压缩性。
4 结 语
本文提出一种针对3D MAX软件制作的三维动画数字水印算法,旨在保护三维动画这种CG作品形式的版权,提出的嵌入算法和提取算法有效可行、简单方便,可以保护动漫企业或动漫相关专业学生的三维动画作品,而且本文的算法也可以推广到MAYA等其他软件制作的三维动画,或者其他形式的CG作品中,适用面较宽。但是本文算法在抵抗坐标整体平移攻击时,鲁棒性较差,今后将做进一步的研究。
参考文献
[1] 李旭东.用于網络多媒体资源版权保护的数字水印方法[J].情报杂志,2014,33(10):171?174.
[2] 田敏,刘琚,万文博,等.零视差点重组在三维图像数字水印中的应用[J].信号处理,2013,29(12):1684?1688.
[3] 樊宇.动漫作品中数字水印的添加与应用研究[J].数字技术与应用,2013(8):74.
[4] 邓伟,邓冠群,刘清堂.基于数字水印的教育资源版权保护[J].现代教育技术,2013,23(3):91?94.
[5] 蒋文娟,陆娜.基于Flash动画的数字水印研究及其Matlab实现[J].电脑知识与技术,2014,10(16):3891?3892.
[6] 邓华,司瑾,王光宇.基于Flash动画的数字水印设计方法[J].电脑编程技巧与维护,2011(14):99?100.
[7] 张晓彦,张晓明.基于Flash动画的信息隐藏算法[J].计算机工程,2010,36(1):181?183.
[8] 樊宇.三维动画变换域数字水印算法研究[J].计算机光盘软件与应用,2014(9):217?218.
[9] 王涛,李复旦,徐超,等.基于最低位有效算法和变化元素的矢量动画水印方案[J].计算机应用,2014,34(5):1304?1308.
[10] 马婷,高大鹏,陈农田.复合彩色数字水印图像抗攻击优化方法仿真[J].计算机仿真,2016,33(6):418?422.