利用三维动画骨骼数据的数字水印算法

2020-05-16 06:44李亚琴方立刚廖黎莉杨元峰
计算机应用与软件 2020年5期
关键词:数字水印三维动画骨骼

李亚琴 方立刚 廖黎莉,2 杨元峰

1(江苏省现代企业信息化应用支撑软件工程技术研发中心 江苏 苏州 215104)2(苏州大学 江苏 苏州 215104)

0 引 言

随着网络技术的不断发展,信息传播、信息共享越来越便利,除了使用电脑外,手机端处理文字、图片、音乐和视频等也很方便。但是,微信朋友圈、QQ空间、微博里的图片和视频可以任意下载转发,这样的便利性为版权保护带来了史无前例的压力。三维动画因其高仿真性和大信息量,应用越来越广泛,所以三维动画的版权保护也应受到高度重视。

数字水印技术在版权保护方面的功能强大,已经受到人们的广泛关注,其在文字、图片、音频、视频等方面的应用已相当成熟[1]。同样,数字水印技术也可应用到三维动画领域,利用优秀的算法来保护三维动画的版权。

迄今为止,关于数字水印技术用于保护动画版权已有若干研究。文献[2]选取动画的关键帧参数,利用DCT变换、轮廓波变换来嵌入水印,并辅助置乱技术提高算法的安全性。文献[3]从理论角度描述了动漫作品中数字水印的添加与应用。文献[4]提出一种数字水印方案,旨在保护SWF矢量动画的版权,水印的攻击类型比较独特。文献[5]提出了一种应用于三维动画变换域的算法,采用了离散小波变换和离散余弦变换。文献[6]提出一种针对二维Flash动画的数字水印算法,将灰度图像压缩置乱加密后嵌入到原始SWF格式的动画中。文献[7]将二值水印图像置乱后按照行列顺序嵌入到二维SWF格式动画的图形文件中。文献[8]利用MATLAB平台,将置乱后的水印图像嵌入二维swf文件的结束标签之后,不影响动画的正常播放。文献[9]提出的水印方案提取时不需要原始水印信息或密钥,以修改LSB的方法将水印编码后嵌入到二维动画的嵌入点序列中。文献[10]提出了一种针对三维动画材质参数的数字水印,将动画中的材质参数形成一个矩阵,利用嵌入算法将水印信息嵌入到材质参数中,算法隐蔽性非常好,且因为材质参数数量巨大,故算法嵌入量较大。

通过对现有技术和算法的分析,本文提出了一种用于保护三维动画版权的数字水印算法,将数字水印信息嵌入到三维动画中的骨骼数据中,由于骨骼创建后是在角色身体内部的,所以算法具有很好的隐蔽性。

1 三维动画中的骨骼数据

在三维动画中,按照动画情节需要,角色欲通过表情和肢体动作来表现动画主题,渲染动画气氛,就要用到骨骼技术来制作动画。为角色添加骨骼,调整骨骼的尺寸、角度和位置,并将骨骼绑定到角色。骨骼涉及的参数有高度、宽度、锥化度、鳍的大小、始端锥化、末端锥化等。一部三维动画中为角色添加若干段骨骼,每段骨骼都有自己的参数,在动画中,通过骨骼旋转和位置变化,来表现角色的动作。

2 水印嵌入算法

3D MAX中可以制作多种类型的动画,其中一种是骨骼动画,为角色创建骨骼,根据角色的特点和动作需要,修改骨骼的参数,并通过蒙皮把骨骼与角色结合起来,通过动态地调整骨骼动作,从而完成动画效果。

第一步 采集一部三维动画中的全部骨骼数据(如果骨骼数据量太大,采集部分有效的主要骨骼数据即可),组成一个矩阵,记为A。

第二步 对矩阵A进行Householder变换,得到矩阵H。

第三步 对矩阵H进行Schur分解,得到n阶酉矩阵U和上三角矩阵T。

