李亞琴 方立剛 廖黎莉,2 楊元峰
1(江蘇省現(xiàn)代企業(yè)信息化應用支撐軟件工程技術研發(fā)中心 江蘇 蘇州 215104)2(蘇州大學 江蘇 蘇州 215104)
跟隨著網(wǎng)絡技術迅猛發(fā)展的腳步,手機等移動終端可以輕易獲取網(wǎng)絡信息,導致對信息非法訪問、未授權操作、惡意攻擊等侵權行為日趨頻繁[1]。對數(shù)字媒體版權所有者來說,反盜版維權是保護公司或自身利益的一個關鍵點[2]。數(shù)字水印技術是將一些標識信息(即數(shù)字水印)嵌入數(shù)字載體當中(包括多媒體、文檔、圖像、軟件、音頻、視頻等)[3],且不影響原載體的使用價值,也不容易被檢測和再次修改[4],但可以被產生方通過密鑰等提取出來[5]。數(shù)字動畫因其畫面形象生動、高信息量、虛擬仿真特性[6],是最容易被大眾接受的一種媒體形式。因此,保護數(shù)字動畫的版權顯得尤為重要,針對動畫的數(shù)字水印嵌入和提取技術逐漸成為了研究的熱點問題[7]。
目前,在數(shù)字水印領域,水印的可檢測性、信息載體的容量和水印對攻擊的魯棒性等成為評判一個水印算法的重要指標[8]。文獻[4,8]提出基于壓縮感知采樣理論和模糊理論的圖像數(shù)字水印算法;文獻[9-10]分別提出基于Contourlet變換、Curvelet變換和奇異值分解的水印嵌入算法;文獻[1]引入μ律技術,將小波分解與對數(shù)量化索引調制結合,提出基于DWT域的對數(shù)量化索引調制數(shù)字水印算法;文獻[7]提出一種利用能量差分方法將數(shù)字水印信息嵌入到DCT變換后的視頻幀信息中的數(shù)字視頻水印算法;文獻[11]提出一種基于雙樹復數(shù)小波變換和多元BKF分布理論的新的統(tǒng)計模型數(shù)字音頻盲水印算法;文獻[12-13]提出基于提升小波變換的水印算法。這些都是優(yōu)秀的水印算法,水印的信息量和抗攻擊性都很卓越,但是目前針對三維動畫的水印算法少之又少。
針對三維動畫的版權保護,提出了一種基于Jordan變換和SVD分解的算法。將三維動畫的骨骼權重參數(shù)作為水印的嵌入載體,將動畫中的權重參數(shù)形成一個矩陣。對矩陣實施Jordan變換和SVD分解,分解后將每個分塊的奇異值形成最大奇異值特征矩陣。根據(jù)特征矩陣的值確定水印的嵌入位置,將具有意義的水印信息嵌入到確定的位置上,從而將水印信息嵌入到動畫的權重參數(shù)中,形成含有水印的三維動畫,實現(xiàn)利用水印技術保護動畫的版權。
定理1設A∈Cn×n,則存在可逆矩陣T∈Cn×n,使得:
A=TJT-1
(1)
式中:
J稱為A的若爾當標準形,Jik為A的若爾當塊[14]。
(2)
式中:Σ=diag(σ1,σ2,…,σr),而σi(i=1,2,…,r)為A的正奇異值,稱下式為A的奇異值分解[15]。
(3)
三維動畫中的權重,就是控制骨骼及面部Blendshape的影響范圍和控制程度。一部三維角色動畫中,角色要完成動作或表情,必須要為角色創(chuàng)建骨骼并將骨骼綁定到角色,骨骼控制模型運動。為了避免出現(xiàn)肌肉扭曲的現(xiàn)象,必須要對每一根骨骼設置合理的權重數(shù)據(jù),即要給予每個關節(jié)所驅動的皮膚具有最合適的權重值,最終使肌肉運動符合運動規(guī)律,避免“肌肉穿插”等現(xiàn)象。一個簡單的角色至少有幾十根骨骼,動作復雜且細膩的角色,骨骼數(shù)量會達到200根,同一根骨骼在不同的動作下權重也會發(fā)生變化,所以,骨骼的權重數(shù)據(jù)是很龐大的,非常適合作為載體嵌入數(shù)字水印信息。
第一步:收集一部三維動畫中的骨骼權重數(shù)據(jù)(若動畫中骨骼數(shù)量龐大,可收集重要角色的骨骼權重數(shù)據(jù)),去除冗余元素后形成矩陣,記為X。
第二步:對矩陣X進行Jordan變換,得到矩陣T、J;[T,J]=jordan(X),計算jordan形式J和相似變換T,矩陣T包含X的廣義特征向量,T/X×T=J。
第三步:將矩陣T分成若干個k×k的小塊矩陣,記為Vk×k。
第四步:依次對每個小塊矩陣Vk×k進行奇異值分解(SVD),[U,S,P]=SVD(Vk×k)產生一個與V相同維度的對角矩陣,以非負對角元素的遞減順序,以及酉矩陣U和P,使Vk×k=U×P′。
第五步:確定嵌入位置:
(4)
(2) 利用每個塊最大奇異值Pi,j與整體最大奇異值的均值AVE的關系構造特征矩陣S。
第六步:將代表作者版權的水印信息嵌入到三維動畫中:
(1) 確定待嵌入的水印信息,保留有效元素,進行隨機置亂后記為W;
(2) 根據(jù)特征矩陣S中的元素Si,j的值決定嵌入的位置。
式中:α是密鑰,數(shù)值需要通過實驗得出折衷后的最佳數(shù)值。
第八步:利用新的權重數(shù)據(jù)來重新設置動畫中相應骨骼的權重值,到此,三維動畫中已經(jīng)嵌入了數(shù)字水印,嵌入載體是骨骼的權重數(shù)據(jù)。
當三維動畫的版權發(fā)生爭議時,可以提取動畫中的水印,以判定動畫的版權歸屬。
水印的提取過程,主要是嵌入算法的逆過程,具體步驟如下:
第一步:收集爭議三維動畫中的骨骼權重數(shù)據(jù)(或按照嵌入算法收集特定角色的骨骼權重參數(shù)),形成矩陣,記為X*;
第二步:對矩陣X*進行Jordan變換,得到矩陣T*、J*;
第五步:找出水印的嵌入位置:
(5)
第六步:利用密鑰α提取出水印。
第七步:將提取出的水印形成矩陣,記為W*。
本文選擇的三維動畫短片,情節(jié)是以宣傳愛與友善為目的的體現(xiàn)社會主義核心價值觀的動畫《遺失的善良》。動畫長度6分06秒,動畫中共有5個角色,分別是主人公小男孩、一只豬、兩只雞和農場主,將場景中的人物骨骼權重數(shù)據(jù)形成一個128×128的方陣,將水印信息利用本文提出的算法嵌入到方陣的奇異值分解參數(shù)中,通過大量實驗選擇最優(yōu)參數(shù)值和最合適的嵌入位置。本文實驗全部在MAYA 2015和MATLAB R2011b中完成。
圖1是仿真實驗的GUI界面,然后在callback中編寫代碼完成實驗。
圖1 仿真實驗的GUI界面
一部三維角色動畫,骨骼的權重數(shù)據(jù)非常龐大,說明水印的嵌入載體巨大,可以嵌入最能代表作者身份的身份證號碼,也可以嵌入一幅能代表版權的圖片,圖2是本文實驗嵌入的水印信息圖,圖3是置亂后的水印信息圖,圖4是提取出并還原后的水印信息圖。根據(jù)多次實驗,確定密鑰α的值為0.15。
圖2 原始水印信息
圖3 置亂后的水印信息
圖4 還原后的水印信息
本文算法將水印嵌入到骨骼的蒙皮權重數(shù)據(jù)中,骨骼是創(chuàng)建在角色模型內部的,播放動畫時,觀眾只能看到模型的表演,而看不到隱藏在模型內部的骨骼。故嵌入水印后,肉眼是無法察覺的。本文算法的峰值信噪比PSNR為49.652 7。
(1) 噪聲攻擊 本文實驗對三維動畫短片進行了高斯白噪聲和椒鹽噪聲的攻擊,由于水印信息是嵌入在動畫角色的骨骼權重數(shù)據(jù)中,不是在角色本身或是動畫背景中,所以不受噪聲攻擊的影響,提取水印和原始水印的相關系數(shù)是1.000 0。
(2) 縮放動畫長度 實驗所用動畫的長度為6分06秒,對動畫實施縮放動畫長度的攻擊。首先減慢動畫的播放速度,由每秒播放25幀減慢為每秒播放20幀,動畫長度增加到7分37秒。由于動畫長度的改變只是播放速度的變化,對角色本身沒有影響,所以提取水印與原始水印的相關系數(shù)是1.000 0。其次加快動畫的播放速度,由每秒播放25幀改為每秒播放30幀,動畫長度減少到5分05秒。同樣不影響水印信息的提取,提取水印與原始水印的相關系數(shù)是1.000 0。
(3) 增減動畫幀數(shù) 動畫共有9 150幀,對動畫實施增減幀數(shù)的攻擊。首先減少動畫的幀數(shù),隨機刪除12幀,由于畫面具有連貫性,根據(jù)視覺暫存效應形成動畫,所以,過多地刪除幀數(shù)會影響動畫的視覺效果,攻擊者不能大幅度地刪除幀。實驗刪除12幀已經(jīng)是最大程度了,按照PAL電視制式每秒播放25幀的速率,12幀已接近半秒鐘,對動畫的視覺效果有明顯影響。由于水印是嵌入在權重參數(shù)中,刪除動畫幀不會影響到角色本身,故不會影響角色的骨骼和骨骼數(shù)據(jù),提取水印與原始水印的相關系數(shù)是1.000 0。通過復制幀、插入幀等方式增加動畫幀數(shù)也是同樣的情況。
(4) 修改骨骼的權重數(shù)據(jù) 修改骨骼的權重數(shù)據(jù),可能會將水印信息刪除或修改。實驗修改了部分骨骼的權重,圖5是Maya 2015中繪制蒙皮權重的工具,圖6是動畫中主要角色小男孩的骨骼圖。
圖5 繪制蒙皮權重工具
圖6 角色的骨骼圖
實驗修改了部分骨骼的蒙皮權重數(shù)據(jù),修改后,從動畫中按照提取算法提取出水印,計算提取水印與原始水印的相關系數(shù),如表1所示。
表1 提取水印與原始水印的相關系數(shù)
修改骨骼的蒙皮權重會影響骨骼對肌肉的控制,所以過多的修改蒙皮權重,動畫人物會出現(xiàn)扭曲變形的情況,影響動畫視覺效果,故攻擊者不能肆意修改骨骼蒙皮權重,表1中的修改十處骨骼已屬于極端情況。
(5) 刪除骨骼 刪除骨骼雖然不會影響角色的外觀,但是同樣會影響被嵌入的水印。如果刪除的骨骼正是水印的嵌入位置之一,那么骨骼刪除后,此位置無法提取出水印。但是,過多地刪除骨骼,角色無法完成預期的動作或表情,影響預期劇本和分鏡頭的實現(xiàn)從而導致動畫視覺效果受損。因此,盜版者不能大量肆意地刪除骨骼,且刪除部分骨骼后,要重新對模型進行蒙皮和刷權重,工作量巨大。表2是刪除骨骼位置和數(shù)量的情況,以及篡改后提取水印與原始水印的相關系數(shù)。
表2 刪除骨骼位置和數(shù)量的情況
從以上的實驗結果可以得出:本文算法不僅具有較好的水印嵌入透明性,使得水印嵌入后具有更好的保密性,而且能夠抵抗大部分常規(guī)攻擊及針對三維動畫的特殊攻擊,較好地解決了魯棒性與不可感知性之間的平衡問題。
本文算法將數(shù)字水印技術應用到三維動畫中,利用數(shù)字水印技術在版權保護方面的優(yōu)勢來保護三維動畫的內容和知識產權,拓寬了數(shù)字水印技術的應用范圍,也保護了文化創(chuàng)意作品的版權,推行原創(chuàng)的氛圍,具有創(chuàng)新價值和實際意義。算法不僅可以應用到Maya軟件制作的動畫中,還可以應用到3D MAX軟件制作的動畫中。稍加修改,可以進一步推廣到其他動漫設計軟件中,應用范圍廣泛。更強的魯棒性和透明性限制了水印的嵌入量,所以下一步的改進目標就是要在保證較強的魯棒性和透明性的同時提高水印的嵌入量。