專利名稱:三維模型完整性保護(hù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種三維模型完整性保護(hù)方法,特別是一種三維網(wǎng)格模型的完整性保護(hù)方法。
背景技術(shù):
隨著3D設(shè)計(jì)模型的廣泛應(yīng)用,人們越來越關(guān)注3D模型的版權(quán)保護(hù)。諸如CAD,CAM,CAE和CG領(lǐng)域存在著諸如版權(quán)保護(hù)、侵權(quán)檢測等問題。隨著對網(wǎng)絡(luò)環(huán)境下的協(xié)同設(shè)計(jì)和虛擬產(chǎn)品的研究,我們可以預(yù)見,將來用戶所購買的可能不再是一個(gè)實(shí)物的產(chǎn)品或零件,而是一個(gè)造型的思想或一堆數(shù)據(jù)——由點(diǎn)、線、面等構(gòu)成的3D數(shù)字模型,只有那些被授權(quán)的用戶才可以對該模型進(jìn)行復(fù)制、修改和再創(chuàng)造。這就涉及到如何對3D模型和其他CAD產(chǎn)品進(jìn)行保護(hù),其中最基本的就是完整性保護(hù)。脆弱性數(shù)字水印技術(shù)為我們提供了一種有效的途徑,使得可以在3D多邊形網(wǎng)格數(shù)據(jù)中嵌入數(shù)字水印,對3D模型和其他CAD產(chǎn)品進(jìn)行有效的保護(hù)。當(dāng)模型被改動(dòng)時(shí)通過嵌入模型中的脆弱水印我們就可以有效地檢測出篡改?,F(xiàn)在,這一研究領(lǐng)域已逐漸成為數(shù)字水印研究的新熱點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種三維模型完整性保護(hù)的方法,它能定位出三維模型被篡改的區(qū)域,能夠有效地驗(yàn)證被平移和均勻縮放操作后水印模型的完整性,完整性檢驗(yàn)時(shí)不需要額外的原始三維模型就可以檢測模型是否完整。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是 1.嵌入水印 1)選擇嵌入水印的頂點(diǎn),使水印頂點(diǎn)及其相鄰頂點(diǎn)盡可能分布整個(gè)模型 2)對每一個(gè)頂點(diǎn)調(diào)整坐標(biāo)x1,標(biāo)識(shí)該頂點(diǎn)是否是水印頂點(diǎn) 3)對每一個(gè)水印頂點(diǎn),將wi嵌入到x2,將h(wi)嵌入到x3 2.水印驗(yàn)證 1)對每一個(gè)頂點(diǎn),檢查x1坐標(biāo),判斷其是否是水印頂點(diǎn) 2)對每一個(gè)水印頂點(diǎn)從x2中提取w′,從x3中提取h′, 3)對于頂點(diǎn)v,如果h(w′)=h′,不成立,那么將v及其相鄰的頂點(diǎn)作為可疑頂點(diǎn)。
本發(fā)明使得可以在3D多邊形網(wǎng)格數(shù)據(jù)中嵌入數(shù)字水印,對3D模型和其他CAD產(chǎn)品可進(jìn)行有效地保護(hù)。當(dāng)模型被改動(dòng)時(shí)通過嵌入模型中的脆弱水印技術(shù)我們就可以有效地檢測出篡改。從而有利于3D模型的版權(quán)保護(hù)。
圖1是本方法的流程圖。
具體實(shí)施例方式 下面將結(jié)合附圖,詳細(xì)敘述本發(fā)明的具體結(jié)構(gòu)和實(shí)施例。
1.水印的嵌入 對于給定的網(wǎng)格M(V,C),其中V是頂點(diǎn)集,C是網(wǎng)格頂點(diǎn)的連接關(guān)系,水印設(shè)為W=(w1,w2,…,wn)。我們擬通過小范圍修改頂點(diǎn)集合V中的某些頂點(diǎn)的坐標(biāo)來嵌入水印,嵌入水印前后的頂點(diǎn)分別記為v(x1,x2,x3),v(x′1,x′2,x′3)。方法結(jié)構(gòu)如圖1所示。
水印嵌入步驟如下 1)某一個(gè)頂點(diǎn)及其1-環(huán)鄰域頂點(diǎn)只能有一個(gè)頂點(diǎn)被選為水印頂點(diǎn),根據(jù)這個(gè)原則借助隨機(jī)函數(shù)random來選取將要嵌入水印的頂點(diǎn)。將頂點(diǎn)v(x1,x2,x3)的3個(gè)坐標(biāo)定義為3種不同功能x1被用來標(biāo)識(shí)該頂點(diǎn)是否是水印頂點(diǎn)用來嵌入h(wi),h(wi)是對wi用Hash函數(shù)進(jìn)行加密后得到的值,h是Hash函數(shù),h(wi)是用來驗(yàn)證wi是否被篡改。
對于水印頂點(diǎn)vi(x1,x2,x3),將其所有的1-環(huán)鄰域頂點(diǎn)按照點(diǎn)的坐標(biāo)的大小排序(先按x1大小排序,如果x1坐標(biāo)相同,按x2坐標(biāo)排序,依次類推),得到一個(gè)按照點(diǎn)的坐標(biāo)大小的頂點(diǎn)序列vi(i=1,2,3……),我們將排在最前面的頂點(diǎn)記為vm(x1,x2,x3)稱之為頂點(diǎn)vi的鄰域最小點(diǎn)。
我們定義xi1c,xi2c,xi3c為1-環(huán)鄰域頂點(diǎn)與鄰域最小點(diǎn)vm(x1,x2,x3)的坐標(biāo)之差的均值 j=1,2,3, 其中N(v)是頂點(diǎn)vi(x1,x2,x3)1-環(huán)鄰域頂點(diǎn)集。|N(v)|為集合N(v)的基數(shù)。
2)對于給定的參數(shù)N,記對于頂點(diǎn)vi記di1=|xi1-xm1|,那么,有如下關(guān)系式
Ri1=di1%Si1 其中Qi1是除法的商,Ri1是余數(shù)。如果vi(x1,x2,x3)有嵌入水印,那么Qi1須為奇數(shù),所以,當(dāng)Qi1不是奇數(shù)時(shí),必須將di1調(diào)整為di1+Si1,方可使
是奇數(shù)。如果vi(x1,x2,x3)沒有嵌入水印,那么Qi1須是偶數(shù),所以,當(dāng)Qi1不是偶數(shù)時(shí),必須將di1調(diào)整為di1+Si1方可使
是偶數(shù)。
令M=Qij%2,因?yàn)閐i1=|xi1-xm1|,所以我們通過調(diào)整vi(x1,x2,x3)的x1坐標(biāo)來改變di1即
3)對于步驟(2)中給定的參數(shù)N,對于頂點(diǎn)vi記dij=|xij-xmj|,j=2,3,那
j=2,3,Rij=dij%Sij,j=2,3,其中Qij是除法的商,Rij是余數(shù)。分別對于j=2,3,有以下關(guān)系成立wi,h(wi)是要嵌入x2,x3的水印,如果wi,h(wi)是1,那么Qij須為奇數(shù)使得Qij%2=1,所以,當(dāng)Qij不是奇數(shù)時(shí),必須將dij調(diào)整為dij+Sij/2(如果Rij>Sij/2)或dij-Sij/2(如果Rij≤Sij/2)方可使
是奇數(shù)。如果wi,h(wi)是0,那么Qij須為偶數(shù)使得Qij%2=0,所以,當(dāng)Qij不是偶數(shù)時(shí)必須將dij調(diào)整為dij+Sij/2(如果Rij>Sij/2)或dij-Sij/2(如果Rij≤Sij/2)方可使
是偶數(shù)。
因?yàn)閐ij=|xij-xmj|,所以我們通過調(diào)整vi(x1,x2,x3)的xj坐標(biāo)來改變dij。
以上嵌入過程的參數(shù)N為關(guān)鍵參數(shù),在提取水印時(shí)要用到。假設(shè)對模型實(shí)施平移和統(tǒng)一縮放操作,設(shè)x′ij=kxij+xj,j=1,2,3.其中k是統(tǒng)一縮放的系數(shù)大于零、xj是平移的單位.根據(jù)公式得
因此,嵌入方法對平移和統(tǒng)一縮放具有不變性. 2.水印的提取驗(yàn)證方法 如圖1所示,水印的提取與驗(yàn)證步驟如下 1)根據(jù)頂點(diǎn)的xi1坐標(biāo)來判斷其是否是水印頂點(diǎn)。對水印頂點(diǎn)v′i(x1,x2,x3),令xi1c′,xi2c′,xi3c′是1-環(huán)鄰域頂點(diǎn)與鄰域最小點(diǎn)v′m(x′1,x′2,x′3)坐標(biāo)之差的均值(頂點(diǎn)的排序方法與嵌入水印時(shí)一樣,嵌入水印時(shí)只修改水印頂點(diǎn)的坐標(biāo),因而其1-環(huán)鄰域頂點(diǎn)的排序不會(huì)被改變,水印前后的1-環(huán)鄰域最小點(diǎn)相同) j=1,2,3 對于嵌入水印時(shí)給定的參數(shù)N,記,對于頂點(diǎn)v′i記d′i1=|x′i1-x′m1|,那么
R′i1=d′i1%S′i1。其中Q′i1是除法的商,R′i1是余數(shù)。如果Qi1是奇數(shù),那么該頂點(diǎn)有嵌入水印,否則,該頂點(diǎn)沒有嵌入水印。
2)對于每一個(gè)有嵌入水印的頂點(diǎn),從x2中提取w′,從x3中提取h′,對于嵌入水印時(shí)給定的參數(shù)N,記,j=2,3。對于頂點(diǎn)v′i記d′ij=|x′j|,j=2,3。那么
,j=2,3,R′ij=d′ij%S′ij,j=2,3。其中Q′ij是除法的商,R′ij是余數(shù)。w′=Q′i2%2,h′=Q′i3%2 3)如果h(w′)!=h′那么該頂點(diǎn)或其相鄰的頂點(diǎn)被篡改。將該頂點(diǎn)及其相鄰的頂點(diǎn)作為可疑的頂點(diǎn)。
實(shí)施例 本發(fā)明方法的實(shí)施例,選取一個(gè)原始3D網(wǎng)格模型,該模型由501個(gè)三角形面組成,嵌入了160bit二值水印。我們對加入水印信息后的3D網(wǎng)格模型進(jìn)行了如下處理1)將水印模型放大到4/3倍并按x軸平移13個(gè)單位,采用本發(fā)明方法進(jìn)行水印檢測得到檢測結(jié)果,結(jié)果顯示模型完整未被篡改;2)將水印模型縮小到4/5倍并按z軸平移4個(gè)單位,采用本發(fā)明方法進(jìn)行水印檢測得到檢測結(jié)果,結(jié)果顯示模型完整未被篡改;3)將飛機(jī)尾部最上方那個(gè)三角形的右邊的點(diǎn)(-1.22329,23.9950,-114.634)改為(-1.22329,23.9960,-114.637),采用本發(fā)明方法進(jìn)行水印檢測得到檢測結(jié)果,結(jié)果顯示尾部有兩個(gè)區(qū)域被篡改,因?yàn)檫@兩個(gè)區(qū)域嵌入水印時(shí)都與該點(diǎn)相關(guān)。
權(quán)利要求
1.一種三維模型完整性保護(hù)方法,其特征在于該方法分為水印的嵌入和水印驗(yàn)證兩個(gè)步驟
(1)水印的嵌入過程為
1)通過在三維模型中隨機(jī)選取一些頂點(diǎn);
2)選擇嵌入水印的頂點(diǎn),使水印頂點(diǎn)及其相鄰頂點(diǎn)盡可能分布整個(gè)模型;
3)對每一個(gè)頂點(diǎn)調(diào)整x軸坐標(biāo)x1,標(biāo)識(shí)該頂點(diǎn)是否是水印頂點(diǎn);
4)將原水印信息嵌入到水印頂點(diǎn)的y軸坐標(biāo),對每一個(gè)水印頂點(diǎn),將wi嵌入到x2;
5)將水印信息的Hash值嵌入到z軸坐標(biāo),將h(wi)嵌入到x3;
(2)水印驗(yàn)證的過程為
1)檢驗(yàn)x軸坐標(biāo)判斷其是否是水印頂點(diǎn),對每一個(gè)頂點(diǎn),檢查x1坐標(biāo),判斷其是否是水印頂點(diǎn);
2)對于水印頂點(diǎn),從y軸坐標(biāo)中提取原水印信息進(jìn)行Hash處理得到新的Hash值,對每一個(gè)水印頂點(diǎn)從x2中提取w′;
3)從z軸坐標(biāo)中提取原Hash值,從x3中提取h′;
4)通過對比新舊的Hash值來判斷三維模型是否完整對于頂點(diǎn)v,如果h(w′)=h′,不成立,那么將v及其相鄰的頂點(diǎn)作為可疑頂點(diǎn)。
全文摘要
本發(fā)明涉及一種三維模型完整性保護(hù)的方法,其特征在于該方法分為水印的嵌入和水印驗(yàn)證兩個(gè)步驟1.嵌入水印1)選擇嵌入水印的頂點(diǎn),使水印頂點(diǎn)及其相鄰頂點(diǎn)盡可能分布整個(gè)模型;2)對每一個(gè)頂點(diǎn)調(diào)整坐標(biāo)x1,標(biāo)識(shí)該頂點(diǎn)是否是水印頂點(diǎn);3)對每一個(gè)水印頂點(diǎn),將wi嵌入到x2,將h(wi)嵌入到x3;2.水印驗(yàn)證1)對每一個(gè)頂點(diǎn),檢查x1坐標(biāo),判斷其是否是水印頂點(diǎn)2)對每一個(gè)水印頂點(diǎn)從x2中提取w′,從x3中提取h′,3)對于頂點(diǎn)v,如果h(w′)=h′,不成立,那么將v及其相鄰的頂點(diǎn)作為可疑頂點(diǎn)。本發(fā)明能定位出三維模型被篡改的區(qū)域,能夠有效地驗(yàn)證被平移和均勻縮放操作后水印模型的完整性。
文檔編號(hào)G06T1/00GK101334890SQ20081007154
公開日2008年12月31日 申請日期2008年8月7日 優(yōu)先權(quán)日2008年8月7日
發(fā)明者孔祥增, 姚志強(qiáng) 申請人:福建師范大學(xué)