| 0 | 1 #LyX 1.1 created this file. For more info see http://www.lyx.org/ | 
|  | 2 \lyxformat 218 | 
|  | 3 \textclass paper | 
|  | 4 \language english | 
|  | 5 \inputencoding auto | 
|  | 6 \fontscheme default | 
|  | 7 \graphics default | 
|  | 8 \paperfontsize default | 
|  | 9 \spacing single | 
|  | 10 \papersize Default | 
|  | 11 \paperpackage a4 | 
|  | 12 \use_geometry 0 | 
|  | 13 \use_amsmath 0 | 
|  | 14 \paperorientation portrait | 
|  | 15 \secnumdepth 3 | 
|  | 16 \tocdepth 3 | 
|  | 17 \paragraph_separation skip | 
|  | 18 \defskip smallskip | 
|  | 19 \quotes_language english | 
|  | 20 \quotes_times 2 | 
|  | 21 \papercolumns 1 | 
|  | 22 \papersides 1 | 
|  | 23 \paperpagestyle default | 
|  | 24 | 
|  | 25 \layout Title | 
|  | 26 | 
|  | 27 Watermarking Source Code | 
|  | 28 \layout SubTitle | 
|  | 29 | 
|  | 30 version 0.4 | 
|  | 31 \layout Author | 
|  | 32 | 
|  | 33 Peter Meerwald | 
|  | 34 \layout Address | 
|  | 35 | 
|  | 36 Dept. | 
|  | 37  of Scientific Computing, University of Salzburg | 
|  | 38 \newline | 
|  | 39 Jakob-Haringer-Str. | 
|  | 40  2, A-5020 Salzburg, Austria | 
|  | 41 \newline | 
|  | 42 | 
|  | 43 \begin_inset LatexCommand \url{mailto:pmeerw@cosy.sbg.ac.at} | 
|  | 44 | 
|  | 45 \end_inset | 
|  | 46 | 
|  | 47 | 
|  | 48 \newline | 
|  | 49 | 
|  | 50 \begin_inset LatexCommand \url{http://www.cosy.sbg.ac.at/~pmeerw/Watermarking} | 
|  | 51 | 
|  | 52 \end_inset | 
|  | 53 | 
|  | 54 | 
|  | 55 \layout Abstract | 
|  | 56 | 
|  | 57 This package provides source code for some watermarking algorithms in hopefully | 
|  | 58  portable C code. | 
|  | 59  The programs can be used to study watermarking techniques, perform comparative | 
|  | 60  robustness tests and develop new attacks against embedded watermarks. | 
|  | 61 \layout Abstract | 
|  | 62 | 
|  | 63 However, the provided programs are by no means suitable for real-world applicati | 
|  | 64 on (i.e. | 
|  | 65  copyright protection) and the code solely serves some educational purpose. | 
|  | 66 \layout Standard | 
|  | 67 | 
|  | 68 | 
|  | 69 \begin_inset LatexCommand \tableofcontents{} | 
|  | 70 | 
|  | 71 \end_inset | 
|  | 72 | 
|  | 73 | 
|  | 74 \layout Section | 
|  | 75 | 
|  | 76 Introduction | 
|  | 77 \layout Standard | 
|  | 78 | 
|  | 79 Academic research in the watermarking field has grown dramatically since | 
|  | 80  approximately 1995. | 
|  | 81  But surprisingly, source code for the proposed watermarking schemes has | 
|  | 82  not been made available. | 
|  | 83  The reason is most likely the security of many watermarking systems lies | 
|  | 84  at least to some extent in the embedding and detection algorithm itself, | 
|  | 85  and not in the keys used -- violating the Kerckhoff principle | 
|  | 86 \begin_inset LatexCommand \cite{Kerckhoff1883a} | 
|  | 87 | 
|  | 88 \end_inset | 
|  | 89 | 
|  | 90 . | 
|  | 91 \layout Standard | 
|  | 92 | 
|  | 93 With the availability of public robustness test for watermarking algorithms, | 
|  | 94  StirMark | 
|  | 95 \begin_inset LatexCommand \cite{Petitcolas99c, Petitcolas98b, Petitcolas98a} | 
|  | 96 | 
|  | 97 \end_inset | 
|  | 98 | 
|  | 99 , Unzign | 
|  | 100 \begin_float footnote | 
|  | 101 \layout Standard | 
|  | 102 | 
|  | 103 | 
|  | 104 \begin_inset LatexCommand \url{http://www.altern.org/watermark} | 
|  | 105 | 
|  | 106 \end_inset | 
|  | 107 | 
|  | 108 | 
|  | 109 \end_float | 
|  | 110  and very recently Checkmark | 
|  | 111 \begin_inset LatexCommand \cite{Pereira01b} | 
|  | 112 | 
|  | 113 \end_inset | 
|  | 114 | 
|  | 115 , the situation begins to improve. | 
|  | 116  Now it is possible to measure the performance of watermarking systems. | 
|  | 117 | 
|  | 118 \layout Standard | 
|  | 119 | 
|  | 120 In order the compare and evaluate new embedding and detection techniques, | 
|  | 121  it is also necessary to have some reference implementations of the older, | 
|  | 122  now often called classical schemes. | 
|  | 123  In this work, we provide some implementations of watermarking schemes, | 
|  | 124  some of which can be considered 'classical'. | 
|  | 125 \layout Standard | 
|  | 126 | 
|  | 127 It was the goal to capture the main ideas of the proposed algorithms, as | 
|  | 128  layed out in the respective papers. | 
|  | 129  This is clearly not an easy task as some papers do not disclose all details | 
|  | 130  or state which particular parameters were used to obtain the results outlined | 
|  | 131  in the communications. | 
|  | 132 \layout Standard | 
|  | 133 | 
|  | 134 I am very interested in hearing your comments, complaints and suggestions | 
|  | 135  regarding this software. | 
|  | 136  Moreover, if you have source code for a watermarking scheme not yet covered | 
|  | 137  or some useful utility I would be happy to include your code in this distributi | 
|  | 138 on. | 
|  | 139  Please see the contact information at the top of this document. | 
|  | 140 \layout Standard | 
|  | 141 | 
|  | 142 If you use the accompanying code, please cite my thesis: | 
|  | 143 \layout Quotation | 
|  | 144 | 
|  | 145 Peter Meerwald, Digital Image Watermarking in the Wavelet Transform Domain, | 
|  | 146  Master's Thesis, Department of Scientific Computing, University of Salzburg, | 
|  | 147  Austria, January 2001. | 
|  | 148 \layout Section | 
|  | 149 | 
|  | 150 Software | 
|  | 151 \layout Standard | 
|  | 152 | 
|  | 153 Most of the software provided herein was written by myself, as part of my | 
|  | 154  Master thesis. | 
|  | 155  Some contributions were made by Vassilis Fotopoulos | 
|  | 156 \begin_float footnote | 
|  | 157 \layout Standard | 
|  | 158 | 
|  | 159 | 
|  | 160 \begin_inset LatexCommand \url{mailto:vfotop1@physics.upatras.gr} | 
|  | 161 | 
|  | 162 \end_inset | 
|  | 163 | 
|  | 164 | 
|  | 165 \end_float | 
|  | 166 . | 
|  | 167  The software in the archive is organized in the following sub-directories: | 
|  | 168 \layout Description | 
|  | 169 | 
|  | 170 Fotopoulos/ contains contributions by Vassilis Fotopoulos | 
|  | 171 \layout Description | 
|  | 172 | 
|  | 173 Meerwald/ contains my work | 
|  | 174 \layout Description | 
|  | 175 | 
|  | 176 images/ contains the Lena image in PGM format; the default parameters of | 
|  | 177  most algorithms are tuned to work best with that image | 
|  | 178 \layout Description | 
|  | 179 | 
|  | 180 linux_bin/ the place where the Linux executables are stored in the binary | 
|  | 181  distribution | 
|  | 182 \layout Description | 
|  | 183 | 
|  | 184 win32_bin/ the place where Windows 32-bit executables are distributed; tested | 
|  | 185  with Windows NT 4.0 only | 
|  | 186 \layout Description | 
|  | 187 | 
|  | 188 make/ contains the | 
|  | 189 \family typewriter | 
|  | 190 \size small | 
|  | 191 Makefile | 
|  | 192 \family default | 
|  | 193 \size default | 
|  | 194  options to build the code on supported platforms | 
|  | 195 \layout Standard | 
|  | 196 | 
|  | 197 For the purpose of this software package, a watermarking system comprises | 
|  | 198  four parts, namely: signature generation, watermark embedding, watermark | 
|  | 199  extraction and signature comparison or detection -- with the exception | 
|  | 200  of Vassilis's code; there are only cast and test programs (corresponds | 
|  | 201  to watermark embedding and detection). | 
|  | 202  Signature is used more less as a synonym for mark and can be thought of | 
|  | 203  as the payload (at least for some schemes :-). | 
|  | 204 \layout Standard | 
|  | 205 | 
|  | 206 All programs only accept the image in NetPBM format and will also produce | 
|  | 207  only NetPBM-format files (see section | 
|  | 208 \begin_inset LatexCommand \ref{sec:prereq} | 
|  | 209 | 
|  | 210 \end_inset | 
|  | 211 | 
|  | 212 ). | 
|  | 213  Unfortunately, most programs have only been tested with 8-bit gray-scale | 
|  | 214  images of size | 
|  | 215 \begin_inset Formula \( 512\times 512. \) | 
|  | 216 \end_inset | 
|  | 217 | 
|  | 218 | 
|  | 219 \layout Standard | 
|  | 220 | 
|  | 221 In order to simplify batch testing, the programs allow to read either from | 
|  | 222  a file, e.g. | 
|  | 223 \layout Standard | 
|  | 224 | 
|  | 225 | 
|  | 226 \family typewriter | 
|  | 227 \size small | 
|  | 228 wm_cox_e -s cox.sig | 
|  | 229 \series bold | 
|  | 230 image.pgm | 
|  | 231 \layout Standard | 
|  | 232 | 
|  | 233 or from standard input, i.e. | 
|  | 234 \layout Standard | 
|  | 235 | 
|  | 236 wm_cox_e -s cox.sig | 
|  | 237 \series bold | 
|  | 238 < image.pgm | 
|  | 239 \layout Standard | 
|  | 240 | 
|  | 241 The output is usually written to standard output, i.e. | 
|  | 242 | 
|  | 243 \layout Standard | 
|  | 244 | 
|  | 245 | 
|  | 246 \family typewriter | 
|  | 247 \size small | 
|  | 248 wm_cox_e -s cox.sig image.pgm | 
|  | 249 \series bold | 
|  | 250 > wm_image.pgm | 
|  | 251 \layout Standard | 
|  | 252 | 
|  | 253 unless redirected to a file, e.g. | 
|  | 254 \layout Standard | 
|  | 255 | 
|  | 256 | 
|  | 257 \family typewriter | 
|  | 258 \size small | 
|  | 259 wm_cox_e -s cox.sig | 
|  | 260 \series bold | 
|  | 261 -o wm_image.pgm | 
|  | 262 \series default | 
|  | 263  image.pgm | 
|  | 264 \layout Subsection | 
|  | 265 | 
|  | 266 Featured algorithms | 
|  | 267 \layout Standard | 
|  | 268 | 
|  | 269 Currently it includes the following watermarking algorithms | 
|  | 270 \layout Itemize | 
|  | 271 | 
|  | 272 Bruyndonckx [bruyn], refer to | 
|  | 273 \layout Quotation | 
|  | 274 | 
|  | 275 O. | 
|  | 276  Bruyndonckx, Jean-Jacques Quisquater, and Benoit M. | 
|  | 277  Macq. | 
|  | 278  Spatial method for copyright labeling of digital images. | 
|  | 279  In IEEE Workshop on Nonlinear Signal and Image Processing '95, Thessaloniki, | 
|  | 280  Greece, pages 456 - 459, 1995. | 
|  | 281 \layout Itemize | 
|  | 282 | 
|  | 283 Corvi, refer to | 
|  | 284 \layout Quotation | 
|  | 285 | 
|  | 286 Marco Corvi and Gianluca Nicchiotti. | 
|  | 287  Wavelet-based image watermarking for copyright protection. | 
|  | 288  In Scandinavian Conference on Image Analysis SCIA '97, Lappeenranta, Finland, | 
|  | 289  June 1997. | 
|  | 290 \layout Itemize | 
|  | 291 | 
|  | 292 Cox, refer to | 
|  | 293 \layout Quotation | 
|  | 294 | 
|  | 295 Ingemar J. | 
|  | 296  Cox, Joe Kilian, Tom Leighton, and Talal G. | 
|  | 297  Shamoon. | 
|  | 298  Secure spread spectrum watermarking for multimedia. | 
|  | 299  In Proceedings of the IEEE ICIP '97, volume 6, pages 1673 - 1687, Santa | 
|  | 300  Barbara, California, USA, 1997. | 
|  | 301 \layout Itemize | 
|  | 302 | 
|  | 303 Dugad, refer to | 
|  | 304 \layout Quotation | 
|  | 305 | 
|  | 306 Rakesh Dugad, Krishna Ratakonda, and Narendra Ahuja. | 
|  | 307  A new wavelet-based scheme for watermarking images. | 
|  | 308  In Proceedings of the IEEE International Conference on Image Processing, | 
|  | 309  ICIP '98, Chicago, IL, USA, October 1998. | 
|  | 310 | 
|  | 311 \layout Itemize | 
|  | 312 | 
|  | 313 Fridrich (2. | 
|  | 314  scheme), refer to | 
|  | 315 \layout Quotation | 
|  | 316 | 
|  | 317 Jiri Fridrich. | 
|  | 318  Combining low-frequency and spread spectrum watermarking. | 
|  | 319  In Proceedings of the SPIE Symposium on Optical Science, Engineering and | 
|  | 320  Instrumentation, San Diego, USA, July 1998. | 
|  | 321 | 
|  | 322 \layout Itemize | 
|  | 323 | 
|  | 324 Kim, refer to | 
|  | 325 \layout Quotation | 
|  | 326 | 
|  | 327 Jong Ryul Kim and Young Shik Moon. | 
|  | 328  A robust wavelet-based digital watermark using level-adaptive thresholding. | 
|  | 329  In Proceedings of the 6th IEEE International Conference on Image Processing | 
|  | 330  ICIP '99, page 202, Kobe, Japan, October 1999. | 
|  | 331 \layout Itemize | 
|  | 332 | 
|  | 333 Koch, refer to | 
|  | 334 \layout Quotation | 
|  | 335 | 
|  | 336 Eckhard Koch and Jian Zhao. | 
|  | 337  Towards robust and hidden image copyright labeling. | 
|  | 338  In Proceedings of the IEEE International Workshop on Nonlinear Signal and | 
|  | 339  Image Processing, pages 452 - 455, Halkidiki, Marmaras, Greece, June 1995. | 
|  | 340 \layout Itemize | 
|  | 341 | 
|  | 342 Wang, refer to | 
|  | 343 \layout Quotation | 
|  | 344 | 
|  | 345 Houng-Jyh Wang, Po-Chyi Su, and C.-C. | 
|  | 346  Jay Kuo. | 
|  | 347  Wavelet-based digital image watermarking. | 
|  | 348  Optics Express, volume 3, pp. | 
|  | 349  497, December 1998. | 
|  | 350 | 
|  | 351 \layout Itemize | 
|  | 352 | 
|  | 353 Xia, refer to | 
|  | 354 \layout Quotation | 
|  | 355 | 
|  | 356 Xiang-Gen Xia, Charles G. | 
|  | 357  Boncelet, and Gonzalo R. | 
|  | 358  Arce. | 
|  | 359  Wavelet transform based watermark for digital images. | 
|  | 360  Optics Express, volume 3, pp. | 
|  | 361  497, December 1998. | 
|  | 362 \layout Itemize | 
|  | 363 | 
|  | 364 Xie, refer to | 
|  | 365 \layout Quotation | 
|  | 366 | 
|  | 367 Liehua Xie and Gonzalo R. | 
|  | 368  Arce. | 
|  | 369  Joint wavelet compression and authentication watermarking. | 
|  | 370  In Proceedings of the IEEE International Conference on Image Processing, | 
|  | 371  ICIP '98, Chicago, IL, USA, 1998. | 
|  | 372 \layout Itemize | 
|  | 373 | 
|  | 374 Zhu, refer to | 
|  | 375 \layout Quotation | 
|  | 376 | 
|  | 377 Wenwu Zhu, Zixiang Xiong, and Ya-Qin Zhang. | 
|  | 378  Multiresolution watermarking for images and video: a unified approach. | 
|  | 379  In Proceedings of the IEEE International Conference on Image Processing, | 
|  | 380  ICIP '98, Chicago, IL, USA, October 1998. | 
|  | 381 | 
|  | 382 \layout Itemize | 
|  | 383 | 
|  | 384 Piva/Fotopoulos [cast|test-pv,hart,sub], contribution by Vassilis Fotopoulos, | 
|  | 385  refer to | 
|  | 386 \layout Quotation | 
|  | 387 | 
|  | 388 M.Barni, F. | 
|  | 389  Bartolini, V. | 
|  | 390  Cappellini, A. | 
|  | 391  Piva. | 
|  | 392  A DCT-Domain System for Robust Image Watermarking, Signal Processing, vol. | 
|  | 393  66, pp 357 - 372, 1998. | 
|  | 394 \begin_deeper | 
|  | 395 \layout Standard | 
|  | 396 \added_space_top smallskip \added_space_bottom smallskip | 
|  | 397 and | 
|  | 398 \end_deeper | 
|  | 399 \layout Quotation | 
|  | 400 | 
|  | 401 V. | 
|  | 402  Fotopoulos, A. | 
|  | 403  N. | 
|  | 404  Skodras, A Subband DCT approach to image watermarking, X European Signal | 
|  | 405  Processing Conference, September 4 - 8, 2000, Tampere, Finland. | 
|  | 406 \layout Standard | 
|  | 407 | 
|  | 408 More algorithms will be added over time, I have implemented about 13 watermarkin | 
|  | 409 g algorithms in the spatial-, DCT-, and wavelet domain so far. | 
|  | 410 \layout Subsection | 
|  | 411 | 
|  | 412 | 
|  | 413 \begin_inset LatexCommand \label{sec:utility_programs} | 
|  | 414 | 
|  | 415 \end_inset | 
|  | 416 | 
|  | 417 Utility programs | 
|  | 418 \layout Standard | 
|  | 419 | 
|  | 420 A good way to check the effect of a watermarking algorithm is computing | 
|  | 421  the difference image, i.e. | 
|  | 422  subtracting the original image from the watermarked image. | 
|  | 423  Alternatively, one can also have a look at the modified coefficients in | 
|  | 424  the transform domain. | 
|  | 425  The following programs facilitate these tasks: | 
|  | 426 \layout Description | 
|  | 427 | 
|  | 428 cmp_pgm compute difference image, PSNR, ... | 
|  | 429 \layout Description | 
|  | 430 | 
|  | 431 cmp_dct compute full-frame DCT domain difference image | 
|  | 432 \layout Description | 
|  | 433 | 
|  | 434 cmp_dct8x8 compute 8x8 block-based DCT difference image | 
|  | 435 \layout Description | 
|  | 436 | 
|  | 437 cmp_dwt compute DWT domain difference image | 
|  | 438 \layout Standard | 
|  | 439 | 
|  | 440 For example, to produce the difference image of two PGM files and compute | 
|  | 441  the PSNR along with some other measures, the following command can be used: | 
|  | 442 \layout Standard | 
|  | 443 | 
|  | 444 | 
|  | 445 \family typewriter | 
|  | 446 \size small | 
|  | 447 cmp_pgm -p -i original.pgm -o diff.pgm watermarked.pgm | 
|  | 448 \layout Section | 
|  | 449 | 
|  | 450 Usage | 
|  | 451 \layout Standard | 
|  | 452 | 
|  | 453 Note, almost all programs will output usage information if called with the | 
|  | 454 | 
|  | 455 \family typewriter | 
|  | 456 \size small | 
|  | 457 -h | 
|  | 458 \family default | 
|  | 459 \size default | 
|  | 460  argument. | 
|  | 461 \layout Subsection | 
|  | 462 | 
|  | 463 Generating a mark | 
|  | 464 \layout Standard | 
|  | 465 | 
|  | 466 First, you have to generate an appropriate signature file for the corresponding | 
|  | 467  embedding/detection algorithm; e.g. | 
|  | 468  if you are going to use Cox' scheme, then you would run | 
|  | 469 \layout Standard | 
|  | 470 | 
|  | 471 | 
|  | 472 \family typewriter | 
|  | 473 \size small | 
|  | 474 gen_cox_sig | 
|  | 475 \layout Standard | 
|  | 476 | 
|  | 477 The programs outputs some parameters and a sequence of Gaussian distributed | 
|  | 478  random numbers (which is the watermark sequence). | 
|  | 479  You want to save that into a signature file, so you run | 
|  | 480 \layout Standard | 
|  | 481 | 
|  | 482 | 
|  | 483 \family typewriter | 
|  | 484 \size small | 
|  | 485 gen_cox_sig > cox.sig or | 
|  | 486 \layout Standard | 
|  | 487 | 
|  | 488 | 
|  | 489 \family typewriter | 
|  | 490 \size small | 
|  | 491 gen_cox_sig -o cox.sig | 
|  | 492 \layout Standard | 
|  | 493 | 
|  | 494 You can influence e.g. | 
|  | 495  the embedding strength that will be used in the embedding step by running | 
|  | 496 \layout Standard | 
|  | 497 | 
|  | 498 | 
|  | 499 \family typewriter | 
|  | 500 \size small | 
|  | 501 gen_cox_sig -a 0.5 > too_strong_cox.sig | 
|  | 502 \layout Standard | 
|  | 503 | 
|  | 504 Usually, the programs for generating a signature will supply reasonable | 
|  | 505  default values for marking a 8-bit gray-scale image of size | 
|  | 506 \begin_inset Formula \( 512\times 512. \) | 
|  | 507 \end_inset | 
|  | 508 | 
|  | 509 | 
|  | 510 \layout Subsection | 
|  | 511 | 
|  | 512 Watermark embedding | 
|  | 513 \layout Standard | 
|  | 514 | 
|  | 515 Watermark embedding is performed with the following command (for our example, | 
|  | 516  we are using Cox' scheme): | 
|  | 517 \layout Standard | 
|  | 518 | 
|  | 519 | 
|  | 520 \family typewriter | 
|  | 521 \size small | 
|  | 522 wm_cox_e -s cox.sig -o cox_lena.pgm lena.pgm | 
|  | 523 \layout Standard | 
|  | 524 | 
|  | 525 The signature file is parsed to obtain the particular watermark sequence | 
|  | 526  and the embedding strength. | 
|  | 527  The watermarked image is written to the file | 
|  | 528 \family typewriter | 
|  | 529 \size small | 
|  | 530 cox_lena.pgm | 
|  | 531 \family default | 
|  | 532 \size default | 
|  | 533 . | 
|  | 534  Now it the time to check the perceptual quality of the produced image and | 
|  | 535  also have a look at the difference image (see section | 
|  | 536 \begin_inset LatexCommand \ref{sec:utility_programs} | 
|  | 537 | 
|  | 538 \end_inset | 
|  | 539 | 
|  | 540 ). | 
|  | 541 \layout Subsection | 
|  | 542 | 
|  | 543 Watermark extraction | 
|  | 544 \layout Standard | 
|  | 545 | 
|  | 546 To extract the embedded signature, we execute the command | 
|  | 547 \layout Standard | 
|  | 548 | 
|  | 549 | 
|  | 550 \family typewriter | 
|  | 551 \size small | 
|  | 552 wm_cox_d -s cox.sig -i lena.pgm -o cox.wm cox_lena.pgm | 
|  | 553 \layout Standard | 
|  | 554 | 
|  | 555 Since Cox' algorithm is not blind, the original image is needed as a reference | 
|  | 556  to extract the embedded mark. | 
|  | 557  The embedded mark will be stored in | 
|  | 558 \family typewriter | 
|  | 559 \size small | 
|  | 560 cox.wm | 
|  | 561 \family default | 
|  | 562 \size default | 
|  | 563 . | 
|  | 564  The original signature, | 
|  | 565 \family typewriter | 
|  | 566 \size small | 
|  | 567 cox.sig | 
|  | 568 \family default | 
|  | 569 \size default | 
|  | 570 , is used to get the auxiliary embedding parameter correct (e.g. | 
|  | 571  embedding strength). | 
|  | 572 | 
|  | 573 \layout Subsection | 
|  | 574 | 
|  | 575 Comparing the mark | 
|  | 576 \layout Standard | 
|  | 577 | 
|  | 578 The final step is comparing the original signature against the extracted | 
|  | 579  signature. | 
|  | 580  The result here is usually a correlation factor. | 
|  | 581  Values around 0 indicate that the mark has not been found, values around | 
|  | 582  1 | 
|  | 583 \layout Standard | 
|  | 584 | 
|  | 585 In most programs a analytical detection threshold for some detection probability | 
|  | 586  is not used. | 
|  | 587  Hence, one has to observe the output of the detector for many different | 
|  | 588  keys (around 1000 I'd suggest) to establish a reasonable threshold for | 
|  | 589  detection. | 
|  | 590  A good value to go with initially might be 0.2 which means we claim the | 
|  | 591  watermark detected if the correlation factor is > 0.2. | 
|  | 592 \layout Standard | 
|  | 593 | 
|  | 594 The appropriate command for comparing the mark is | 
|  | 595 \layout Standard | 
|  | 596 | 
|  | 597 | 
|  | 598 \family typewriter | 
|  | 599 \size small | 
|  | 600 cmp_cox_sig -s cox.sig cox.wm | 
|  | 601 \layout Subsection | 
|  | 602 | 
|  | 603 Batch testing - benchmarking | 
|  | 604 \layout Standard | 
|  | 605 | 
|  | 606 If you want to run many test you can pipe the images to be do be watermarked | 
|  | 607  (and tested) through the embedder and detector. | 
|  | 608  The programs then act like a filter. | 
|  | 609  Try something like the following in a Unix shell script: | 
|  | 610 \layout Standard | 
|  | 611 | 
|  | 612 | 
|  | 613 \family typewriter | 
|  | 614 \size small | 
|  | 615 gen_cox_sig > cox.sig | 
|  | 616 \layout Standard | 
|  | 617 | 
|  | 618 | 
|  | 619 \family typewriter | 
|  | 620 \size small | 
|  | 621 for i in *.pgm | 
|  | 622 \layout Standard | 
|  | 623 | 
|  | 624 | 
|  | 625 \family typewriter | 
|  | 626 \size small | 
|  | 627 do | 
|  | 628 \layout Standard | 
|  | 629 | 
|  | 630 | 
|  | 631 \family typewriter | 
|  | 632 \size small | 
|  | 633 \SpecialChar ~ | 
|  | 634 \SpecialChar ~ | 
|  | 635 wm_cox_e -s cox.sig $i | | 
|  | 636 \backslash | 
|  | 637 | 
|  | 638 \layout Standard | 
|  | 639 | 
|  | 640 | 
|  | 641 \family typewriter | 
|  | 642 \size small | 
|  | 643 \SpecialChar ~ | 
|  | 644 \SpecialChar ~ | 
|  | 645 wm_cox_d -s cox.sig -i $i | | 
|  | 646 \backslash | 
|  | 647 | 
|  | 648 \layout Standard | 
|  | 649 | 
|  | 650 | 
|  | 651 \family typewriter | 
|  | 652 \size small | 
|  | 653 \SpecialChar ~ | 
|  | 654 \SpecialChar ~ | 
|  | 655 cmp_cox_sig -s cox.sig | 
|  | 656 \layout Standard | 
|  | 657 | 
|  | 658 | 
|  | 659 \family typewriter | 
|  | 660 \size small | 
|  | 661 done | 
|  | 662 \layout Section | 
|  | 663 | 
|  | 664 | 
|  | 665 \begin_inset LatexCommand \label{sec:recompile} | 
|  | 666 | 
|  | 667 \end_inset | 
|  | 668 | 
|  | 669 Recompiling | 
|  | 670 \layout Standard | 
|  | 671 | 
|  | 672 Note, that most watermark embedding/extraction programs use the built-in | 
|  | 673  random number generator of the C library, i.e. | 
|  | 674 | 
|  | 675 \family typewriter | 
|  | 676 \size small | 
|  | 677 srandom() | 
|  | 678 \family default | 
|  | 679 \size default | 
|  | 680  and | 
|  | 681 \family typewriter | 
|  | 682 \size small | 
|  | 683 random(). | 
|  | 684 | 
|  | 685 \family default | 
|  | 686 \size default | 
|  | 687 Therefore, if you recompile, chances are that you won't be able to use your | 
|  | 688  images watermarked with the previous version. | 
|  | 689 \layout Standard | 
|  | 690 | 
|  | 691 The Makefile options for compiling on the different platforms can be found | 
|  | 692  in the | 
|  | 693 \family typewriter | 
|  | 694 \size small | 
|  | 695 make/ | 
|  | 696 \family default | 
|  | 697 \size default | 
|  | 698  sub-directory of the archive. | 
|  | 699 \layout Subsection | 
|  | 700 | 
|  | 701 | 
|  | 702 \begin_inset LatexCommand \label{sec:prereq} | 
|  | 703 | 
|  | 704 \end_inset | 
|  | 705 | 
|  | 706 Prerequisites | 
|  | 707 \layout Subsubsection | 
|  | 708 | 
|  | 709 NetPBM | 
|  | 710 \layout Standard | 
|  | 711 | 
|  | 712 NetPBM is responsible for image file I/O and provides a definition of a | 
|  | 713  simple image file format along with many image file format filters that | 
|  | 714  allow to convert images to and from NetPBM format. | 
|  | 715 | 
|  | 716 \layout Standard | 
|  | 717 | 
|  | 718 You need to get and install the NetPBM library at | 
|  | 719 \begin_inset LatexCommand \url{http://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/} | 
|  | 720 | 
|  | 721 \end_inset | 
|  | 722 | 
|  | 723  or | 
|  | 724 \begin_inset LatexCommand \url{http://netpbm.sourceforge.net} | 
|  | 725 | 
|  | 726 \end_inset | 
|  | 727 | 
|  | 728 . | 
|  | 729  The library provides | 
|  | 730 \family typewriter | 
|  | 731 \size small | 
|  | 732 pgm.h | 
|  | 733 \family default | 
|  | 734 \size default | 
|  | 735  and the appropriate implementation. | 
|  | 736 \layout Subsection | 
|  | 737 | 
|  | 738 Unix/Linux platform | 
|  | 739 \layout Standard | 
|  | 740 | 
|  | 741 All programs were developed using Linux and GNU C. | 
|  | 742  The programs should compile and work with all recent versions of Linux | 
|  | 743  and GNU C. | 
|  | 744 | 
|  | 745 \layout Subsection | 
|  | 746 | 
|  | 747 | 
|  | 748 \begin_inset LatexCommand \label{sec:win32_compile} | 
|  | 749 | 
|  | 750 \end_inset | 
|  | 751 | 
|  | 752 Win32 platform | 
|  | 753 \layout Standard | 
|  | 754 | 
|  | 755 The programs were ported to the Windows platform using the Cygwin | 
|  | 756 \begin_float footnote | 
|  | 757 \layout Standard | 
|  | 758 | 
|  | 759 | 
|  | 760 \begin_inset LatexCommand \url{http://www.cygwin.com} | 
|  | 761 | 
|  | 762 \end_inset | 
|  | 763 | 
|  | 764 | 
|  | 765 \end_float | 
|  | 766 and Mingw | 
|  | 767 \begin_float footnote | 
|  | 768 \layout Standard | 
|  | 769 | 
|  | 770 | 
|  | 771 \begin_inset LatexCommand \url{http://www.mingw.org} | 
|  | 772 | 
|  | 773 \end_inset | 
|  | 774 | 
|  | 775 | 
|  | 776 \end_float | 
|  | 777  environment. | 
|  | 778  Most notable, the file mode for standard input and standard output has | 
|  | 779  to be set to binary mode. | 
|  | 780  This is accomplished with the | 
|  | 781 \family typewriter | 
|  | 782 \size small | 
|  | 783 setmode() | 
|  | 784 \family default | 
|  | 785 \size default | 
|  | 786  or | 
|  | 787 \family typewriter | 
|  | 788 \size small | 
|  | 789 _fsetmode() | 
|  | 790 \family default | 
|  | 791 \size default | 
|  | 792  commands. | 
|  | 793 \layout Section | 
|  | 794 | 
|  | 795 FAQ | 
|  | 796 \layout Standard | 
|  | 797 | 
|  | 798 Q: How can I report problems? | 
|  | 799 \layout Standard | 
|  | 800 | 
|  | 801 A: See the contact information at the beginning of this document. | 
|  | 802 \layout Standard | 
|  | 803 | 
|  | 804 Q: The compiler complains about | 
|  | 805 \family typewriter | 
|  | 806 \size small | 
|  | 807 pgm.h | 
|  | 808 \family default | 
|  | 809 \size default | 
|  | 810 ? | 
|  | 811 \layout Standard | 
|  | 812 | 
|  | 813 A: You need to get and install the NetPBM library, see section | 
|  | 814 \begin_inset LatexCommand \ref{sec:prereq} | 
|  | 815 | 
|  | 816 \end_inset | 
|  | 817 | 
|  | 818 . | 
|  | 819 \layout Standard | 
|  | 820 | 
|  | 821 Q: What is the best algorithm? | 
|  | 822 \layout Standard | 
|  | 823 | 
|  | 824 A: Depends on your application. | 
|  | 825 \layout Standard | 
|  | 826 | 
|  | 827 Q: What is the most robust algorithm? | 
|  | 828 \layout Standard | 
|  | 829 | 
|  | 830 A: Depends on the attack. | 
|  | 831  See some results on | 
|  | 832 \begin_inset LatexCommand \url{http://www.cosy.sbg.ac.at/~pmeerw/Watermarking} | 
|  | 833 | 
|  | 834 \end_inset | 
|  | 835 | 
|  | 836 . | 
|  | 837 \layout Standard | 
|  | 838 | 
|  | 839 Q: I need code for a full-frame DCT? | 
|  | 840 \layout Standard | 
|  | 841 | 
|  | 842 A: See the files Meerwald/dct.* in the archive. | 
|  | 843 \layout Standard | 
|  | 844 | 
|  | 845 Q: I need code for a 8x8 block DCT? | 
|  | 846 \layout Standard | 
|  | 847 | 
|  | 848 A: See the files | 
|  | 849 \family typewriter | 
|  | 850 \size small | 
|  | 851 Meerwald/dct.* | 
|  | 852 \family default | 
|  | 853 \size default | 
|  | 854  in the archive. | 
|  | 855 \layout Standard | 
|  | 856 | 
|  | 857 Q: I need code for the wavelet transform (DWT)? | 
|  | 858 \layout Standard | 
|  | 859 | 
|  | 860 A: See the files | 
|  | 861 \family typewriter | 
|  | 862 \size small | 
|  | 863 Meerwald/wavelet.* | 
|  | 864 \family default | 
|  | 865 \size default | 
|  | 866  in the archive. | 
|  | 867 \layout Standard | 
|  | 868 | 
|  | 869 Q: I get the message 'unable to open filter.dat' - what to do? | 
|  | 870 \layout Standard | 
|  | 871 | 
|  | 872 A: Make sure the file filter.dat is in the current directory or accessible | 
|  | 873  via path/filename specified in the signature file. | 
|  | 874  Use the signature generation command to specify an absolute path if necessary. | 
|  | 875 \layout Standard | 
|  | 876 | 
|  | 877 Q: I can't compile the code using some Microsoft product? | 
|  | 878 \layout Standard | 
|  | 879 | 
|  | 880 A: Make your life easier, install GNU software! See section | 
|  | 881 \begin_inset LatexCommand \ref{sec:recompile} | 
|  | 882 | 
|  | 883 \end_inset | 
|  | 884 | 
|  | 885 . | 
|  | 886 \layout Section | 
|  | 887 | 
|  | 888 Revision history | 
|  | 889 \layout Standard | 
|  | 890 | 
|  | 891 version 0.4 (June 21, 2001) | 
|  | 892 \layout Itemize | 
|  | 893 | 
|  | 894 bug fixes | 
|  | 895 \begin_deeper | 
|  | 896 \layout Itemize | 
|  | 897 | 
|  | 898 wm_xia_{e|d}.c variable level uninitialized | 
|  | 899 \layout Itemize | 
|  | 900 | 
|  | 901 wm_zhu_{e|d}.c variable level uninitialized | 
|  | 902 \layout Itemize | 
|  | 903 | 
|  | 904 issue with random() vs. | 
|  | 905  rand() and RAND_MAX in frid2_common.c | 
|  | 906 \end_deeper | 
|  | 907 \layout Itemize | 
|  | 908 | 
|  | 909 added option to bruyn algorithm to disable block skipping | 
|  | 910 \layout Itemize | 
|  | 911 | 
|  | 912 added algorithm kim | 
|  | 913 \layout Standard | 
|  | 914 | 
|  | 915 version 0.3 (June 18, 2001) | 
|  | 916 \layout Itemize | 
|  | 917 | 
|  | 918 created a nice (?) manual/documentation | 
|  | 919 \layout Itemize | 
|  | 920 | 
|  | 921 added algorithms by Dugad, Wang, Zhu, Fridrich | 
|  | 922 \layout Itemize | 
|  | 923 | 
|  | 924 added Makefiles for Win32 platform (mingw32) | 
|  | 925 \layout Standard | 
|  | 926 | 
|  | 927 version 0.2 (February 22, 2001) | 
|  | 928 \layout Itemize | 
|  | 929 | 
|  | 930 added contribution by Vassilis Fotopoulos (Piva's algorithm, | 
|  | 931 \layout Itemize | 
|  | 932 | 
|  | 933 DCT, Hartley and subband domain) - see Fotopoulos/ subdirectory | 
|  | 934 \layout Itemize | 
|  | 935 | 
|  | 936 stuff moved to Meerwald/ subdirectory | 
|  | 937 \layout Itemize | 
|  | 938 | 
|  | 939 added Bruyndonckx, Corvi, Koch, Xia, Xie algorithms | 
|  | 940 \layout Standard | 
|  | 941 | 
|  | 942 version 0.1 (February 18, 2001) | 
|  | 943 \layout Itemize | 
|  | 944 | 
|  | 945 initial release | 
|  | 946 \layout Section | 
|  | 947 | 
|  | 948 Legal statement | 
|  | 949 \layout Standard | 
|  | 950 | 
|  | 951 My license is called "I-don't-care" license: (1) You can do with the accompanyin | 
|  | 952 g software whatever you want, but don't blame me if it doesn't work or it | 
|  | 953  causes damage. | 
|  | 954  (2) If you think my work is useful, tell me and tell others, but you are | 
|  | 955  not obliged to do so. | 
|  | 956  I suggest not to remove information contained in this other documentation | 
|  | 957  file. | 
|  | 958 \layout Standard | 
|  | 959 | 
|  | 960 | 
|  | 961 \begin_inset LatexCommand \BibTeX[plain]{watermarking} | 
|  | 962 | 
|  | 963 \end_inset | 
|  | 964 | 
|  | 965 | 
|  | 966 \the_end |