第四步 选取有效的水印信息,建议选取能代表作者身份的有意义的信息作为水印,将水印信息转化为矩阵,记为W=[w1,w2,…,wn]。

第五步 将水印矩阵W=[w1,w2,…,wn]嵌入到矩阵T的n个特征值λ1,λ2,…,λn中。

嵌入过程:

(1) 通过算法找出λi(i=1,2,…,n)中的最小位,记为λmin;

int arr[n];

int i,min;

min=arr[0];

for(i=0;i

{

if (arr[i]

min=arr[i];

}

(2) 通过异或“⊕”运算,比较wi与λi min是否相等,若不相等,用wi代替λi min;

if(wi!=λi min)

λi min=wi;

依次执行上述嵌入步骤,将水印矩阵W=[w1,w2,…,wn]嵌入到矩阵T的n个特征值λ1,λ2,…,λn中,修改后的T记为T*。

第六步 利用矩阵U和修改后的矩阵T*,重组矩阵A,重组后得到的矩阵记为A*,A*=UT*U-1,A*是嵌入水印的骨骼数据矩阵。

第七步 利用A*中新的数据来修改动画中的骨骼参数,从而得到嵌入水印的动画。

3 水印提取算法

当三维动画的版权发生纠纷时,可以在目标动画中提取水印,提取步骤如下:

第一步 按照嵌入算法中的顺序和规则,收集动画中的骨骼数据,组成矩阵B。

比较步骤:

(3) 执行结束后,W*中存储的即是提取出的水印信息。

intw*[50],λ[50],λ*[50],i,j;

for (i=0;i<50;i++)

for (j=0;j<50;j++)

{if (λ[i][j]!=λ*[i][j])

w*[i]=λ*[i][j]}

第四步 将矩阵格式的W*还原成原始水印信息的格式,便于与原始水印比较。

4 算法性能分析

为了验证算法的性能,本文做了大量的实验,在此列举一例。实验选择一部恐龙大战毒甲虫的三维动画短片,动画共有800帧。动画中有恐龙和毒甲虫两个角色,共有174段骨骼,每段骨骼有自己的参数,收集所有有效骨骼参数组成一个64×64的二维矩阵。实验在3DS MAX 2014、MATLAB 2011b和Visual C++ 6.0环境下完成。

按照本文提出的嵌入算法,将作者的18位二代身份证号码嵌入动画中,随后对含有水印信息的动画进行攻击,以验证算法的可靠性、有效性等性能。图1是在MATLAB中设计的实验的GUI界面,然后在相应组件和按钮的callback中编写代码完成实验,得到实验结果。

图1 实验的GUI界面

水印嵌入后,由于骨骼是隐藏在角色内部的,所以肉眼看不出区别。为了通过数据来定量地比较嵌入水印前后视频的变化,将3DS MAX动画的所有帧渲染成连续的静态图片,原始动画和嵌入水印的动画各有225帧,以渲染连续静帧图片的形式渲染后,两部动画都各生成225幅连续的图片,每一幅图片对应一帧画面。将对应位置的两幅图片分别求峰值信噪比,最后将225个峰值信噪比的数据平均,得出本文算法的峰值信噪比PSNR为44.925 4。结果证明本文算法的水印隐蔽性较好,不会影响动画的观赏效果。本文PSNR值与其他文献的比较结果如表1所示。

表1 本文方法PSNR值与其他文献方法的比较

原始骨骼数据矩阵A和嵌入水印信息后的骨骼数据矩阵A*的相关系数为0.996 2,再次证明本文算法具有很好的水印透明性。

图2为原始动画中第0帧、第60帧、第120帧、第180帧的场景。

(a) 第0帧 (b) 第60帧

(c) 第120帧 (d) 第180帧图2 原始图像

图3是水印动画中第0帧、第60帧、第120帧、第180帧的场景。

(a) 第0帧 (b) 第60帧

(c) 第120帧 (d) 第180帧图3 水印动画

由图2、图3可以看出,水印信息嵌入在角色的骨骼中,骨骼又被包裹在角色的身体内部,所以肉眼无法察觉水印,水印的隐蔽性非常好。三维动画在嵌入水印后,几乎不影响观看效果。

对含有水印信息的三维动画实施攻击,攻击类型选择的是针对三维动画特点的攻击。

(1) 增减骨骼数量。本动画中共有174段骨骼,实验中,通过移除骨骼、连接骨骼的方式将骨骼数量最低减少到170,骨骼参数组成63×63的矩阵,从中提取水印,提取水印与原始水印的相关系数为0.945 6。由于过多减少骨骼会影响角色的动作,破坏动画的效果,所以攻击者不能大幅度地减少骨骼,故此相关系数几乎是最差情况了。同样,通过创建骨骼、细化骨骼的方式将骨骼数量最高增加到178,骨骼参数组成65×65的矩阵,从中提取水印,提取水印与原始水印的相关系数为0.953 9。表2为增减骨骼数量,提取水印与原始水印的相关系数。

表2 增减骨骼数量,提取水印与原始水印的相关系数

(2) 改变骨骼参数。实验中,通过调整工具修改部分骨骼的参数。由于骨骼参数调整过多,在动画中会出现露骨等穿帮镜头,所以攻击者不能大肆改变骨骼数据,本次最多修改了动画中8段骨骼的部分数据,提取水印与原始水印的相关系数为0.902 4。表3为修改骨骼参数的数量,提取水印与原始水印的相关系数。

表3 修改骨骼参数的数量,提取水印与原始水印的相关系数

续表3

(3) 文件压缩。使用格式工厂、狸窝视频转换器、万能视频格式转换器等软件对动画进行压缩或者文件格式转换。为了不影响动画的视觉效果,大多的压缩算法主要选择动画背景和其他肉眼难区别的非重要元素[9],而对于主要的运动元素不会做过多处理,本文算法将运动物体的骨骼参数作为水印嵌入载体,所以抗压缩能力较强。并且算法是将水印嵌入到角色的骨骼数据中,输出动画文件被压缩时对源文件中的角色骨骼不会造成影响。

(4) 修改动画播放时间。同样的动画情节,增加或减少动画的播放时间仅会导致动画播放速度加快或降低,所以对水印影响较小。表4为增加或减少动画的播放时间,提取水印与原始水印的相关系数。

表4 增加或减少动画的播放时间,提取水印与原始水印的相关系数

(5) 二次水印。二次水印即在同一数据载体中,在已经嵌入水印的基础上,再次加入另外的水印信息。二次水印攻击会使水印信息之间互相影响,导致无法正常检测出其中一个或多个水印。

在动画中,利用嵌入算法再次嵌入一个不同的身份证号码,然后利用提取算法提取出2个水印,通过比较,提取水印与原始水印的相关系数为0.869 4。

5 结 语

3D电影是目前喜闻乐见的一种电影形式,三维动画的应用范围也随之越来越广。需要一种有效的版权保护技术来维护三维动画的知识产权,保护动漫作品的版权,维护动漫公司的经济利益,形成一种良好的原创氛围。本文提出一种利用三维动画骨骼数据的数字水印算法,把骨骼数据作为嵌入载体,也可以选择骨骼权重参数等,具有很好的延伸性。但算法性能如鲁棒性等方面还需改进,下一步将把算法应用到动漫专业学生作品中做进一步深入研究。

猜你喜欢
数字水印三维动画骨骼
艺术与技术相结合的三维动画教学研究
针对高职高专3dsMax三维动画教学实例类教材编写的研究
3D打印骨骼指日可待
基于DCT算法的视频数字水印的研究与实现
数字水印技术及其在电力系统中的应用
一种基于三维小波变换的鲁棒视频水印方案
基于分块DWT和SVD的鲁棒性数字水印算法
浅谈中国三维动画的发展进程
骨骼是如何生长的
神奇的骨骼