張國有,王江帆,李 婧
(太原科技大學 計算機科學與技術學院,太原 030024)
隨著多媒體技術和3D 打印技術的快速發(fā)展,三維模型[1]已廣泛應用于醫(yī)學影像、工業(yè)制造和游戲等領域. 此外,在文物保護、化學和生物等領域,三維模型的應用也越來越普遍. 它成為繼圖像、視頻、音頻3 大主流數據類型之后的數據類型. 但在使用和傳播這些數字產品的同時盜版和侵權等問題也隨之而來,使得如何安全有效的保護數字產品的版權成為學者研究的一個重點問題.
數字水印作為信息隱藏的一個重要分支,在數字產品的版權保護方面發(fā)揮了重要作用. 1997 年,在ACM 國際會議上Ohbuchi 等[2]首次提出將數字水印技術應用到三維模型,為三維數字產品的版權保護提供了新思路. 此后,越來越多的學者開始研究三維網格模型數字水印技術.
根據水印算法是否修改原始模型的數據,可將其分為嵌入式水印算法[3–7]和零水印算法[8–10]. 大部分水印算法為嵌入式水印算法,它通過對模型進行細微的修改來嵌入水印信息. Cho 等[3]提出了一種改變所有頂點與質心之間歐氏距離分布的統計水印方法. 該方法能夠很好地抵抗相似變換和頂點重排序這種無失真的攻擊. 之后,Bors 等[11]對基于統計的水印進行了擴展,通過Levenberg-Marquardt 優(yōu)化方案進行最優(yōu)保存,使目標表面畸變最小化. 該方案對常見的網格攻擊具有很強的魯棒性,同時保證了曲面的最小失真.為了增強魯棒性,Liu 等[12]提出了一種對三角網格模型進行多分辨率曲面自適應參數化的魯棒水印算法.Liu 等將模型的所有頂點分為兩組. 一個是粗糙層,它可以建立一個不變量空間. 二是作為水印嵌入特征的精細層次. 該算法具有很強的隱蔽性,對常見攻擊具有很強的魯棒性. 但這些算法對裁剪攻擊的魯棒性相對較弱,而且嵌入式水印算法不可避免地要修改原始模型信息,無法應用到對數據精度要求較高的模型;并且嵌入式水印算法嵌入水印的強度難以控制,若嵌入強度過低,算法的魯棒性較差,嵌入強度過高,又會影響模型的視覺效果. 所以,如何平衡水印的透明性與魯棒性之間的矛盾是嵌入式水印算法研究的一個難點問題.
為解決上述問題,溫泉等[13]提出了零水印算法,零水印算法不需要對原始模型進行修改,而是利用模型本身特征構造水印信息,并將水印信息在知識產權(intellectual property rights,IPR)信息數據庫中注冊; 當需要對版權進行驗證時,再利用零水印算法構造水印信息,并與IPR 數據庫中的水印信息進行對比,以此驗證模型所有者. 零水印算法并沒有將信息嵌入到模型中,從而避免了透明性和魯棒性之間的矛盾.
目前,在圖像方面關于零水印算法的研究[14,15]比較多,由于三維模型數據的不規(guī)則性,并且表示方法有多種,使得構造穩(wěn)定的水印存在一定困難,三維模型零水印算法較少. 徐濤等[16]利用網格空域特征的提取和變換域二次能量集中構造水印信息. 王新宇[17]提出一種三維網格模型空域零水印算法,該算法利用模型頂點范數以及該頂點的鄰域頂點范數構造水印信息. 這兩種算法對剪切攻擊的抵抗能力都比較弱. 為了使算法能夠在抵抗旋轉、平移、縮放等常見攻擊的同時也能夠抵抗網格簡化和剪切攻擊,本文提出一種基于矢量長度比的零水印算法.
由于零水印算法不改變原始模型信息,而是利用模型自身屬性造水印信息,構造信息的魯棒性直接影響算法的魯棒性,因此,構造魯棒的特征對零水印算法至關重要[18]. 頂點范數是三維模型的一種全局特征,它能夠反映模型的整體形狀. 一般對模型進行攻擊的時候不會改變模型的全局特征,否則模型的視覺效果就破壞,從而失去使用價值. 但僅利用這一特征構造水印,在水印檢測階段,需要對模型進行重定位和重采樣操作,否則就無法提取水印,重定位是為了使受到幾何攻擊的模型恢復到原始位置,重采樣是為了使拓撲結構發(fā)生改變的模型恢復原樣. 將頂點范數和頂點領域以及比例相結合,就可以避免對模型進行重定位和重采樣. 若直接選擇模型質心作為構造水印的基元,算法容易受到剪切攻擊的影響,為了抵抗剪切攻擊,可以對模型分塊[19],然后用塊質心代替模型質心,接著計算均值,弱化受攻擊后模型頂點改變帶來的影響.
三維網格模型由頂點集合和這些頂點之間的連接組成. 為了避免頂點均勻縮放、平移、旋轉等相似變換的影響,可以對三維模型進行預處理,即將頂點的笛卡爾坐標轉換為球坐標,然后依據需要構造的水印長度以及經度分量對頂點進行分塊,對分塊中的每個頂點計算出該頂點到塊質心的距離和鄰域頂點到塊質心的平均距離,接著計算這兩個長度之比,利用長度之比和密鑰構造水印信息. 水印構造的流程如圖1所示.

