CN110648270B - 一种可逆的三维模型可见水印嵌入方法 - Google Patents
一种可逆的三维模型可见水印嵌入方法 Download PDFInfo
- Publication number
- CN110648270B CN110648270B CN201910863658.8A CN201910863658A CN110648270B CN 110648270 B CN110648270 B CN 110648270B CN 201910863658 A CN201910863658 A CN 201910863658A CN 110648270 B CN110648270 B CN 110648270B
- Authority
- CN
- China
- Prior art keywords
- vertex
- watermark
- patch
- dimensional
- triangle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0021—Image watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0203—Image watermarking whereby the image with embedded watermark is reverted to the original condition before embedding, e.g. lossless, distortion-free or invertible watermarking
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Editing Of Facsimile Originals (AREA)
- Image Processing (AREA)
Abstract
一种可逆的三维模型可见水印嵌入方法属于水印嵌入领域,该方法内容主要包括:一.水印嵌入部分:1.1获取水印信息,1.2选取平滑区域,1.3将平滑区域投影到二维平面,1.4将水印数组与二维平滑区域对齐,1.5细分网格以嵌入水印;二.逆过程:2.1找到嵌入水印的平滑区域,2.2找到嵌入水印时新增的顶点和一分为多的三角面片,2.3删除新增的顶点和将一分为多的三角面片组合为一,本发明提出的可逆的可见水印嵌入方法用于对三维模型文件的标识版权和数据保护,对原始模型修改较少,并且可以将嵌入水印的模型恢复到原始模型,本发明可以在三维模型文件上嵌入汉字、英文字母、数字、图形标志等多种水印信息,具有一定的鲁棒性。
Description
技术领域
本发明属于水印嵌入技术领域,特别是涉及一种可逆的三维模型可见水印嵌入方法。
背景技术
随着数字多媒体技术的广泛应用和3D打印的流行,人们可以更加方便的使用模型文件来打印物体。但与此同时,不法分子对三维网格模型的复制和篡改也变得更加容易。所以,三维模型文件的版权保护成为了一个热点问题。
数字水印按其透明性,可以分为可见水印与不可见水印。不可见水印利用数字水印技术将水印信息嵌入到原始数据中,且肉眼无法观察到模型中的水印信息。它不影响原始数据的外观。可见水印指的是嵌入水印信息后,观察者可以在原始数据中感知到所嵌入的水印信息。
近年来,三维模型被广泛应用于动画设计、文物重建、机械设计、制造工业等领域中。作为一种重要的数字产品,其版权保护问题也引起了人们的广泛关注。Ohbuchi等人在ACM国际会议上第一次提出三维模型数字水印的概念,设计了利用三角形相似四元组、四面体体积比的不可见水印算法以及网格加密的可见水印算法。按照水印嵌入域的不同,可以分为空域水印与频域水印。空域水印算法是直接修改三维模型的顶点位置,频域的三维模型水印算法是对三维模型的几何信息进行频域变换,再对系数进行水印嵌入。
目前,三维模型的不可见水印算法已得到广泛研究,可见水印算法也有少量问世。但可逆的三维模型可见水印算法还没有出现。可逆的意思是,将嵌入水印的模型恢复到原始模型。相对于不可见水印,可见水印是有目的地使观察者感知到所嵌入的水印信息,适用于标识版权,防止非法使用受保护的数据等。例如,在模型上嵌入公司标志或一些有用信息可以明显地标识模型的归属。陆尘等人提出了一种可见水印算法,但只给出了嵌入几个简单的英文字符的可见水印效果,比如“WM”这两个简单字符。该算法未能给出绘制水印信息的办法。安新辰等人提出的可见水印算法可以嵌入汉字、英文字符和数字,但嵌入过程相对复杂,不仅需要细分网格,还需要对细分后的网格进行裁剪。获取的水印含有矢量信息,需要处理的内容较多,过程较复杂。而本发明的优势在于不仅可以嵌入汉字、英文字符和数字,还可以嵌入图样和标志,嵌入水印时对模型的改动较少,具有一定的鲁棒性,同时可以将嵌入水印的模型无损的恢复到原始模型。
发明内容
本发明针对现有技术存在的不足,旨在提供一种可逆的三维模型可见水印嵌入方法。该方法能够实现嵌入水印后的网格模型的无损恢复。
为解决上述技术问题,本发明采用的技术方案为:一种可逆的三维模型可见水印嵌入方法,包括水印嵌入过程和逆过程-恢复到原始模型:
一、水印嵌入过程,具体操作步骤如下:
1.1、获取水印信息的二维数组:将二维数组记为W=[(a,b),c],(a,b)代表二维数组的行与列的下标,c代表数组里该位置的数值0或1;
1.2、选取平滑区域:为了保证嵌入的水印的视觉效果,水印嵌入的位置最好选在三维模型的平滑区域。
选取平滑区域时,首先选取平滑区域的中心点:设原始三维网格模型(当原始三维模型为点云格式,可使用Delaunay三角剖分方法为点云模型构建三角面片,从而将点云模型变成网格模型)为Mod=(V,F),其中V为三维网格模型的顶点集合,V={vi|vi=(xi,yi,zi),xi,yi,zi∈R,1<i<N},其中vi为第i顶点,xi,yi,zi分别为顶点vi的三维坐标值,N为三维网格模型顶点总个数,F为三维网格模型三角面片集合,F={fj|fj=(vo,vp,vq)|vo,vp,vq∈V,1≤j≤Nf},其中vo,vp,vq为第j个面片的三个顶点,Nf为三维网格模型的三角面片总个数,用公式(1)计算的值作为平滑度的参考值,
公式(2)中顶点Vi的法向量是从模型的质心指向顶点Vi的,为了更好的计算平滑度的值,用代表顶点Vi的法向量,顶点Vk(k=1,2,···,Ni)表示顶点Vi的1环邻域的顶点,Ni代表顶点Vi的1环邻域顶点的个数;
通过遍历模型所有顶点,计算所有顶点的S值,找出S值最大的顶点作为平滑区域的中心点,找到中心点后,以中心点的K阶邻域三角面片作为平滑区域;K值的大小取决于嵌入水印信息的多少。
1.3、将平滑区域投影到二维平面:对平滑区域的投影到二维平面是在平滑区域中心点法向量方向上进行的,投影过程的实为三维坐标系的转换,以坐标原点为旋转中心点,将原坐标轴Z轴方向变换为平滑区域中心点法向量的方向,具体公式如下:
其中,R(·)为旋转矩阵,(x,y,z)代表原始平滑区域顶点坐标值,(X,Y,Z)代表投影后平滑区域顶点坐标值,取(X,Y)为二维平面坐标值,可具体理解为平滑区域内的顶点先绕X周旋转α角度,再绕Y周旋转β角度,最终Z周到达了法向量方向上。α是法向量与三维坐标系X·Z平面的夹角,β是法向量与三维坐标系Y·Z平面的夹角。
投影后的二维平滑区域记为s,s=(V′,C),V′={v′i|v′i=(x,y),1≤i≤N′},N′为平滑区域内顶点总数,V′为二维平滑区域内的顶点,C={cj,1≤j≤N′},C为平滑区域内顶点V′在原始模型内对应顶点的序号;
1.4将水印数组与二维平滑区域对齐:
遍历二维平滑区域s,求出区域内各个顶点横纵坐标的最大值和最小值,记为Xmax,Xmin,Ymax,Ymin,同样,遍历水印数组W,求出其各点横纵坐标的最大值和最小值,记为XW max,XW min,YW max,YW min,将水印数组的各点坐标乘以d,d为水印数组元素间的最小实际距离,以满足条件式(Xmax-Xmin)>d(XW max-XW min)和(Ymax-Ymin)>d(YW max-YW min),以确保水印信息的各点在平滑区域顶点范围内;
然后,将平滑区域中心顶点V0=(X0,Y0)与水印信息中心点v0=(x0,y0)对齐,如果水印数组的行数和列数为奇数,则水印数组中心点坐标为中点处,如果水印数组的行数和列数为偶数,则水印数组中心点坐标为行数和列数除以2;
遍历平滑区域的三角面片,判断每个三角面片内是否有水印数组中元素是“1”的点,如果有,记录下这些三角面片F′={ft1,ft2,…,fti,…},ti为三角面片在原始模型中的序号;
根据水印点和三角面片的三个顶点的坐标可以判断顶点是否位于三角形内,已知三角形ABC和点P,如果三角形PAB、PAC和PBC的面积之和与三角形ABC的面积相等,则可判定点P在三角形ABC内,包括在三条边上,如果不相等,则顶点位于三角形外;
1.5、细分网格以嵌入水印:在原始三维模型上细分第1.4步记录的三角面片F′以实现水印的嵌入,具体有如下细分方式:
A:三角面片一分为三
三角形的重心肯定在三角形的内部,设三角面片ABC的重心为V0=(x0,y0,z0),三角面片ABC的三个顶点坐标分别为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)。则x0=(x1+x2+x3)÷3,y0=(y1+y2+y3)÷3,z0=(z1+z2+z3)÷3,求出三角面片重心坐标后,将重心V0分别与三角面片ABC的三个顶点相连,如此,三角面片ABC一分为三,新顶点V0的向量可以通过ABC三个顶点向量的矢量和计算,新的三角面片的向量可由旧的三角面片ABC的向量代替;
B:三角面片一分为四或一分为五
在上一步已经找到三角面片ABC的重心V0,记三角面片边AB的中点为D,边AC的中点为E,它们的坐标分别为(x4,y4,z4),(x5,y5,z5)。x4=(x1+x2)÷2,y4=(y1+y2)÷2,z4=(z1+z2)÷2,x5=(x1+x3)÷2,y5=(y1+y3)÷2,z5=(z1+z3)÷2,如果要将三角面片一分为四,只需将三角面片ABC在一分为三的基础上连接顶点D与重心V0,如果要将三角面片一分为五,还需要将顶点E与重心V0连接,顶点D的向量为顶点A和B向量的矢量和,顶点E的向量为顶点A和C向量的矢量和;
C:三角面片一分为七、八或九
在三角面片ABC的三条边上分别找到三等分点,AD=DE=EB=1/3AB,AF=FG=GC=1/3AC,BH=HI=IC=1/3BC,在A步时已经将重心V0连接顶点A,B,C,如果要将三角面片一分为七,需要再将重心V0连接顶点D,E,F,G,H,I中的四个,同理,要想将面片一分为八或一分为九,则需将重心V0连接顶点D,E,F,G,H,I中的五个或六个;
二.逆过程-恢复到原始模型
2.1、找到嵌入水印的平滑区域
首先按照公式(1)和公式(2)在嵌入水印后的三维模型中找到平滑区域中心顶点,然后以中心顶点的(K+d×L/2)阶邻域三角面片作为平滑区域,K为嵌入过程的K阶邻域,d为水印数组元素间的最小实际距离,L为水印数组行和列中的最大值,加上d×L/2是为了确保选的平滑区域全部包含所有被细分的三角面片;
2.2、找到嵌入水印时新增的顶点和一分为多的三角面片
遍历平滑区域内的所有顶点,找到每个顶点的一环邻域顶点数为X的顶点V0′,如果水印嵌入过程面片被一分为三,X则为三,面片被一分为几,X就选几,记录该顶点及其一环邻域的顶点和面片;
2.3、删除新增的顶点并将一分为多的三角面片组合为一
这里有三种情况,分别是面片被一分为三,一分为四或五和一分为七、八或九,针对三种情况,可逐一进行处理:
一分为三时,将顶点V0′及其一环邻域的面片删除,然后用其一环邻域的三个顶点组成新的三角面片,新三角面片的法向量为删除面片的法向量;
一分为四或五时,顶点V0′的一环邻域的顶点必定有三个顶点在一条直线上,将一条直线上的三个顶点中的中间顶点删除,一分为四时有一个中间顶点,一分为五时有两个中间点,删除中间点和顶点V0′及其一环邻域的所有面片,用剩下的一环邻域的三个顶点组成新的面片,同样的,新三角面片的法向量为删除掉面片的法向量;
一分为七、八或九时,顶点V0′的一环邻域的顶点必定有三个或四个顶点在一条直线上,将一条直线上的中间顶点删除,保留两端的两个顶点,删除顶点V0′及其一环邻域的所有面片,用剩下的一环邻域的三个顶点组成新的面片,新三角面片的法向量为删除面片的法向量。
2.根据权利要求1所述的一种可逆的三维模型可见水印嵌入方法,其特征在于:获取水印信息的具体方法为:通过WindowsAPI函数GetGlyphOutline()函数来生成TrueType字体的字符轮廓点阵数组,数组里的内容为“0”和“1”,可以将不同字符的点阵数组进行结构上的拼接,以表达更丰富的水印内容。
3.根据权利要求1所述的一种可逆的三维模型可见水印嵌入方法,其特征在于:获取水印信息的具体方法为:读取一张绘制好的带有关键图样或标志的图片,将图片转换为灰度图,灰度图中的关键图样或标志处的灰度值肯定与其它位置的灰度值存在较大差异,将该处的灰度图的灰度值保存到二维数组中,关键位置的灰度值改为“1”,其它位置的灰度值改为“0”。
4.根据权利要求1所述的一种可逆的三维模型可见水印嵌入方法,其特征在于:步骤1.4中判断每个三角面片内是否有水印数组元素中是“1”的顶点采用以下方法:
根据水印顶点和三角面片的三个顶点的坐标可以判断顶点是否位于三角形内,已知三角形ABC和点P,如果三角形PAB、PAC和PBC的面积之和与三角形ABC的面积相等,则可判定点P在三角形ABC内,包括在三条边上,如果不相等,则顶点位于三角形外。
本发明的优点及其积极效果是:
本发明提出的可逆的可见水印嵌入方法用于对三维模型文件的标识版权和数据保护,对原始模型修改较少,并且可以将嵌入水印的模型无损的恢复到原始模型。加入水印的模型被打印出来后是看不到水印信息的。本发明可以在三维模型文件上嵌入汉字、英文字母、数字、图形标志等多种水印信息,具有一定的鲁棒性。
附图说明
图1是本发明的水印嵌入流程图;
图2是本发明中字符“科大3D”点阵数组转换成的二值图像;
图3是本发明中科大校徽点阵数组转换成的二值图像;
图4是本发明中三种网格细分方式示意图;
图5是本发明中字符“科大3D”水印模型效果图,(a)为网格格式,(b)为点云格式;
图6是本发明中科大校徽水印模型效果图,(a)为网格模式,(b)为点云模式;
图7是本发明中字符“科”水印模型效果图,(a)rabbit模型,(b)为茶壶模型;
图8是本发明中字符“3”水印模型效果图,(a)rabbit模型,(b)为茶壶模型,(c)为bunny模型;
图9是本发明中字符“D”水印模型效果图,(a)为rabbit模型,(b)为茶壶模型,(c)为bunny模型;
图10是本发明中的逆过程-恢复到原始模型流程图。
具体实施方式
为使本发明的目的、特征和优点能够更为明显易懂,下面对本发明的具体实施方式做详细的说明。
以三维模型rabbit和水印信息“科大3D”为例,说明可逆的可见三维网格模型水印方法的实现过程。具体过程如下:
一.水印嵌入过程,具体步骤如下:
具体操作步骤为(如图1):1.1获取水印信息的二维数组;1.2选取平滑区域;1.3将平滑区域投影到二维平面;1.4将水印数组与二维平滑区域对齐;1.5细分网格以嵌入水印。
1.1.获取水印信息的二维数组
这里的水印信息指的是以“0”和“1”为内容的二维数组。
通过WindowsAPI函数GetGlyphOutline()函数来生成TrueType字体的“科”,“大”,“3”,“D”四个字符的轮廓点阵数组,再将这四个数组拼接在一个数组里,数组里的内容为“0”和“1”。如图2为字符“科大3D”点阵数组转换成的二值图像。
1.2.选取平滑区域
为了保证嵌入的水印的视觉效果,水印嵌入的位置最好选在三维模型rabbit的平滑区域。
选取平滑区域时,首先选取平滑区域的中心点。读入的原始三维网格模为Mod=(V,F),其中V为三维网格模型的顶点集合,V={vi|vi=(xi,yi,zi),xi,yi,zi∈R,1<i<N},其中vi为第i顶点,xi,yi,zi分别为顶点vi的三维坐标值,N为三维网格模型顶点总个数,F为三维网格模型三角面片集合,F={fj|fj=(vo,vp,vq)|vo,vp,vq∈V,1≤j≤Nf},其中vo,vp,vq为第j个面片的三个顶点,Nf为三维网格模型的三角面片总个数,用公式(1)计算的值作为平滑度的参考值,
公式(2)中顶点Vi的法向量是从模型的质心指向顶点Vi的,为了更好的计算平滑度的值,用代表顶点Vi的法向量,顶点Vk(k=1,2,···,Ni)表示顶点Vi的1环邻域的顶点,Ni代表顶点Vi的1环邻域顶点的个数。公式(1)中的向量是根据公式(2)计算出来的,向量如果不是单位向量的话先转换为单位向量再参与公式(1)的计算,并且保证向量的方向是从模型的内部指向外部的。公式(1)中的代表平滑区域的中心点的法向量,代表用优先遍历法找到的距离顶点Vi最近顶点的法向量(也是根据公式2计算的)。最后通过遍历模型所有顶点,计算所有顶点的S值,找出S值最大的顶点作为平滑区域的中心点。两个单位向量的点乘运算的值等于二者夹角的余弦值,值越大,夹角越小,代表越平滑。
找到中心点后,以中心点的K阶邻域三角面片作为平滑区域。K值的大小取决于嵌入水印信息的多少。最终在rabbit模型上找到的平滑区域位于模型的底部。
1.3.将平滑区域投影到二维平面
选中的平滑区域的三角面片是由顶点组成的,其实就是一些顶点的集合。对平滑区域的投影到二维平面是在平滑区域中心点法向量方向上进行的。投影过程的实为三维坐标系的转换,以坐标原点为旋转中心点,将原坐标轴Z轴方向变换为平滑区域中心点法向量的方向。具体公式如下:
其中,R(·)为旋转矩阵,(x,y,z)代表原始平滑区域顶点坐标值,(X,Y,Z)代表投影后平滑区域顶点坐标值,取(X,Y)为二维平面坐标值。
投影后的二维平滑区域记为s,s=(V′,C),V′={v′i|v′i=(x,y),1≤i≤N′},N′为平滑区域内顶点总数,V′为二维平滑区域内的顶点,C={cj,1≤j≤N′},C为平滑区域内顶点V′在原始模型内对应顶点的序号;
1.4.将水印数组与二维平滑区域对齐
在对齐之前需要规定好数组元素间的最小实际距离d,因为三维模型的顶点之间是有实际距离的。计算平滑区域内每个顶点到该顶点的1环领域顶点距离的平均值L,最后求出平滑区域内所有顶点L值的均值L′=L/N′(N′为平滑区域内顶点的总数),多次尝试,当d=1.4L′时,水印嵌入的效果最好。
遍历二维平滑区域s,求出区域内各个顶点横纵坐标的最大值和最小值,记为Xmax,Xmin,Ymax,Ymin,同样,遍历水印信息W,求出其区域内各点横纵坐标的最大值和最小值,记为XW max,XW min,YW max,YW min,将二维平滑区域内的各点坐标乘以d,以满足条件式(Xmax-Xmin)>d(XW max-XW min)和(Ymax-Ymin)>d(YW max-YW min),即水印信息的各点必须在平滑区域顶点范围内。
之后,将平滑区域中心点V0=(X0,Y0)与水印信息中心点v0=(x0,y0)对齐。如果数组的行数和列数为奇数,则水印中心点坐标为中点处,如果数组的行数和列数为偶数,则水印中心点坐标为行数和列数除以2。
遍历平滑区域的三角面片,判断每个三角面片内是否有水印数组元素中是“1”的点,如果有,记录下这些三角面片F′={ft1,ft2,…,fti,…},ti为三角面片在原始模型中的序号。
1.5.细分网格以嵌入水印
在原始三维模型上细分第1.4步记录的三角面片F′以实现水印的嵌入。以最简单的细分方法(将三角面片一分为三)细分三角面片。具体内容如下:
三角形的重心肯定在三角形的内部并且方便计算,假设三角面片ABC的重心为V0=(x0,y0,z0),三角面片ABC的三个顶点坐标分别为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)。则x0=(x1+x2+x3)÷3,y0=(y1+y2+y3)÷3,z0=(z1+z2+z3)÷3。求出三角面片重心坐标后,将重心V0分别与三角面片ABC的三个顶点相连。如此,三角面片ABC一分为三。新顶点V0的向量可以通过ABC三个顶点向量的矢量和计算。新的三角面片的向量可由旧的三角面片ABC的向量代替。
嵌入水印信息“科大3D”后的rabbit模型如图5所示。
二.逆过程-恢复到原始模型
逆过程需要三步骤实现(如图10):1找到嵌入水印的平滑区域;2找到嵌入水印时新增的顶点和一分为三的三角面片;3删除新增的顶点和将一分为三的三角面片组合为一。具体内容如下:
2.1.找到嵌入水印的平滑区域
读入嵌入水印信息“科大3D”后的rabbit模型后,首先寻找嵌入水印的平滑区域。嵌入水印时找到的平滑区域已经是三维模型的最平滑区域了,将平滑区域的部分面片细分后该区域还是模型的最平滑的区域。只需将平滑区域的范围变大以确保包含所有被细分的三角面片。寻找平滑区域的的方法还是按照水印嵌入过程中选取平滑区域的方法。
首先按照公式一和公式二找到平滑中心点,然后以中心点的(K+d×L/2)阶邻域三角面片作为平滑区域。K为嵌入过程的K阶邻域,d为水印数组元素间的最小实际距离,L为水印数组行和列中的最大值。加上d×L/2是为了确保选的平滑区域全部包含所有被细分的三角面片。
2.2.找到嵌入水印时新增的顶点和一分为三的三角面片
遍历平滑区域内的所有顶点,找到一环邻域顶点数为三的顶点V0′。记录该顶点的下标,再找到该顶点的一环邻域的顶点和面片。
3.删除新增的顶点和将一分为三的三角面片组合为一
将顶点V0′和这个顶点的一环邻域面片删除,然后用这个顶点的一环邻域的三个顶点组成新的三角面片,新三角面片的法向量为删除掉面片的法向量。
这样就可以将嵌入水印的模型无损的恢复到原始模型了。
为了展示该方法的实际效果,分别对三维模型“rabbit”,“茶壶”,“bunny”嵌入不同的水印信息,水印信息有汉字、英文字母、数字和科大校徽图案,实际效果见图5-9。
为了有效说明本发明的效果,利用表格数据对实验结果进行展示和分析,以证明本发明具有优良的性能。
附表1展示了三个三维网格模型分别嵌入不同类型的水印信息后模型顶点数和面片数的前后变化。
通过表1可以看出,嵌入水印后,模型的顶点和面片数的增加量都非常小,除了“壶”模型。“壶”模型的数据量相对于其它两个模型要小很多,所以当嵌入相同水印信息时,“壶”模型的顶点和面片数的增加量较大。总体而言,嵌入水印后,模型的顶点和面片数的增加量都在10%以下,个别在1%以下。说明嵌入水印对模型的改动很小,能保证标识版权的同时保证模型的外观不变。不会影响模型的正常使用。
表1
本发明主要应用于三维模型文件的标识版权和数据保护。三维模型数据需要在相应的软件平台来显示模型的整体结构和嵌入在模型上的水印信息,模型被打印出来后是看不到任何对模型的修改的。所以很好的达到了版权标注的作用。
本发明的优势在于不仅可以嵌入汉字、英文字符和数字,还可以嵌入图样和标志,嵌入水印时对模型的改动较少,具有一定的鲁棒性,同时可以将嵌入水印的模型无损的恢复到原始模型,达到可逆的效果。
上面对本发明的实施例作了详细说明,但是本发明并不限于上述实施例,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (4)
1.一种可逆的三维模型可见水印嵌入方法,其特征在于,包括水印嵌入过程和逆过程-恢复到原始模型:
一、水印嵌入过程,具体操作步骤如下:
1.1、获取水印信息的二维数组:将二维数组记为W=[(a,b),c],(a,b)为二维数组中各元素的位置,c为相应位置的元素,其值为0或1;
1.2、选取平滑区域:首先选取平滑区域的中心点:设原始三维网格模型为Mod=(V,F),其中V为三维网格模型的顶点集合,V={vi|vi=(xi,yi,zi),xi,yi,zi∈R,1<i<N},其中vi为第i顶点,xi,yi,zi分别为顶点vi的三维坐标值,N为三维网格模型顶点总个数,F为三维网格模型三角面片集合,F={fj|fj=(vo,vp,vq)|vo,vp,vq∈V,1≤j≤Nf},其中vo,vp,vq为第j个面片的三个顶点,Nf为三维网格模型的三角面片总个数,用公式(1)计算的值作为平滑度的参考值,
公式(2)中顶点Vi的法向量是从模型的质心指向顶点Vi的,为了更好的计算平滑度的值,用代表顶点Vi的法向量,顶点Vk(k=1,2,···,Ni)表示顶点Vi的1环邻域的顶点,Ni代表顶点Vi的1环邻域顶点的个数;
通过遍历模型所有顶点,计算所有顶点的S值,找出S值最大的顶点作为平滑区域的中心点,找到中心点后,以中心点的K阶邻域三角面片作为平滑区域;
1.3、将平滑区域投影到二维平面:对平滑区域的投影到二维平面是在平滑区域中心点法向量方向上进行的,投影过程实为三维坐标系的转换,以坐标原点为旋转中心点,将原坐标轴Z轴方向变换为平滑区域中心点法向量的方向,具体公式如下:
其中,R(·)为旋转矩阵,(x,y,z)代表原始平滑区域顶点坐标值,(X,Y,Z)代表投影后平滑区域顶点坐标值,取(X,Y)为二维平面坐标值,
投影后的二维平滑区域记为s,s=(V′,C),V′={v′i|v′i=(x,y),1≤i≤N′},V′为二维平滑区域内的顶点,N′为平滑区域内顶点总数,C={cj,1≤j≤N′},C为平滑区域内顶点V′在原始模型内对应顶点的序号;
1.4将水印数组与二维平滑区域对齐:
遍历二维平滑区域s,求出区域内各个顶点横纵坐标的最大值和最小值,记为Xmax,Xmin,Ymax,Ymin,同样,遍历水印数组W,求出其各点横纵坐标的最大值和最小值,记为XW max,XW min,YW max,YW min,将水印数组的各点坐标乘以d,d为水印数组元素间的最小实际距离,以满足条件式(Xmax-Xmin)>d(XW max-XW min)和(Ymax-Ymin)>d(YW max-YW min),以确保水印信息的各点在平滑区域顶点范围内;
然后,将平滑区域中心顶点V0=(X0,Y0)与水印信息中心点v0=(x0,y0)对齐,如果水印数组的行数和列数为奇数,则水印数组中心点坐标为中点处,如果水印数组的行数和列数为偶数,则水印数组中心点坐标为行数和列数除以2;
遍历平滑区域的三角面片,判断每个三角面片内是否有水印数组中元素是“1”的点,如果有,记录下这些三角面片F′={ft1,ft2,…,fti,…},ti为三角面片在原始模型中的序号;
根据水印点和三角面片的三个顶点的坐标可以判断顶点是否位于三角形内,已知三角形ABC和点P,如果三角形PAB、PAC和PBC的面积之和与三角形ABC的面积相等,则可判定点P在三角形ABC内,包括在三条边上,如果不相等,则顶点位于三角形外;
1.5、细分网格以嵌入水印:在原始三维模型上细分三角面片F′以实现水印的嵌入,具体有如下细分方式:
A:三角面片一分为三
三角形的重心在三角形的内部,设三角面片ABC的重心为V0=(x0,y0,z0),三个顶点坐标分别为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),则x0=(x1+x2+x3)÷3,y0=(y1+y2+y3)÷3,z0=(z1+z2+z3)÷3,将重心V0分别与三角面片ABC的三个顶点相连,如此,三角面片ABC一分为三,新顶点V0的向量可以通过ABC三个顶点向量的矢量和计算,新的三角面片的向量可由旧的三角面片ABC的向量代替;
B:三角面片一分为四或一分为五
在上一步已经找到三角面片ABC的重心V0,记三角面片边AB的中点为D,边AC的中点为E,它们的坐标分别为(x4,y4,z4),(x5,y5,z5), x4=(x1+x2)÷2,y4=(y1+y2)÷2,z4=(z1+z2)÷2,x5=(x1+x3)÷2,y5=(y1+y3)÷2,z5=(z1+z3)÷2,如果要将三角面片一分为四,只需将三角面片ABC在一分为三的基础上连接顶点D与重心V0,如果要将三角面片一分为五,还需要将顶点E与重心V0连接,顶点D的向量为顶点A和B向量的矢量和,顶点E的向量为顶点A和C向量的矢量和;
C:三角面片一分为七、八或九
在三角面片ABC的三条边上分别找到三等分点,AD=DE=EB=1/3AB,AF=FG=GC=1/3AC,BH=HI=IC=1/3BC,在A步时已经将重心V0连接顶点A,B,C,如果要将三角面片一分为七,需要再将重心V0连接顶点D,E,F,G,H,I中的四个,同理,要想将面片一分为八或一分为九,则需将重心V0连接顶点D,E,F,G,H,I中的五个或六个;
二.逆过程-恢复到原始模型
2.1、找到嵌入水印的平滑区域
首先按照公式(1)和公式(2)在嵌入水印后的三维模型中找到平滑区域中心顶点,然后以中心顶点的(K+d×L/2)阶邻域三角面片作为平滑区域,K为嵌入过程的K阶邻域,d为水印数组元素间的最小实际距离,L为水印数组行和列中的最大值,加上d×L/2是为了确保选的平滑区域全部包含所有被细分的三角面片;
2.2、找到嵌入水印时新增的顶点和一分为多的三角面片
遍历平滑区域内的所有顶点,找到每个顶点的一环邻域顶点数为X的顶点V0′,如果水印嵌入过程面片被一分为三,X则为三,面片被一分为几,X就选几,记录该顶点及其一环邻域的顶点和面片;
2.3、删除新增的顶点并将一分为多的三角面片组合为一
这里有三种情况,分别是面片被一分为三,一分为四或五和一分为七、八或九,针对三种情况,可逐一进行处理:
一分为三时,将顶点V0′及其一环邻域的面片删除,然后用其一环邻域的三个顶点组成新的三角面片,新三角面片的法向量为删除面片的法向量;
一分为四或五时,顶点V0′的一环邻域的顶点必定有三个顶点在一条直线上,将一条直线上的三个顶点中的中间顶点删除,一分为四时有一个中间顶点,一分为五时有两个中间点,删除中间点和顶点V0′及其一环邻域的所有面片,用剩下的一环邻域的三个顶点组成新的面片,同样的,新三角面片的法向量为删除掉面片的法向量;
一分为七、八或九时,顶点V0′的一环邻域的顶点必定有三个或四个顶点在一条直线上,将一条直线上的中间顶点删除,保留两端的两个顶点,删除顶点V0′及其一环邻域的所有面片,用剩下的一环邻域的三个顶点组成新的面片,新三角面片的法向量为删除面片的法向量。
2.根据权利要求1所述的一种可逆的三维模型可见水印嵌入方法,其特征在于:获取水印信息的具体方法为:通过Windows API函数GetGlyphOutline()函数来生成TrueType字体的字符轮廓点阵数组,数组里的内容为“0”和“1”,可以将不同字符的点阵数组进行结构上的拼接,以表达更丰富的水印内容。
3.根据权利要求1所述的一种可逆的三维模型可见水印嵌入方法,其特征在于:获取水印信息的具体方法为:读取一张绘制好的带有关键图样或标志的图片,将图片转换为灰度图,灰度图中的关键图样或标志处的灰度值肯定与其它位置的灰度值存在较大差异,将该处的灰度图的灰度值保存到二维数组中,关键位置的灰度值改为“1”,其它位置的灰度值改为“0”。
4.根据权利要求1所述的一种可逆的三维模型可见水印嵌入方法,其特征在于:步骤1.4中判断每个三角面片内是否有水印数组元素中是“1”的顶点采用以下方法:
根据水印顶点和三角面片的三个顶点的坐标可以判断顶点是否位于三角形内,已知三角形ABC和点P,如果三角形PAB、PAC和PBC的面积之和与三角形ABC的面积相等,则可判定点P在三角形ABC内,包括在三条边上,如果不相等,则顶点位于三角形外。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910863658.8A CN110648270B (zh) | 2019-09-12 | 2019-09-12 | 一种可逆的三维模型可见水印嵌入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910863658.8A CN110648270B (zh) | 2019-09-12 | 2019-09-12 | 一种可逆的三维模型可见水印嵌入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110648270A CN110648270A (zh) | 2020-01-03 |
CN110648270B true CN110648270B (zh) | 2022-08-23 |
Family
ID=69010468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910863658.8A Active CN110648270B (zh) | 2019-09-12 | 2019-09-12 | 一种可逆的三维模型可见水印嵌入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110648270B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032743B (zh) * | 2021-03-19 | 2023-01-06 | 华南理工大学 | 一种基于信息嵌入的四面体网格模型可逆变形方法及应用 |
CN113378325A (zh) * | 2021-06-30 | 2021-09-10 | 广东科学技术职业学院 | 基于面积法的面向曲面零件测量点的网格面片检索方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339456A (zh) * | 2010-07-22 | 2012-02-01 | 山东大学 | 一种对相似变换鲁棒的三维模型可逆水印装置及方法 |
CN105574803A (zh) * | 2015-09-16 | 2016-05-11 | 湖南大学 | 二维cad工程图的可逆水印方法、水印嵌入和水印提取方法 |
CN106485642A (zh) * | 2016-09-30 | 2017-03-08 | 北京交通大学 | 在三维网格模型中嵌入可见水印的方法 |
CN109934936A (zh) * | 2019-03-07 | 2019-06-25 | 太原科技大学 | 一种基于点阵字符的三维模型打印可见水印嵌入方法 |
-
2019
- 2019-09-12 CN CN201910863658.8A patent/CN110648270B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339456A (zh) * | 2010-07-22 | 2012-02-01 | 山东大学 | 一种对相似变换鲁棒的三维模型可逆水印装置及方法 |
CN105574803A (zh) * | 2015-09-16 | 2016-05-11 | 湖南大学 | 二维cad工程图的可逆水印方法、水印嵌入和水印提取方法 |
CN106485642A (zh) * | 2016-09-30 | 2017-03-08 | 北京交通大学 | 在三维网格模型中嵌入可见水印的方法 |
CN109934936A (zh) * | 2019-03-07 | 2019-06-25 | 太原科技大学 | 一种基于点阵字符的三维模型打印可见水印嵌入方法 |
Non-Patent Citations (9)
Title |
---|
DCT结合模糊推理的鲁棒数字水印算法;赵康等;《控制工程》;20171220(第12期);1-4 * |
Reversibility improved data hiding in 3D mesh models using prediction-error expansion and sorting;Qilong Zhang;《https://www.sciencedirect.com/science/article/pii/S0263224118311618》;20190331;738-746 * |
Reversible watermarking of 3D mesh models by prediction-error expansion;Hao-tian Wu;《2008 IEEE 10th Workshop on Multimedia Signal Processing》;20081105;1-7 * |
STL模型的无损水印算法研究;李杰;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20190315;I138-30 * |
基于三维网格的可逆水印算法研究;朱安平;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20130215;I138-60 * |
基于单向预测误差扩展的三维医学图像可逆水印算法;李琦;《计算机应用》;20190329;483-487 * |
基于网格细分和边界自适应的三维模型可见水印;安新辰等;《应用科学学报》;20160930(第05期);1-5 * |
基于顶点权值的三维模型水印算法及优化;蔚敏;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20120415;I138-64 * |
空域可逆图像水印技术研究;陈先意;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20190315;I138-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN110648270A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wagner | Robust watermarking of polygonal meshes | |
Ohbuchi et al. | Data embedding algorithms for geometrical and non-geometrical targets in three-dimensional polygonal models | |
US6201881B1 (en) | Embedding information in three-dimensional geometric model | |
Chao et al. | A high capacity 3D steganography algorithm | |
Garcia et al. | Texture-based watermarking of 3D video objects | |
Amat et al. | Lossless 3D steganography based on MST and connectivity modification | |
US8610709B2 (en) | Method and apparatus for watermarking of 3D mesh model | |
Ohbuchi et al. | Embedding data in 3D models | |
CN110648270B (zh) | 一种可逆的三维模型可见水印嵌入方法 | |
Ai et al. | A new digital watermarking scheme for 3D triangular mesh models | |
KR20090091575A (ko) | 구면 파라미터기법을 이용한 3 차원 메쉬 모델의 워터마킹장치 및 방법 | |
JP4181728B2 (ja) | ベクトル型地図データに電子透かし情報を埋め込む方法 | |
Beamsley | Securing digital image assets in museums and libraries: A risk management approach | |
Eshraghi et al. | 3D watermarking robust to accessible attacks | |
Kuo et al. | A blind robust watermarking scheme for 3D triangular mesh models using 3d edge vertex detection | |
KR20090030454A (ko) | 방위각을 이용한 벡터 데이터 워터마크 삽입방법 및검출방법 | |
KR20010102892A (ko) | 벡터 이미지 워터마킹 방법 | |
JPH06348837A (ja) | 文字図形の分割読取り圧縮記憶装置と合成出力装置 | |
KR100425869B1 (ko) | 가상거리영상을 이용한 3차원 영상의 워터마크 삽입 방법및 장치 | |
Cao et al. | Reversible visible watermarking algorithm for 3D models | |
Kumar et al. | Watermarking of Computer Generated Imagery: A Review | |
CN107154011B (zh) | 定位篡改图元组的矢量地图完整性认证方法 | |
JP2011008685A (ja) | 異方性反射媒体作成装置、異方性反射媒体作成方法、モザイク画像作成装置、モザイク画像作成方法、およびプログラム | |
CN109493269A (zh) | 一种基于构造缠绕画的水印方案 | |
Rahman et al. | Parity enhanced topology-based spot area watermarking method for copyright protection of layered 3D triangular mesh data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |