張國有,李 婧,王江帆
(太原科技大學 計算機科學與技術(shù)學院,山西 太原 030024)
在3D打印技術(shù)日益普及的今天,三維模型在醫(yī)療、多媒體、數(shù)學等領(lǐng)域得到了廣泛的應用,加之目前互聯(lián)網(wǎng)技術(shù)發(fā)達,三維產(chǎn)品的內(nèi)容及數(shù)據(jù)信息更加容易被復制、篡改利用,因此數(shù)字產(chǎn)品的版權(quán)侵權(quán)問題亟需解決[1]。數(shù)字水印算法作為信息安全領(lǐng)域的重要研究方向,為解決三維模型版權(quán)危機問題提供了支持,三維模型數(shù)字水印技術(shù)為解決這類版權(quán)問題提供了一種有效途徑。
1997年Ohbuchi等人首次提出針對三維模型數(shù)字水印的思想[2],將數(shù)字水印技術(shù)從一二維媒體類型擴展到三維模型中來。針對三維模型開展的研究工作主要有:Zafeiriou等人提出一種基于主對象軸的盲水印算法[3],對一般平移、旋轉(zhuǎn)、均勻縮放等有較好的魯棒性,面對剪切攻擊時模型重心會改變,主對象軸就會選擇出錯從而導致魯棒性變差;頂點范數(shù)作為三維模型中較為突出的特征為水印算法的研究提供很多思路,從頂點范數(shù)出發(fā)的水印算法[4-7],對平移、旋轉(zhuǎn)、頂點重排和相似變換等攻擊有很強的魯棒性,對簡化和細分操作也有較強魯棒性,但不適用于小尺寸、具有平坦區(qū)域的CAD模型,在遭受剪切攻擊時會改變模型的重心,從而影響頂點范數(shù)的確定,嚴重影響算法實驗效果;陳強等人從模型表面粗糙度展開研究[8],引入頂點權(quán)值及其相對位置來獲取頂點,且嵌入強度自適應于表面粗糙度,對平移、旋轉(zhuǎn)、均勻縮放、頂點重排序及輕微剪切攻擊魯棒,但該算法在頂點個數(shù)少的模型中對粗糙度分析有偏差,影響實驗效果;另一種是將模型按粗糙度值分成不同組別嵌入水印[9],粗糙區(qū)域嵌入高強度水印,稍平滑區(qū)域嵌入低強度水印,該方法有良好的視覺掩蔽效果,不同區(qū)域分開嵌入水印,視覺失真較小、水印容量較高,對各種常見攻擊甚至剪切攻擊都具有魯棒性,但遭到簡化攻擊時會減少頂點的數(shù)量,使得模型表面粗糙度降低,從而降低水印容量導致魯棒性變差。2014年唐寶提出一種基于網(wǎng)格分割的非盲水印算法[10],該算法先預處理再利用頂點到面片的距離進行水印嵌入,對一般剪切攻擊有不錯的魯棒性,但模型在遭受嚴重剪切攻擊時性能下降,且在頂點數(shù)目較多的模型上進行水印嵌入時算法執(zhí)行效率較低;2017年Hak-Yeol等人提出針對剪切攻擊的方案[11],從模型局部形狀獲取參考點,以解決裁剪攻擊引起的不同步問題,該方法將水印能量均勻分布到整個模型中,有助于提高水印的不可見性;次年,Han-Ul Jang等人提出一種基于一致性分割的盲水印算法[12],以頂點范數(shù)一致性為依據(jù)、采用階梯分析技術(shù)來確定水印方案,該方法不適用于小的模型,因為嵌入需要足夠數(shù)量的頂點來有效地分割;2019年Mohamed等人提出基于小波變換的三維模型盲水印算法[13],通過使用變換域的量化指數(shù)調(diào)制量化小波系數(shù)來嵌入水印,以網(wǎng)格中心和顯著點之間的距離降序排列作為同步基元,對平滑、加性噪聲、相似變換等攻擊有較好的抵抗效果,對于嚴重的剪切攻擊和網(wǎng)格重分還需要改進;2020年關(guān)素杰等人提出基于粒度計算的數(shù)字水印算法[14],將二值圖像作為水印信息嵌入到灰度圖像中,對噪聲和剪切攻擊具有魯棒性,該算法嵌入的水印數(shù)據(jù)不只局限于簡單的二進制序列,可以更好地服務于三維模型數(shù)字水印算法。
通過對以上方法的分析,為解決嚴重剪切、網(wǎng)格簡化攻擊魯棒性較差的問題,提出一種從SDF(Shape Diameter Function,形狀直徑函數(shù))局部特征出發(fā)的三維網(wǎng)格模型水印算法:利用SDF對模型進行分區(qū),采用改進的搜索算法[15]選擇最佳嵌入頂點,以頂點局部粗糙度值為依據(jù)獲得三角網(wǎng)格頂點最優(yōu)解(即最適合嵌入水印的位置)嵌入水印,采用非盲方式完成水印提取和檢測。
Shapira等人首次提出用SDF對模型進行分割[16],模型分區(qū)操作是實現(xiàn)水印算法的預處理階段。形狀直徑函數(shù)直觀地反映模型的局部直徑,使得模型分割塊數(shù)是明確的,根據(jù)文獻[17-18]描述,基于SDF的分割算法相較其他同類算法來說分割效果良好。
(1)在三維模型網(wǎng)格上任意選取頂點;
(2)以該頂點為圓錐頂點,沿頂點法向量的逆方向為中心線引出射線作圓錐體,該文取圓錐角的角度為120°并均勻選取30條射線進行實驗;
(3)引出射線與模型表面網(wǎng)格相交,保留與相交點法向相同的射線(夾角小于90°認為方向相同);
(4)所有射線長度加權(quán)統(tǒng)計,得到頂點的SDF值。
(1)計算射線平均長度、長度標準差和有效范圍:
有效范圍:Range=[rm-(1/2)σ,rm+(1/2)σ]
(2)給有效范圍的射線定義權(quán)重,頂點的sdf值為:
(M為落在有效范圍射線數(shù)量)
(3)對上述sdf值歸一化,得到其所屬面片的sdf值:
log(α+1)
α是歸一化系數(shù),對頂點的sdf值進行歸一化處理。
M=(V,F)表示三維模型,V代表頂點,F(xiàn)代表面片。在預處理階段將模型分割成若干塊,剔除面片信息過少的分塊,取k個分塊進行標記并嵌入水印,每個分塊表示為Mα=(Vα,Fα),α=1,2,…,k。其中Vα和Fα表示第α個分塊的頂點與面片信息。
在對三維網(wǎng)格模型進行SDF分區(qū)后篩選頂點,將嵌入頂點選擇看作組合優(yōu)化選擇問題,引入螢火蟲算法完成頂點優(yōu)化選擇。螢火蟲算法是全局優(yōu)化算法,每只螢火蟲都會發(fā)光吸引同類,吸引力與自身亮度成正比,亮度模糊的個體被較亮的個體吸引,并向其周圍移動,使得群體迅速收斂,整體集中于較亮的位置,算法搜索能力下降且無法跳出局部最優(yōu)。該文將隨機挑選各分區(qū)的數(shù)個頂點,選擇分區(qū)中比這些頂點粗糙度值大的頂點作為目標靠近,以此增加搜索的多樣性,避免陷入局部頂點最優(yōu)解和收斂過快、水印嵌入出現(xiàn)分布不均的情況,從而影響視覺掩蔽效果。實現(xiàn)過程需要設(shè)置合適的適應度函數(shù)和閾值優(yōu)化選取頂點,適應度函數(shù)根據(jù)三維模型頂點所處區(qū)域粗糙度來構(gòu)造,計算相鄰頂點間距離來獲得量化的粗糙度值。
該算法具體實現(xiàn)步驟如下:
(1)初始化:采用SDF分割的區(qū)域隨機生成初始種群,每個種群中有n個個體,每個個體包含n個網(wǎng)格點,它們隨機分布在有n個樣本位置的網(wǎng)格平面上。
(2)設(shè)定螢火蟲種群,個體對光亮初始吸引度為β0=1.0,其中βmax=1.0,βmin=0.2,吸引度公式為:
β(r)=(βmax-βmin)e-γr2+βmin
γ為亮度吸引系數(shù),r為個體間距離,吸引度是篩選頂點的粗糙度值,值越大越容易“吸引”頂點。
(3)根據(jù)螢火蟲位置計算出其適應度值,適應度值越優(yōu)的螢火蟲亮度越高,吸引度越大。
(4)螢火蟲靠近比自己亮的個體的移動距離為:
其中,Xi表示比第i個更亮的螢火蟲所處位置,rand()是隨機擾動,用來修正較亮螢火蟲的位置,α為步長因子,取值范圍為[0,1]。
(5)螢火蟲靠近比自身亮的個體,步長為:
α(t)=αt
其中步長隨著飛行時間增加而遞減。
(6)群體中最亮的螢火蟲將不再更新自己的位置,通過下式逐步更新最亮個體的位置。
(7)通過增加“記憶”即給定一個標記,使得算法執(zhí)行能夠直接保留適應度值最高的10%的螢火蟲,縮小搜索范圍繼續(xù)執(zhí)行步驟(3)~(6)。
(8)終止測試:達到最大迭代次數(shù)后輸出優(yōu)質(zhì)解,結(jié)束算法,否則,搜索次數(shù)加1,跳到步驟(3)進行下一次搜索。終止條件根據(jù)適應度函數(shù)值設(shè)定。
3.1.1 設(shè)計適應度函數(shù)
適應度函數(shù)設(shè)計是選擇嵌入頂點的重要步驟,與所選圓錐角度120°對應,選擇平整程度在30°<θ<60°區(qū)域頂點為水印嵌入位置。具體如下:
(1)求模型頂點Vi(Xi,Yi,Zi)與相鄰頂點Vj(Xj,Yj,Zj)的歐幾里得距離Dij,計算頂點Vi(Xi,Yi,Zi)距離之和Wi,其中i,j=1,2,3…。公式如下:
(2)求頂點局部粗糙度值,每個區(qū)域范圍內(nèi)頂點較少時,將范圍變大確保水印的嵌入容量,頂點較多時,將范圍變小以防嵌入信息過多導致模型透明性下降。選擇嵌入位置即求解下式目標函數(shù)最大值的問題:
其中,θ是經(jīng)驗所得平滑角度,取0°≤θ≤90°。適應度函數(shù)可設(shè)置為:
其中,f(θi)表示編號為i的平滑度函數(shù)。
3.1.2 設(shè)置終止條件
模型預先進行分區(qū)操作,區(qū)域終止條件設(shè)置為:
其中,ei表示第i個區(qū)域的最佳適應度值,當Estep小于閾值δ時,當前粗分區(qū)尋優(yōu)結(jié)束,繼續(xù)細化分區(qū)開始新的尋優(yōu)。整個算法的停止條件為:
若Estop小于設(shè)定閾值或者達到了預先指定的適應度函數(shù)值,則滿足停止條件,跳出循環(huán)。
根據(jù)預處理后的頂點sdf信息構(gòu)造水印序列,將模型按sdf值分區(qū),按照分區(qū)來選擇嵌入水印的頂點。水印嵌入是將每個區(qū)域的頂點sdf值進行標記并篩選頂點,修改這些頂點值來嵌入水印。該算法中計算各分區(qū)頂點歸一化sdf的均值,比較各頂點sdf值與均值來確定嵌入的水印信息完成嵌入,如圖1所示。
圖1 水印嵌入
具體執(zhí)行過程如下:
(1)各區(qū)sdf值按升序排列并進行歸一化操作,將sdf值轉(zhuǎn)化到區(qū)間[0,1]內(nèi),執(zhí)行如下:
(2)以長度L的水印序列為依據(jù),將每個區(qū)域的sdf值集合再分為l個區(qū)間并以此構(gòu)造l個集合,每一個集合作為一位水印的構(gòu)造基元。
(3)統(tǒng)計每個集合中頂點sdf值的個數(shù)。
其中,λ為水印嵌入強度。
水印檢測:嵌入的逆過程,本算法非盲提取水印,需要原始模型參與,嵌入水印模型M'與原始模型M比對來檢測水印信息相關(guān)度,執(zhí)行過程如圖2所示。
圖2 水印提取
具體操作步驟如下:
(1)嵌入水印的模型M'按照預處理進行相同分區(qū)操作,以確保嵌入提取時模型分割一致性。
(2)分割后的模型M'做步驟2.2中的(1)~(3)操作,分為l個區(qū)間,與嵌入水印區(qū)域?qū)?/p>
(4)對比待檢測水印和原始水印的相似程度。
算法程序在Visual Studio 2013開發(fā),C++語言實現(xiàn),優(yōu)化選擇頂點是將matlab環(huán)境搭在VS上完成,選擇的模型是Bunny、Dragon、Venus、Horse。為驗證算法魯棒性,進行仿射變換、簡化與細化、剪切等各類攻擊的測試。通過比較相關(guān)系數(shù)分析算法魯棒性,相關(guān)系數(shù)越大,模型相似程度越高,算法性能越好。位錯誤率即對比原始水印與待檢測水印。
該算法透明性的評估是通過肉眼觀察模型差異大小、計算Hausdorff距離來進行。公式如下:
其中,M,M'是原始模型和嵌入后模型頂點集合,l(m,m')是兩集合對應頂點歐幾里得距離。閾值為0.000 37,H越小模型差異性越小,透明性越好。由表1看出嵌入水印模型與原始模型視覺上基本無差異,Hausdorff距離均小于閾值,算法透明性良好。
表1 嵌入水印前后透明性比較
為驗證該算法的魯棒性,對Bunny、Dragon、Venus模型分別進行仿射變換、簡化與細分、剪切等多種方式的攻擊,以檢驗嵌入水印的模型與原始模型的相似程度。圖3~圖5分別為三個原始模型與模型在遭受不同類型的攻擊后得到的部分效果圖。
圖3 Bunny原始模型與遭受不同類型攻擊的模型圖
圖4 Dragon原始模型與遭受不同類型攻擊的模型圖
圖5 Venus原始模型與遭受不同類型攻擊的模型圖
4.2.1 仿射變換攻擊
對模型進行平移、旋轉(zhuǎn)、均勻縮放攻擊,這類攻擊只改變模型位置、方向、角度,不會改變形狀,SDF值不會改變,且在分區(qū)階段做了歸一化處理,即使改變模型比例也不會影響分區(qū)確定,因此原始模型在遭受仿射變換攻擊后,提取的水印與原始水印相關(guān)系數(shù)值為1。結(jié)果如表2所示。
表2 仿射變換攻擊實驗結(jié)果
4.2.2 簡化與細分攻擊
將模型頂點數(shù)目分別簡化30%、50%、70%,并采用Loop細分。簡化率增加,模型相關(guān)系數(shù)降低,但在70%以上,位錯誤率在較小范圍內(nèi),簡化后頂點數(shù)目減少,仍能保持原有結(jié)構(gòu),連接框架未改變,分區(qū)嵌入也能確保提取水印準確性;同理,細分攻擊不會改變模型形狀使得提取水印相關(guān)性較高。結(jié)果如表3所示。
表3 簡化與細分攻擊實驗結(jié)果
4.2.3 剪切攻擊
對模型進行10%、30%、50%剪切攻擊。采用SDF對模型分區(qū),且在每個區(qū)域重復嵌入相同位序的水印信息,因此剪切之后只要仍有保存完整信息的模塊存在,就可以完整提取水印信息。實驗結(jié)果如表4所示。
表4 剪切攻擊實驗結(jié)果
4.2.4 姿勢變化攻擊
對Horse模型局部進行變形,在模型動態(tài)情況下驗證該算法抵抗姿勢變化的魯棒性。SDF值是模型的局部特征,遭受姿勢變化攻擊時,模型只在局部的關(guān)節(jié)連接處有小的改變,大的局部形狀并未受到擾動,對SDF值影響微乎其微。圖6是Horse模型在運動過程中的姿勢變化,表5是不同姿勢變化的實驗結(jié)果。
圖6 Horse原始模型與不同姿勢變化的模型圖
表5 姿勢變化攻擊實驗結(jié)果
當前所處時代有著巨大的版權(quán)保護的現(xiàn)實需求,該文所研究的數(shù)字水印技術(shù)有其重大意義。為提高數(shù)字產(chǎn)品的版權(quán)認證服務,提出一種從三維網(wǎng)格有效分割角度出發(fā)的數(shù)字水印算法,結(jié)合螢火蟲搜索算法來優(yōu)化并改進嵌入水印頂點位置,這些頂點在面對各類攻擊時只會受到較小的擾動,穩(wěn)定性較高,通過此方法可以提高水印算法性能。經(jīng)實驗驗證,該算法除了可以完全抵抗普通攻擊(平移、旋轉(zhuǎn)、均勻縮放),對剪切、簡化與細分、姿勢變化多種攻擊都有不錯的魯棒性。
該算法應用螢火蟲算法與SDF網(wǎng)格分割結(jié)合,算法在頂點篩選迭代過程中會在一定程度上增加時間復雜度,在今后研究中需要在兼顧水印算法魯棒性與透明性的同時,減少優(yōu)化過程的耗時。