圖1 水印構造流程圖
三維網格模型可以表示為M={V,E},其中,V={Vi∈R3,02.1 模型預處理
為了更方便地對三維模型進行零水印的構造,需要對三維模型進行預處理,將三維模型的直角坐標系轉換為球面坐標系,并根據經度分量對模型分塊. 預處理步驟如下.
(1)為了實現三維模型坐標轉換,需要計算三維模型質心坐標,由于三維模型受到攻擊后可能造成模型的頂點分布不均勻,使模型質心改變,以三角形面積為權重的方法可以弱化這種影響,獲得較穩(wěn)健的質心. 因此,本文算法采用基于面積矩的方法計算三維模型的質心,計算公式如式(1).

其中,Vc={xc,yc,zc}表示三維模型質心坐標.A(Vi)表示Vi一環(huán)鄰域內三角形的面積.
(2)平移模型即將三維模型質心與直角坐標系原點重合,計算公式如式(2).

(3)接著轉換為球面坐標系,計算公式如式(3).

其中,(ρi,θi,?i)表示頂點Vi的球面坐標,ρi∈R,θi∈[0,2π],?i∈[0,π].
(4)利用模型現有的條件經度分量對模型進行分塊. 根據經度坐標分量將模型等分為塊,然后根據θ的取值將模型的頂點進行分塊,建立頂點與θ之間的映射關系. 第i個頂點分塊的表示如式(4)所示.

其中,θi,j表示頂點Vi,j的球面坐標經度分量,Nθ,i表示頂點分區(qū)Bθ,i中的頂點數目.
(5)計算每個分塊中的質心Vc1,計算方法如式(1).
零水印的構造過程如下.
(1)對分塊中的每個頂點進行以下操作.
1)計算每個頂點Vi與塊質心Vc1之間的長度Dcl.
2)計算Vi一環(huán)鄰域中的所有頂點與塊質心之間的長度并求均值
3)計算這兩個長度的比值Qi,計算公式如式(5).


(3)構建頂點的狀態(tài)序列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 進行保存,當發(fā)生版權糾紛時根據數據庫中的水印信息和密鑰就可以確定模型的所有者.
當無法確定三維模型的版權所有者時,就需要用零水印檢測算法對模型進行版權驗證. 零水印是一種特殊的盲水印,檢測時不需要原始模型的參與. 它的檢測過程與構造過程相同,結合密鑰,重復水印的構造過程,最終得到水印序列Wd,然后將Wd與數據庫中的水印序列W進行比較,判定模型的版權歸屬.
在使用模型的時候可能對模型進行有意或無意的操作,從而使模型發(fā)生改變,使構造出的水印信息與原始水印信息不一致,難以判斷水印是否存在,因此為了評價算法的魯棒性,需要一個衡量指標,即相關性系數Corr,來判斷待檢測水印與原始水印之間的相關性. 計算方法如式(9)所示.

其中,wdi為待檢測模型的第i位水印,為待檢測水印的平均值,woi為原始水印的第i位水印,為原始水印的平均值,N為水印長度.Corr值越大說明水印越相似. 一般在驗證版權使會給定一個閾值,本文參考文獻[12] 的方法將閾值設為0.5,若相關性系數大于0.5 就說明受到了侵權,否則認為待檢測模型中沒有原始水印信息.
本文算法是使用Visual Studio 2013 開發(fā)平臺以及OpenGL 庫來實現的. 選取了bunny、dragon、rabbit、venus 這4 個具有代表性的模型進行相關實驗. 模型的數據信息如表1 所示,在實驗中,水印長度W=64.

表1 三維模型數據信息
為了驗證零水印算法的魯棒性,本文使用LIRIS實驗室提供的攻擊軟件和MeshLab 軟件對三維模型分別進行相似變換、隨機噪聲、平滑攻擊、網格簡化等多種類型的攻擊,對攻擊后的模型重新構造水印序列,然后與原始模型水印序列進行比較,通過計算相關性系數來衡量算法的魯棒性,相關性系數的計算如式(9)所示. 圖2 為原始三維模型.

