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 |