专利名称:基于Octree编码的三维网格数字盲水印方法
技术领域:
本发明属于计算机虚拟现实和计算机图形学技术领域,具体地说是一种利用三维模型 Octree编码来进行水印嵌入和提取的方法,用于三维数字作品的版权保护。
背景技术:
随着数据存储和发布技术的发展和多样化,越来越多的数字作品被应用到各种领域,数字 水印技术成为版权保护的主要手段之一。在数字水印技术中,音频、视频和图像的数字水印技 术已趋于成熟,而三维模型水印技术起步较晚,其距离实用化还有相当长的一段路要走。
由于三维模型的网格形式表示最为普遍,所以当前三维模型水印大多为三维网格水印。根 据提取水印信息吋是否需要原始模型数据,三维模型数字水印算法可以分为盲水印和非盲水印 算法;根据嵌入域的不同,又可以把三维模型数字水印算法分为空域水印和频域水印算法。空 域算法主要通过改变模型顶点的位置、三角网格边比例和法向量等进行水印信息的嵌入。而变 换域算法则先把三维模型数据进行某种变换,可以使DCT、小波变换等,通过修改其系数嵌入
水印信息,然后反变换得到嵌入水印后的模型数据。而盲水印算法是数字水印技术得以实用化
的必然趋势,Cox等人详细讲述了盲水印算法的诸多优点,参见I丄Cox, M丄.Miller, and J.A. Bloom, Digital Watermarking. Morgan Kauftnan, 2001.。
三维模型的数字水印技术应该有以下几种基本的特点和要求(1)不可感知性,指原始模 型和嵌有水印的模型之间的相似程度,可以用主观感觉或客观数值进行衡量。(2)有效载荷, 也称作数据容量,指模型所嵌入的有效信息量。有效载荷不但与水印嵌入算法有关,还会受到调制
方式的影响。(3)鲁棒性,指嵌有水印的模型经过常规信号处理或恶意攻击后能成功检测到水
印的能力。水印系统的不可感知性、数据容量和鲁棒性常常相互影响,甚至是相互矛盾的,在实际 应用中,需要根据具体情况进行权衡和取舍。
1997年,Ohbuchi等人提出TSQ和TVR算法,属于空域算法,可以抵抗平移、旋转和缩 放攻击,但对噪声和拓扑攻击敏感,参见Ohbuchi R , Masuda H , Aono M Watermarking three-dimensional polygonal models [A〗In : Proceedings of the ACM Multimedia' 97 , Seattle , Washington , 1997 261 272。BenedensW等人提出可以抵抗简化攻击的水印算法,使用非盲检测, 参见O. Benedens, "Geometry-Based Watermarking of 3-D Polygonal Models," IEEE Computer Graphics and Applications, special issue on image security, vol. 19, no. 1, pp..46-45, Jan./Feb. 1999.。Wagner等人通过改变顶点的离散法向量嵌入水印,可以抵抗平移和均匀縮放攻击,但对噪声和 拓扑结构改变攻击不具有鲁棒性,参见Wagner M Robust watermarking of polygonal meshes [C] Proceedings of Geometric Modeling and Processing, Hong Kong , 2000 : 201 — 208。在步页域算法中, Kanai等人使用网格的小波变换嵌入水印,该算法要求模型是规则网格,且检测时需要原始模 型,参见Kanai S , Date H, Kishinami T Digital watermarking for 3D polygons using multiresolution wavelet decomposition [C〗Proceedings of International Workshop on Geometric Modeling , Tokyo , 1998:296-307。 Cayre等人利用Laplace算子,通过网格的伪频谱分析嵌入水印,属于盲检测 算法,但对拓扑改变不具鲁棒性,参见Cayre F , Rondao Alface P, Schmitt F , et al Application of spectral decomposition to compression and watermarking of 3D triangle mesh geometry [J ].Signal Processing , 2003 , 18 (4):309 - 319。 Praun利用渐进网格技术和扩频调制的思想,把水印信息嵌入 到模型的多个顶点中。该算法可以抵抗大多数攻击,属于非盲检测,参见PmunE,HoppeH, Finkelstein A Robust mesh watermarking [C] Computer Graphics Proceedings , Annual Conference Series , ACM SIGGRAPH , Los Angeles , 1999 : 325 - 334。
综上所述,当前大多数三维模型数字水印具有以下缺点(1)在嵌入容量上都比较小;(2) 大部分为非盲数字水印;(3)盲水印的鲁棒性较差,对于诸如简化、噪声叠加和重新网格化等 复杂攻击不具有鲁棒性。
发明内容
本发明的目的是克服现有技术的不足,提供一种基于Octree编码的三维网格数字盲水印 方法,该方法具有实用性强、嵌入容量大、鲁棒性好的优点;对模型拓扑没有限制,也可以直 接对点云数据进行水印嵌入,普适性好。
本发明的技术解决方案基于Octree编码的三维网格数字盲水印方法,其特点在于步骤如 下(1)首先通过主成分分析PCA对三维模型进行预处理,得到模型唯一的姿态朝向的三维 模型;(2)然后对所述的三维模型进行Octree剖分得到Octree结构和编码数据;(3)嵌入水印, 选择层次Octree的底层节点中的单非空节点进行水印嵌入;(4)构造零水印;(5)进行水印的 提取和检测,包括二值图水印的提取以及零水印相似性的检测。
所述的步骤(1)的通过主成分分析PCA对三维模型进行预处理,得到模型唯一的姿态朝向 的三维模型的方法为将原始三维网格模型的中心和笛卡尔坐标系原点对齐,.求解模型顶点坐标 的协方差矩阵,对得到的3个特征值进行降序排列,得到相应的3个特征向量。分别使3个特征 向量与Z, X, Y轴对齐,从而得到模型唯一的姿态朝向。
所述的步骤(2)中的Octree剖分和编码方法为以坐标轴原点为中心,最大顶点中心距为 尺寸对预处理后的三维网格模型进行Octree轴向均匀剖分,根据Octree压缩编码方法将Octree
层数定为12,对Octree的最底层节点中的单非空节点进行编码。
所述的步骤(3)中选择层次Octree的底层节点中的单非空节点进行水印嵌入的方法为根 据编码数据的特点,选择有标识意义的大容量二值图作为水印信息进行嵌入,对二值图进行行序 置乱,得到密钥和置乱后的二值图数据。密钥在提取水印时使用,将置乱后的二值图数据以3个 bit为嵌入单位,替换Octree的最底层节点编码。
本发明的三维网格模型水印方法与现有的水印方法相比优点在于实用性强;鲁棒性好; 嵌入容量大。由于本发明对模型的拓扑流型没有要求,所以可以适用于各种三维模型,实用性 强;本发明嵌入的二值图水印信息可以抵抗旋转、平移、均匀縮放、顶点随机重排序攻击;而 提取得零水印信息还可以在一定程度上抵抗均匀化简、噪声和重新网格化等攻击,具有较好的 鲁棒性;此外,本发明几乎对于每一个三维模型顶点都可以嵌入3bit的水印信息,因此具有嵌 入容量大的特点。
图1为本发明基于Octree编码的三维网格数字盲水印方法嵌入流程图
图2为本发明基于Octree编码的三维网格数字盲水印方法提取检测流程图;
图3为本发明嵌入水印后进行鲁棒性试验图,其中a为未被攻击时的模型图,b是被縮放
和平移后的模型图;c是被旋转后的模型图;d是被简化50。/。后的模型图;e是进行噪声叠加
后的模型图4为本发明原始水印二值图和提取后的水印二值图,其中a是原始水印二值图,b是提 取后的水印二值图
具体实施例方式
本发明的水印嵌入流程图如图l所示,具体步骤如下-(1)主成分分析(PCA)轴向预处理
Octree剖分对平移和均匀缩放具有不变性,但模型旋转会改变Octree剖分结果。为了在恶 意攻击者对模型进行旋转攻击之后仍能够提取水印信息,必须对模型姿态进行自动调整。在嵌 入和提取水印信息时,都要预先对模型进行PCA轴向预处理。首先将模型移动到坐标系原点, 然后计算主成分特征向量。经过平移后,可以得到模型顶点坐标的协方差矩阵C。通过对矩阵 C的3个特征值;i;, ^义3作从大到小的排序,可以得到3、个相互正交的特征向量A,^,&。将A 与笛卡尔坐标系中的y轴对齐,可以得到第一个旋转矩阵M/,然后把经过旋转变换后的^与X 轴向对齐,得到第二个旋转矩阵M2,由于A;,^,&相互正交,所以此时A必和Z轴对齐。这样 最终可以得到总的旋转矩阵M-的xM2,通过对模型的顶点集合P作相应旋转,就可以使模型 调整到唯一的姿态朝向。旋转矩阵M要进行保存,在嵌入水印之后,还要将模型调整回原始的
姿态朝向
(2) Octree剖分和编码
在上述(1)中,已经把模型中心移动到了原点,把原点作为Octree剖分的正方体包围盒 中心,以模型顶点和中心的最大距离作为包围盒的尺寸,然后对模型进行自顶向下的Octree剖 分。采用均匀轴向剖分,每次新剖分的子包围盒的尺寸是上层包围盒的1/2,剖分停止的条件是 指定的层次。Cai (参见Su Cai, Yue Qi, Xukun Shen. 3D Data Codec and Transmission over the Internet. ACM Proceedings of the 12th international conference on 3D web technology. Perugia, Italy. 2007,pp53-56)提出的Octree压縮编码方法中将Octree层数定为12。 Octree通过递归调用节点 生成函数建立起来,节点生成函数描述如下
Stepl.判断当前层是否达到规定的层次,若是则停止;
Step2.当前层数加1;
Step3.计算节点8个子节点的中心和尺寸;
Step4.根据子节点的中心和尺寸,将节点包含的顶点索引数组分配到对 应的子节点包含的顶点索引数组;
Step5.对包含的顶点索引数组长度大于零的子节点递归调用 Stepl—Step5;
Octree剖分结束后,可以得到一棵层次Octree。在建立好的层次Octree中,有一类特殊的 节点,它只包含一个子节点,其他7个子节点为空,本发明称此类节点为单非空节点。对于单 非空节点,由于其子节点的分布情况只有8种,使用3个bit就可以对其进行编码。通过层次 Octree对原模型进行编码,相当于从粗到精对原始模型进行逼近,根据Cai^的编码算法,使用 Octree底层节点的包围盒中心替代所包含的原始模型的顶点位置。
(3) 嵌入水印
选择层次Octree的底层节点中的单非空节点进行水印嵌入。单非空节点在Octree的底层节 点中占有很大比例,几乎和模型的顶点数相等。可以在一个单非空节点嵌入3个bit的水印信息, 可以得出模型的嵌入容量为r-iVx3(bit),其中W是三维模型顶点数。根据编码数据的特点,本 发明选择有标识意义的大容量二值图作为水印信息进行嵌入,也可以是其它任何2进制水印信 息。下面是嵌入水印的步骤
Stepl.将层次Octree的底层单非空节点自左往右全部加入一个节点队列,得到 octe^/ewe=/>2ocfe/,wo(ie2,wofife^,A:是单非空节点总数
Step2.从Z)中取出 一个分段说长度为3 n),对于《中每3个bit的信息,从"o&Qwwe 中取出一个节点"o&,,将wc/e,的3个bit的编码信息接替换成附,WM3
Step3,重复Step2,直到水印分段都嵌入为止
Step4.再次遍历"0&2眺股,将新的编码信息转化为新的顶点坐标信息。如原始的单非空 节点编码信息为001,即原来其1号子节点的中心坐标即为所包含的顶点坐标,如果水印信息 为110,则把顶点的坐标修改为6号子节点的中心坐标。
二值图每个像素只有2个值0或1。对于宽长/engf/z的二值图,其大小为 s-w'必/2x/e"g^(bit),由于选择单非空节点进行水印嵌入,它可以由3个bit进行编码,3个二进 制值为一个嵌入单元,所以将s用0补足为3的倍数,得到s'。为了在嵌入前对水印信息进行 置乱,把s'按二值图的行序平均分为s'/(3m)^n段,其中m,"都是整数,"是水印分割的段数,, 则w是每段含有嵌入单元的个数。采用伪随机算法对水印信息的分组索引{7,2,...,"}进行置乱, 得到新索引JV^{^,&,..力 }和置乱后的水印信息分段数组...^,M和二值图的尺寸信息 作为密钥在解水印时使用。
(4) 构造零水印
"零水印"就是用三维模型的特征来构造水印,而不改变模型信息。通过向第三方公正机构 注册构造出来的"零水印",从而解决版权争端问题。"零水印"相当于抽取了模型的特征信息, 该信息在相当大的尺度范围内具有唯一性,并且通过GZip压縮,数据量非常小。选取层次Octree 的第6层进行零水印的构造。层数过高会导致提取的特征信息过于粗糙,会出现不同的三维模 型构造出相同零水印的结果;层数过低一方面会迅速加大零水印存储空间, 一方面在抵抗简化 攻击时不具有鲁棒性。经过实验,本发明把构造零水印的Octree层次定为6。 Octree第6层节 点的位置自左到右一共有86个,在建立好Octree之后,自顶向下按层次遍历Octree,就可以确 定每个节点在当前层次的位置。构造"零水印"的算法描述如下
Stepl.初始化"零水印"数组M, M长度为86,元素全置0。
Step2.将第6层的节点入队,得到"ocfegwewe=/"wde/,wode2,…,"ot^人A:是第6层节点总数 Step3.依次填充数组M,依次从"o&2wewe中取出节点"M^,得到"o&,的位置
"o(fePo础ow,., 并将JWj/70^P0础0 ]置为1°
Step4.重复Step3,直到为空。
构造出来的"零水印"信息会在第三方公证机构进行注册。由于本发明的零水印描述了模型 在中等分辨率时顶点的空间分布,零水印数组的个数空间为2262114个,这个范围足够使用。遇 到注册零水印相同的情况,可以通过另外加标号的方法进行解决。
(5) 水印提取和检测,包括二值图水印的提取以及零水印相似性的检测。 其中(a) 二值水印信息的提取为
对待检测的三维模型进行PCA预处理,将模型自动对准到嵌入水印时的姿态。检测水印时
需要密钥,其中包含二值图水印信息的长宽信息和置乱的二值图行序索引信息。具体提取方法 如下
Stepl.将层次Octree的底层单非空节点加入节点队列
"ocfegwewe=/""o^e/,"(%fe2, ..., < <^/,&是单非空节点总数;
Step2.从w&gwewe中取出一个节点"oafe,,得到Hocfei的3个bit的
编码信息W卢2W3,按照密钥中包含的水印图像大小和置乱的行序索弓l信息对二值图进行填充;
Step3重复Step2,直到二值图被填充满为止,最后得到二值图。 (b)零水印相似性的检测
其构造过程和(4)所述一样。构造出来的"零水印"信息M和从第三方公正中心中提取出 来的"零水印"M'进行对比,'得到一个相关程度值义,经过大量实验,本发明把&0.6作为判断"零 水印"是否属于同一模型的阀值,从而对模型的版权所属判断提供依据。
其中相关性检测算法描述如下
Stepl.初始化^rMa/=051sww=0。
Step2.遍历M和M',进行如下判断
(1) 若M'[!]=l且,则对加1 , tow加1;
(2) 若M'0']-1而=0或M'[/]=0而,则w附加1. Step3.遍历结束后,得到float A=e w<3//sww。
上述中M是第三方公证处注册的原始模型零水印数组,M'是待检测网格模型的零水印数组。 Sum为比较编码总数,equal是相同的编码总数,A是零水印相关度。
表l示出本发明嵌入水印后进行鲁棒性试验结果表_
攻击 提取出的水印可读水印相关度零水印相关度 攻击后的模型
A:未攻击图4bl細0l細0图3a
B:平移和縮放图4bl細01.0000图3b
C:旋转图4bl細0l細0图3c
D:顶点随即重排序图4bl細0l細0
B+C+D图4b1.0000l働0
F:简化10%承0.9334
G:简化50%**0.8828图3d
H:简化90%*承0.7704
1.噪声叠加攻击(0.2%)*0.8794图3e
J.噪声叠加攻击(0.5。/。)承0.7334图3e
K.重新网格化攻击**0.9224
25注(1)简化攻击和网格化攻击均采用Polyworks9.0操作,重新网格化的面片数和原模型一致 (2)*表示提取出的水印信息己经被破坏,无法识别
表l数据分析表明,本发明嵌入的可读水印对平移、旋转、縮放和顶点重排序都具有鲁棒 性,而对于简化、噪声叠加和重新网格化攻击不具有鲁棒性;而本发明提取出来的零水印对上 表的所有攻击都具有较好的鲁棒性。
权利要求
1.一种基于Octree编码的三维网格数字盲水印方法,其特征在于步骤如下(1)首先通过主成分分析PCA对三维模型进行预处理,得到模型唯一的姿态朝向的三维模型;(2)然后对所述的三维模型进行Octree剖分得到Octree结构和编码数据;(3)嵌入水印,选择层次Octree的底层节点中的单非空节点进行水印嵌入;(4)构造零水印;(5)进行水印的提取和检测,包括二值图水印的提取以及零水印相似性的检测。
2、 根据权利要求l所述的基于Octree编码的三维网格数字盲水印方法,其特征在于所述 的步骤(1)的通过主成分分析PCA对三维模型进行预处理,得到模型唯一的姿态朝向的三维 模型的方法为将原始三维网格模型的中心和笛卡尔坐标系原点对齐,求解模型顶点坐标的协 方差矩阵,对得到的3个特征值进行降序排列,得到相应的3个特征向量,分别使3个特征向量 与Z, X, Y轴对齐,从而得到模型唯一的姿态朝向。
3、 根据权利要求l所述的基于Octree编码的三维网格数字盲水印方法,其特征在于所述 的步骤(2)中的Octree剖分和编码方法为以坐标轴原点为中心,最大顶点中心距为尺寸对预 处理后的三维网格模型进行Octree轴向均匀剖分,根据Octree压缩编码方法将Octree层数定为 12,对Octree的最底层节点中的单非空节点进行编码。
4、 根据权利要求l所述的基于Octree编码的三维网格数字盲水印方法,其特征在于所述 的步骤(3)中选择层次Octree的底层节点中的单非空节点进行水印嵌入的方法为根据编码数 据的特点,选择有标识意义的大容量二值图作为水印信息进行嵌入,对二值图进行行序置乱, 得到密钥和置乱后的二值图数据。密钥在提取水印时使用,将置乱后的二值图数据以3个bit为 嵌入单位,替换Octree的最底层节点编码。
5、 根据权利要求l所述的基于Octree编码的三维网格数字盲水印方法,其特征在于所述 的步骤(4)中构造零水印的方法选取层次Octree的第6层进行零水印的构造,并注册到第三 方公正中心,具体为-(1) 初始化零水印数组M, M长度为86,元素全置O;(2) 将第6层的节点入队,得到"06fegwgi^=fMorf"wo£fe2, ...,m^e^, A:是第6层节点总数;(3) 依次填充数组M,依次从ra&0/ewe中取出节点朋&,,得到的位置wcfe户as故o",, 并将M"o^Pow力'o"J置为1 ;(4) 重复步骤(3),直到wofe2we認为空; (5)为构造出的零水印注册到第三方公正中心。
6、 根据权利要求l所述的基于Octree编码的三维网格数字盲水印方法,其特征在于所述 的步骤(5)中二值图水印的提取方法为(1) 将层次Octree的底层单非空节点加入节点队列 "0^0/^=—^,"0<^,…,"ofife/t人A:是单非空节点总数;(2) 从"o血2恥we中取出一个节点"oc^,得到no浙的3个bit的编码信息W/w2w3,按照 密钥中包含的水印图像大小和置乱的行序索引信息对二值图进行填充;(3) 重复步骤(2)直到二值图被填充满为止,最后得到二值图。
7、 根据权利要求l所述的基于Octree编码的三维网格数字盲水印方法,其特征在于所述 的步骤(5)中零水印相似性的检测(1) 初始化e^aZ-O^t^-O;(2) 遍历M和M',进行如下判断若M'
=0而A/M=I,则w柳加1.(3) 遍历结束后,得到floaU-egwfl〃幼w, 上述中M是第三方公证处注册的原始模型零水印数组,M'是待检测网格模型的零水印数组。Sum为比较编码总数,equal是相同的编码总数,义是零水印相关度。
全文摘要
本发明是一种基于Octree编码的三维网格数字盲水印方法首先通过主成分分析(PCA)对模型进行预处理,得到模型唯一的姿态朝向。然后对三维模型进行Octree剖分得到Octree结构和编码数据,选择特定Octree层次和节点的编码嵌入有意义的大容量水印信息。本发明提取水印时不需要原始模型数据,算法与模型拓扑无关,可以对点云数据进行水印嵌入。其特点是嵌入容量大,可抵抗旋转、平移、缩放和顶点重排序攻击,根据结合Octree高层编码构造的零水印,还可以在一定程度上抵抗均匀化简、噪声和重新网格化等攻击,具有较强的鲁棒性和普适性。
文档编号G06T1/00GK101178805SQ20071017930
公开日2008年5月14日 申请日期2007年12月12日 优先权日2007年12月12日
发明者沈旭昆, 军 舒, 越 齐 申请人:北京航空航天大学