Mercurial > hg > wm
comparison manual.lyx @ 0:be303a3f5ea8
import
| author | Peter Meerwald <pmeerw@cosy.sbg.ac.at> |
|---|---|
| date | Sun, 12 Aug 2007 13:14:34 +0200 |
| parents | |
| children | acb6967ee76d |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:be303a3f5ea8 |
|---|---|
| 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 |
