Professional Documents
Culture Documents
www.elsevier.com/locate/cad
Abstract
A public fragile watermarking scheme based on the sensitivity of vertex geometry is proposed for 3D model authentication. In the 3D fragile
watermarking embedding, slightly perturbing the positions of a subset of vertices is usually needed to keep them in some predefined relationship
with their neighboring vertices. Two problems frequently arise in the embedding stage: the causality problem and the convergence problem. The
causality problem arises while the neighboring relationship of a former processed vertex is influenced by the perturbing of its latter processed
neighboring vertices. The convergence problem means that the original model has been heavily distorted before some vertices reach the predefined
relationship. In this paper, we propose a multi-function vertex embedding method and an adjusting-vertex method to overcome these two problems.
The proposed method does not need the original model and watermarks for authentication; moreover, the key for extracting watermarks is relatively
smaller than that of previous works. For some artistic or technical models, sometimes it is very important to control the distortion ratio caused
by watermark embedding. Our method can control the average distortion by the keys used in watermark embedding. Experimental and analytic
results on various kinds of 3D models show the effectiveness of the scheme.
c 2006 Elsevier Ltd. All rights reserved.
3. The proposed watermarking scheme this predefined relationship, we set it and all its neighboring
vertices as suspicious vertices.
In the proposed watermarking scheme, two major methods,
the multi-function vertex embedding method and the adjusting- 3.1. The watermark embedding scheme
vertex method, are proposed for 3D model authentication. An
overview of our watermark embedding and extraction schemes Given a mesh M(V, C), where V is the vertex set and
is illustrated in Fig. 3. C is the connectivity relationship on M, a watermark W =
The multi-function vertex embedding method means that the (w1 , w2 , . . . , wn ) is embedded by inducing each wi with a
three coordinates of a mark vertex are assigned and embedded small displacement in a subset of V . A vertex v is noted as
with different functions of watermark in the watermark v(x1 , x2 , x3 ) or v 0 (x10 , x20 , x30 ) before or after embedding (or
embedding stage. At first, we select a set of mark vertices from say marking), respectively. The approach for embedding wi in
the original mesh model. The union of the selected vertices and vertex v is as follows:
their neighboring vertices should cover the whole model. Then (i) The three coordinates of vertex v(x1 , x2 , x3 ) are defined
we modulate the x1 coordinate of each vertex to indicate if it with different functions: x1 is used to indicate if v is a
is a mark vertex. For mark vertices, we embed wi and h(wi ) mark vertex (i.e., v is a watermark embedded vertex), x2
into their x2 and x3 coordinates respectively. The embedding is used for embedding watermark wi , and x3 is used for
needs to ensure all mark vertices satisfy the relationship of embedding h(wi ), where h is a predefined hash function
h i = h(wi ) after watermark embedding, and this relationship and is used for checking modification.
will be used for the authentication check in the extraction stage. (ii) For each vertex, its x1 value is divided by a factor k w to
In the watermark extraction stage, we examine a mesh model generate an integer. If v is a mark vertex, the integer must
by first checking the x1 coordinate of every vertex to see if be odd; otherwise, x1 is changed to x1 + k w . If v is a
it is a mark vertex. Then for each mark vertex, we extract non-mark vertex, the integer must be even; otherwise, x1
the possible embedded information w 0 and h 0 from its x2 and is changed to x1 + k w . That is,
x3 coordinates respectively and examine if it can satisfy the jx k
1
relationship h(w0 ) = h 0 . For any mark vertex that can not hold m= w
k
mod 2 (1)
1158 C.-M. Chou, D.-C. Tseng / Computer-Aided Design 38 (2006) 1154–1165
x10 = (m = 0 and v is not a mark vertex). (2) model has been heavily distorted before some vertices reach
x1 + k w , otherwise. the predefined relationship. The use of the “adjusting vertex”
method guarantees that there is no endless perturbing while
(iii) For a mark vertex v, its barycenters of x2 and x3
embedding watermarks; thus there is no convergence problem
coordinates, x2c and x3c , are calculated by averaging the
in the proposed method. The detailed watermark embedding
coordinates of its neighboring vertices,
procedure is given in Algorithm 1.
1 X
x cj = x j , j = 2, 3, (3)
|N (v)| N (v) Algorithm 1 (The Watermark Embedding Algorithm).
where N (v) is the set of v’s neighboring vertices and
|N (v)| is the size of N (v). In this paper, we use the for each vertex vi in the mesh model
“barycenters” of a vertex to represent the vertex features { vi .mark = False
calculated by Eq. (3). vi .mark eligible = True
(iv) For a mark vertex v, its x j coordinate is slightly moved vi .adjusting eligible = True
toward x cj to the new locations x ej such that |x ej − x cj | are }
q
divisible by k j , j = 2, 3, respectively, set v1 as the active vertex, vact
while (vact ! = NULL)
q
(
e x j − (|x j − x cj | mod k j ), if x j > x cj ; { if vact is a mark eligible vertex and there is at least one
xj = q (4)
x j + (|x j − x cj | mod k j ), otherwise. eligible adjusting vertex among vact ’s neighboring
q vertices then
(v) Finally, we employ k j and k dj to embed watermark wi and { randomly select one eligible adjusting vertex v j from
hash function value h i in x ej , vact ’s neighboring vertices as its adjusting vertex
vact .mark = True
x + d j , if x j > x cj
e
0
x j = ej , j = 2, 3, (5) vact .mark eligible = False
x j − d j , otherwise vact .adjusting eligible = False
q
k2
q
k v j .mark eligible = False
where d2 = w , d3 = 3d h i , h i = h(wi ), 0 < wi < k2d ,
k2d i k3 for each vact ’s neighboring vertex vi
0 < hi < k3d , wi , h i , k2d , k3d ∈ N ,
and h is a predefined vi .adjusting eligible = False
hash function. The embedding perturbs x ej toward the calculate the x2 and x3 coordinate barycenters of vact
original value x j with a small displacement d j which is using Eq. (3)
q
always less than k j , j = 2, 3. embed watermarks to vact ’s x2 and x3 coordinates
using Eqs. (4) and (5)
k w , k j , k dj , and h will serve as the keys in the watermark
q
}
extraction stage. elseif vact is surrounded by all adjusting vertices then
The causality problem and the convergence problem arise { set vact as an isolated vertex
in the embedding stage when we embed watermarks through vact .mark = True
the whole model. It is obvious that the barycenters (x2 and }
x3 coordinates) of a former processed vertex will be changed set the next vertex as the active vertex, vact (Traverse the
when any of its neighboring vertices was selected to be a whole model)
mark vertex too and need to be perturbed. We propose an }
“adjusting vertex” method to overcome the causality problem. set v1 as the active vertex, vact
The function of the adjusting vertex is to keep the barycenters while (vact ! = NULL)
of the mark vertex unchanged. For each chosen mark vertex, { modulate vact ’s x1 coordinate according to its mark flag
we randomly assign an adjusting vertex from its neighboring using Eqs. (1) and (2)
vertices. In other words, a vertex is qualified to be a mark vertex if vact is a mark vertex then
as long as it can find an adjusting vertex among its neighboring make compensation perturbation on vact ’s adjusting
vertices. Any mark vertex can’t be taken as an adjusting vertex using Eq. (6)
vertex and vice versa. To avoid the causality problem, the set the next vertex as the active vertex, vact (Traverse the
neighboring vertices of the previously selected mark vertices whole model)
can’t be taken as adjusting vertices for later mark vertices. This }
constraint eliminates the causality problem but may leave a for each isolated vertex vi in the mesh model
few isolated vertices, which is a vertex wholly surrounded by { calculate the x2 and x3 coordinate barycenters of vi
adjusting vertices. The isolated vertices will be treated as mark using Eq. (3)
embed watermarks to vi ’s x2 and x3 coordinates using
vertices and be perturbed after all adjusting vertices having
Eqs. (4) and (5)
been modulated. Most 3D fragile watermarking embedding
}
schemes perturb the positions of a subset of vertices to keep
C.-M. Chou, D.-C. Tseng / Computer-Aided Design 38 (2006) 1154–1165 1159
Three flags are used in the algorithm to indicate the state adjusting vertices and other non-mark vertices. If vi is
of each vertex in the mesh model: the “mark” flag indicates surrounded by all adjusting vertices, it is an isolated vertex and
if a vertex is a mark vertex or a non-mark vertex, the will be set as a mark vertex; otherwise, vi can pick a non-mark
“mark eligible” flag indicates if a vertex is eligible to be a mark vertex from its neighboring vertices to be its adjusting vertex,
vertex, and the “adjusting eligible” flag indicates if a vertex is and it will be set as a mark vertex. In both cases, vi can be set
eligible to be an adjusting vertex. Initially, all vertices are set as a mark vertex; thus, there is no such non-covered vertex vi .
to be non-mark, mark eligible, and adjusting eligible vertices.
Then we set v1 as the active vertex and traverse the whole model 3.2. The watermark extraction scheme and tamper detection
starting from v1 to select a set of mark vertices. Any traversal
In the watermark extraction stage, k w , k j , k dj , and h serve
q
algorithm works fine in this scheme as long as it can visit every
vertex exactly once. In our experiments, a simple breadth-first as the keys for malicious change detection. The detailed
search (BFS) algorithm is used for the mesh vertex traversal. A watermark extraction procedure is given in Algorithm 2.
vertex is set to be a mark vertex if it is a mark eligible vertex
and there is at least one eligible adjusting vertex among its Algorithm 2 (The Watermark Extraction Algorithm).
neighboring vertices. We randomly select one eligible adjusting
vertex from its neighboring vertices as its adjusting vertex set all vertices in the mesh model as non-suspicious vertices
and then modify the related flags: set the active vertex as set v1 as the active vertex, vact
a mark, non-mark eligible, and non-adjusting eligible vertex. while (vact ! = NULL)
The selected adjusting vertex is set as a non-mark eligible { Check vact ’s x1 coordinate to see if it is a mark vertex
vertex, and all active vertex’s neighboring vertices are set as if vact is a mark vertex then
non-adjusting eligible vertices. For each selected mark vertex, { calculate the x2 and x3 coordinate barycenters of
the barycenters of their x2 and x3 coordinates are calculated vact using Eq. (3)
using Eq. (3). Then we slightly perturb their x2 and x3 extract w 0 and h 0 from vact ’s x2 and x3 coordinates
coordinates to embed watermarks by using Eqs. (4) and (5). using Eq. (7)
A vertex that is surrounded by all adjusting vertices (i.e., an if h(w 0 )! = h 0 then
isolated vertex) is set to be a mark vertex. An isolated vertex’s set vact and all its neighboring vertices as
mark eligible and adjusting eligible flags are not modified suspicious vertices
since these two flags won’t be checked anymore if a vertex }
is surrounded by all adjusting vertices. Without adjusting set the next vertex as the active vertex, vact (Traverse the
vertices, the isolated vertices are watermarked after all their whole model)
neighboring adjusting vertices have been perturbed to prevent }
their barycenters from being changed. Therefore, the isolated
vertices are not watermarked at this stage. The selection of mark Initially, all vertices of the mesh model are set to be non-
vertices will keep going till the end of mesh traversal. suspicious vertices. Then we set v1 as an active vertex and
After the mark vertices have been selected, we traverse the traverse the whole model starting from v1 to examine the model.
mesh model again with the same order as the selection of the We check if a vertex is a mark vertex by applying its x1
mark vertices. During this iteration, we first modulate the x1 coordinate and k w to Eq. (1). For each mark vertex, we first
coordinate of each vertex according to its mark flag using Eqs. calculate its x2 and x3 barycenters using Eq. (3), and then apply
(1) and (2). The x1 coordinate will be used to indicate if a vertex q
its x2 and x3 coordinates, the barycenters, and k j , k dj to extract
is a mark vertex in the watermark extraction stage. Then we the watermarks using the following equations,
make compensation perturbations on adjusting vertices,
d
q k2
X
x a0 a
j = xj − (x 0j − x j ), j = 2, 3, (6)
w 0
= (|x c
2 − x 0
2 | mod k 2 ) q
N (mv)
k2
(7)
where x2a and x3a are the second and third coordinates of the kd
h 0 = (|x3c − x30 | mod k3q ) 3q .
adjusting vertex for a mark vertex v; N (mv) is the set of all v’s k3
neighboring mark vertices and adjusting vertices of previous
Vertices that have not been changed will satisfy the
mark vertices. Lastly, we embed watermarks into all isolated
relationship, h(w0 ) = h 0 . On the other hand, a vertex that
vertices using the same technique as we applied for other mark
does not satisfy the above relationship indicates that at least
vertices. The union of all mark vertices and their neighboring
one of its neighboring vertices or the vertex itself (or both) has
vertices cover the whole model; thus we can detect any change
been changed. Thus, for any mark vertex that can not satisfy
on the model. A brief proof of the coverage completeness is
this relationship, we’ll set it and all its neighboring vertices
given below.
as suspicious vertices. There is no way for a forger to modify
Proof of coverage completeness: The union of all mark a model and keeping the relationship unchanged without the
vertices and their neighboring vertices cover the whole model. keys. Fig. 4 shows how our scheme detects modifications
Proof. Assume there is a non-mark vertex vi which is not and locates the suspicious modified regions. In Fig. 4(a), v
covered by any mark vertex; that is, it is surrounded by is a vertex that has been changed, and wi , i = 0–5, are
1160 C.-M. Chou, D.-C. Tseng / Computer-Aided Design 38 (2006) 1154–1165
Fig. 4. A mesh with one vertex changed. (a) v is a vertex that has been changed
and wi , i = 0–5, are mark vertices. (b) Two mark vertices, w1 and w4 , have
detected the change. (c) These two mark vertices and their neighboring vertices
are set to be suspicious vertices (linked by dashed lines). (d) Parts of suspicious
vertices are released by the undetected mark vertices (changed from gray to
non-gray nodes). In this figure, black nodes denote the mark vertices, white
nodes denote the non-mark vertices, and gray nodes denote the suspicious
vertices.
Table 2
The list of models used in our experiments
relationship between the setting of key values and the average Fig. 7(b) shows the same view of the marked model. These two
distortion. The precision level is 10−4 for the original Venus models are visually identical. Fig. 7(c) shows a marked Venus
model, and is 10−6 for all other original models in Table 3. model that has been illegally changed by various operations:
As shown in Table 3, smaller key values will produce smaller noising, vertex adding, and vertex deleting simultaneously.
average distortion, but will increase the precision requirement The regions labeled ‘A’, ‘B’, and ‘C’ denote the regions
of the marked model. Extra precision requirement will cause a
of invisible noise added, an extra vertex added, and some
size overload of the marked model. Users should determine the
vertices deleted, respectively. The proposed scheme locates
trade-off between a small average distortion and a small-sized
overload. these changed regions by setting all regions that can not hold
Fig. 7 illustrates how a Venus model is watermarked and the predefined neighborhood relationship as suspicious regions.
the detected changes by our scheme. Fig. 7(a) shows the Fig. 7(d) shows the detected suspicious regions with marks. In
original Venus model. The Venus model has 8268 vertices and this experiment, we tried to control the average distortion within
16 532 faces; 3175 vertices were chosen to embed watermarks. 10−4 . By observing the charts of Fig. 5, we set k w = 10−4
C.-M. Chou, D.-C. Tseng / Computer-Aided Design 38 (2006) 1154–1165 1163
Table 3
The average distortion of various models with different settings of key values
kw
q q
Model/Precision level of original k2 k3 k2d k3d Hash function Average distortion/Precision requirement of marked model
model
0.01 0.01 0.01 250 250 h(wi ) = wi 0.019382/10−5
0.001 0.01 0.01 250 250 h(wi ) = wi 0.018326/10−6
0.01 0.001 0.001 250 250 h(wi ) = wi 0.003973/10−6
0.001 0.001 0.001 250 250 h(wi ) = wi 0.002088/10−6
0.0001 0.001 0.001 250 250 h(wi ) = wi 0.001982/10−7
Blade/10−6 0.001 0.0001 0.0001 250 250 h(wi ) = wi 0.000383/10−7
0.0001 0.0001 0.0001 250 250 h(wi ) = wi 0.000192/10−7
0.0001 0.0001 0.0001 250 500 h(wi ) = 2wi 0.000193/10−7
0.0001 0.0001 0.0001 500 250 h(wi ) = 0.5wi 0.000215/10−7
0.0001 0.0001 0.0001 500 500 h(wi ) = wi 0.000213/10−7
0.00001 0.00001 0.00001 250 250 h(wi ) = wi 0.000019/10−8
q
and k j = 10−5 , j = 2, 3, to achieve the requirement. As a Pulley keep flat while the average distortion is around 10−3 ,
result, the average distortion of the marked Venus model was and become rugged while the average distortion is around 10−2 .
10−4.5 . The value of k dj was set to 256; thus all watermarks were Fig. 8(c) shows that the surface of the marked model Rocker-
integers randomly generated in the range [0, 255]. A simple arm stays flat when the average distortion is around 10−4 , and
hash function h(x) = x was used for the change detection. becomes rugged when the average distortion is around 10−3 .
For engineering/technical models with flat surfaces, distor- The precision levels of these three original models are all 10−6 .
tion control of the watermark effect on the flat surfaces is the According to Table 3, if we want to keep these marked surfaces
most important issue. Our scheme can control the watermark flat, the precision level requirements of marked models Blade,
effect with proper key value setting. Fig. 8 shows the marked Pulley and Rocker-arm are 10−6 , 10−6 and 10−7 , respectively.
results of three engineering models with different key value set- Users can set the key values according to their requirements of
q q
tings. We set k2 = k3 = k q for all models in Fig. 8. Fig. 8(a) precision level and visual effect of marked models. However,
and (b) show that the surfaces of marked models Blade and for conservative users who do not want to make any change on
1164 C.-M. Chou, D.-C. Tseng / Computer-Aided Design 38 (2006) 1154–1165
Fig. 8. The marked results of three engineering models with different key value settings in front and back views. (a) The Blade model with various levels of
distortion. (b) The Pulley model with various-level distortions. (c) The Rocker-arm model with various-level distortions.
the original models, we recommend they choose the alternative to the kind of change that has been added on the marked model.
watermark digest method instead of the direct watermark em- Fig. 9(a) shows a marked Dinosaur model. The Dinosaur
bedding scheme. model has 14 070 vertices and 28 136 faces. 6213 vertices
Our scheme is superior in that the average distortion of the were chosen to embed watermarks. Fig. 9(b) shows a marked
marked models is under control by the user while the other Dinosaur model changed by cutting the end of its tail. Fig. 9(c)
schemes may suffer from the distortion problem due to the shows the cutting plane and vertices on the cutting plane.
convergence problem. In addition, a relatively small key is The mark vertices (black nodes) detected a modification since
needed for watermark extraction in our watermarking scheme. their neighboring relations were changed. Fig. 9(d) shows these
In Yeo and Yeung’s work [11], three lookup tables each with detected mark vertices setting themselves and their neighboring
256 binary entries (256×3 = 768 bits) and two predefined hash vertices as suspicious vertices (turn to gray nodes). As a
functions are needed to extract watermarks while the proposed result, these detected suspicious vertices roughly form a circle.
q q
scheme needs only three floating-point numbers (k2 , k3 , and Two possible attacks are most likely to produce this situation:
w d d
k ), two integers (k2 and k3 ) and a predefined hash function cropping and vertex decimation. Thus, we may reasonably
for watermark extraction (32 × 3 + 16 × 2 = 128 bits). In both suspect that a part of the Dinosaur model has been cut from
schemes, the key size is independent of the size of the 3D mesh this circle (the cutting plane) or a part of vertices around this
model. Moreover, our scheme can detect the changed regions circle has been decimated.
and give a reasonable guess of unauthorized modifications. We The main contributions of the proposed scheme are
think the ability of locating unauthorized modifications is an summarized as follows: (i) The causality problem has been
important issue in 3D fragile watermarking. overcome using the adjusting vertex method so that the traverse
Fig. 9 shows an example of how our watermarking scheme order is not needed in the watermark extraction stage. (ii)
detects unauthorized modification and gives a reasonable guess The adjusting vertex method eliminates the possible problem
C.-M. Chou, D.-C. Tseng / Computer-Aided Design 38 (2006) 1154–1165 1165
Acknowledgements
References