圖2 原始模型
(1)相似變換
因為本文使用的是三維模型頂點的矢量長度之比這一幾何變量,它不受平移,旋轉和均勻縮放的影響,而且在構造水印之前已經對模型進行了預處理,所以能夠很好地抵抗相似變換的攻擊,即在受到這類攻擊后的模型構造出來的水印與原始水印完全相同,實驗結果如表2 所示.

表2 相似變換的相關系數結果
(2)平滑攻擊
平滑攻擊是對模型的頂點進行輕微擾動,使模型表面變光滑,它會輕微改變模型質心以及模型到塊質心的距離,導致水印錯誤,但該攻擊不會改變模型的整體形狀,本文選擇的矢量長度比能夠反應模型整體形狀,因此對該類攻擊具有較高的容忍性,并且當該類攻擊造成模型頂點發(fā)生劇烈變化,構造的水印嚴重錯誤時,模型必然已失去使用價值,無須再對模型進行保護.分別對模型平滑迭代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)剪切攻擊
剪切攻擊是將模型的部分點和面的信息切除,從而使模型的整體形狀改變,丟失的是局部信息,并且隨著剪切比例的升高,模型的質心會發(fā)生偏移,使得對模型質心依賴較大的算法難以提取出正確的水印信息.分別選取三維模型的3 個不同位置對三維模型進行10%、20%、30%的剪切,剪切后的部分bunny 模型如圖6 所示,實驗結果如表6 所示. 本文算法選取分塊后的塊質心并取均值,能夠減小對模型質心的依賴,從而較好的抵抗剪切攻擊,但隨著剪切比例的升高,會對模型的分塊產生較大的影響,所以本算法只能夠抵抗較低比例的剪切攻擊. 實驗結果顯示,當模型被剪切30%時,本文算法仍具有較高的相關性系數,能很好地提取出水印信息. 因此,本文算法在非對稱模型失去保護價值之前對剪切攻擊仍具有魯棒性.

表6 剪切攻擊的相關系數結果

圖6 剪切攻擊后的bunny 模型
為了更好地驗證本文算法的魯棒性,本小節(jié)將本文的實驗結果與比較經典的水印算法的實驗結果進行了對比. bunny 模型的對比實驗結果如圖7–圖10 所示.表7 為5 種水印算法魯棒性比較.

表7 5 種水印算法的魯棒性比較 (%)

圖7 噪聲攻擊

圖10 剪切攻擊
對于相似變換,本文使用矢量長度之比這一變量,它不受旋轉、平移和縮放攻擊的影響,所以能很好的抵抗這類攻擊,而對于文獻[12]的算法是利用網格的低層分辨率建立不變空間,當模型受到攻擊后,這些點頂點可能發(fā)生輕微擾動,所以該算法受旋轉縮放攻擊的影響.

圖8 平滑攻擊
如圖7–圖9 所示,本文算法在抵抗網格簡化和剪切攻擊方面的優(yōu)勢比較明顯. 由于本文算法在對模型進行預處理時使用面積矩計算模型的中心,并且在實現過程中加入了頂點與頂點鄰域之間的比值,使算法對抗不同程度的采樣能力加強,所以本文算法對簡化攻擊具有很強的魯棒性. 相對于其他算法,本文算法對模型中心的依賴更小,所以能較好地抵抗剪切攻擊. 對于噪聲和平滑攻擊,本文算法在模型失去使用價值之前,檢測出的閾值大于無法辨別模型歸屬的閾值0.5,所以本文算法也能夠抵抗噪聲和平滑攻擊. 總體來說,本文提出的算法不需要考慮透明性問題,能夠抵抗常見類型的攻擊,并且對簡化攻擊有很強的魯棒性,也能夠抵抗一定比例的剪切攻擊.

圖9 簡化攻擊
本文提出了一種基于矢量長度比的三維網格模型零水印算法,該算法首先對三維網格模型進行分塊并計算每塊質心,用塊質心代替模型質心,利用頂點到塊質心距離與鄰域頂點到塊質心的平均距離構造出魯棒的水印序列. 實驗結果表明本算法能夠抵抗相似變換、噪聲、平滑、剪切等常見的攻擊,并且在簡化攻擊和剪切攻擊方面的優(yōu)勢比較突出. 本文算法可應用于對精度要求較高的三維模型中. 下一步計劃是加強算法抵抗攻擊的種類以及它們的聯合攻擊,進一步加強算法的魯棒性.