Mercurial > hg > wm
diff manual.lyx @ 3:acb6967ee76d
update to 0.5
author | Peter Meerwald <pmeerw@cosy.sbg.ac.at> |
---|---|
date | Tue, 14 Aug 2007 21:11:21 +0200 |
parents | be303a3f5ea8 |
children |
line wrap: on
line diff
--- a/manual.lyx Tue Aug 14 19:59:48 2007 +0200 +++ b/manual.lyx Tue Aug 14 21:11:21 2007 +0200 @@ -1,81 +1,105 @@ -#LyX 1.1 created this file. For more info see http://www.lyx.org/ -\lyxformat 218 +#LyX 1.5.0rc2 created this file. For more info see http://www.lyx.org/ +\lyxformat 276 +\begin_document +\begin_header \textclass paper \language english \inputencoding auto -\fontscheme default +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 \graphics default \paperfontsize default -\spacing single -\papersize Default -\paperpackage a4 -\use_geometry 0 -\use_amsmath 0 +\spacing single +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 0 +\cite_engine basic +\use_bibtopic false \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation skip \defskip smallskip \quotes_language english -\quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default - -\layout Title +\tracking_changes false +\output_changes false +\author "Anonymous" +\end_header +\begin_body + +\begin_layout Title Watermarking Source Code -\layout SubTitle +\end_layout -version 0.4 -\layout Author +\begin_layout SubTitle +version 0.5 +\end_layout +\begin_layout Author Peter Meerwald -\layout Address +\end_layout +\begin_layout Address Dept. - of Scientific Computing, University of Salzburg -\newline + of Computer Sciences, University of Salzburg +\newline Jakob-Haringer-Str. 2, A-5020 Salzburg, Austria -\newline +\newline -\begin_inset LatexCommand \url{mailto:pmeerw@cosy.sbg.ac.at} +\begin_inset LatexCommand url +target "mailto:pmeerw@cosy.sbg.ac.at" -\end_inset +\end_inset -\newline +\newline -\begin_inset LatexCommand \url{http://www.cosy.sbg.ac.at/~pmeerw/Watermarking} +\begin_inset LatexCommand url +target "http://www.cosy.sbg.ac.at/~pmeerw/Watermarking" -\end_inset +\end_inset -\layout Abstract +\end_layout +\begin_layout Abstract This package provides source code for some watermarking algorithms in hopefully portable C code. The programs can be used to study watermarking techniques, perform comparative robustness tests and develop new attacks against embedded watermarks. -\layout Abstract +\end_layout +\begin_layout Abstract However, the provided programs are by no means suitable for real-world applicati on (i.e. copyright protection) and the code solely serves some educational purpose. -\layout Standard +\end_layout + +\begin_layout Standard +\begin_inset LatexCommand tableofcontents + +\end_inset -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - +\end_layout -\layout Section - +\begin_layout Section Introduction -\layout Standard +\end_layout +\begin_layout Standard Academic research in the watermarking field has grown dramatically since approximately 1995. But surprisingly, source code for the proposed watermarking schemes has @@ -83,117 +107,143 @@ The reason is most likely the security of many watermarking systems lies at least to some extent in the embedding and detection algorithm itself, and not in the keys used -- violating the Kerckhoff principle -\begin_inset LatexCommand \cite{Kerckhoff1883a} +\begin_inset LatexCommand cite +key "Kerckhoff1883a" -\end_inset +\end_inset . -\layout Standard +\end_layout +\begin_layout Standard With the availability of public robustness test for watermarking algorithms, StirMark -\begin_inset LatexCommand \cite{Petitcolas99c, Petitcolas98b, Petitcolas98a} +\begin_inset LatexCommand cite +key "Petitcolas99c, Petitcolas98b, Petitcolas98a" -\end_inset +\end_inset , Unzign -\begin_float footnote -\layout Standard +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.altern.org/watermark" + +\end_inset -\begin_inset LatexCommand \url{http://www.altern.org/watermark} +\end_layout -\end_inset - +\end_inset -\end_float and very recently Checkmark -\begin_inset LatexCommand \cite{Pereira01b} +\begin_inset LatexCommand cite +key "Pereira01b" -\end_inset +\end_inset , the situation begins to improve. Now it is possible to measure the performance of watermarking systems. -\layout Standard +\end_layout +\begin_layout Standard In order the compare and evaluate new embedding and detection techniques, it is also necessary to have some reference implementations of the older, now often called classical schemes. In this work, we provide some implementations of watermarking schemes, some of which can be considered 'classical'. -\layout Standard +\end_layout +\begin_layout Standard It was the goal to capture the main ideas of the proposed algorithms, as layed out in the respective papers. This is clearly not an easy task as some papers do not disclose all details or state which particular parameters were used to obtain the results outlined in the communications. -\layout Standard +\end_layout +\begin_layout Standard I am very interested in hearing your comments, complaints and suggestions regarding this software. Moreover, if you have source code for a watermarking scheme not yet covered or some useful utility I would be happy to include your code in this distributi on. Please see the contact information at the top of this document. -\layout Standard +\end_layout +\begin_layout Standard If you use the accompanying code, please cite my thesis: -\layout Quotation +\end_layout +\begin_layout Quotation Peter Meerwald, Digital Image Watermarking in the Wavelet Transform Domain, Master's Thesis, Department of Scientific Computing, University of Salzburg, Austria, January 2001. -\layout Section +\end_layout +\begin_layout Section Software -\layout Standard +\end_layout +\begin_layout Standard Most of the software provided herein was written by myself, as part of my Master thesis. Some contributions were made by Vassilis Fotopoulos -\begin_float footnote -\layout Standard +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "mailto:vfotop1@physics.upatras.gr" + +\end_inset -\begin_inset LatexCommand \url{mailto:vfotop1@physics.upatras.gr} +\end_layout -\end_inset +\end_inset - -\end_float . The software in the archive is organized in the following sub-directories: -\layout Description +\end_layout +\begin_layout Description Fotopoulos/ contains contributions by Vassilis Fotopoulos -\layout Description +\end_layout +\begin_layout Description Meerwald/ contains my work -\layout Description +\end_layout +\begin_layout Description images/ contains the Lena image in PGM format; the default parameters of most algorithms are tuned to work best with that image -\layout Description +\end_layout +\begin_layout Description linux_bin/ the place where the Linux executables are stored in the binary distribution -\layout Description +\end_layout +\begin_layout Description win32_bin/ the place where Windows 32-bit executables are distributed; tested with Windows NT 4.0 only -\layout Description +\end_layout +\begin_layout Description make/ contains the -\family typewriter -\size small +\family typewriter +\size small Makefile -\family default -\size default +\family default +\size default options to build the code on supported platforms -\layout Standard +\end_layout +\begin_layout Standard For the purpose of this software package, a watermarking system comprises four parts, namely: signature generation, watermark embedding, watermark extraction and signature comparison or detection -- with the exception @@ -201,387 +251,501 @@ to watermark embedding and detection). Signature is used more less as a synonym for mark and can be thought of as the payload (at least for some schemes :-). -\layout Standard +\end_layout +\begin_layout Standard All programs only accept the image in NetPBM format and will also produce only NetPBM-format files (see section -\begin_inset LatexCommand \ref{sec:prereq} +\begin_inset LatexCommand ref +reference "sec:prereq" -\end_inset +\end_inset ). Unfortunately, most programs have only been tested with 8-bit gray-scale images of size -\begin_inset Formula \( 512\times 512. \) -\end_inset +\begin_inset Formula $512\times512.$ +\end_inset -\layout Standard +\end_layout +\begin_layout Standard In order to simplify batch testing, the programs allow to read either from a file, e.g. -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small -wm_cox_e -s cox.sig -\series bold +\family typewriter +\size small +wm_cox_e -s cox.sig +\family default + +\family typewriter +\series bold image.pgm -\layout Standard +\end_layout +\begin_layout Standard or from standard input, i.e. -\layout Standard +\end_layout +\begin_layout Standard wm_cox_e -s cox.sig -\series bold +\series bold < image.pgm -\layout Standard +\end_layout +\begin_layout Standard The output is usually written to standard output, i.e. -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small -wm_cox_e -s cox.sig image.pgm -\series bold +\family typewriter +\size small +wm_cox_e -s cox.sig image.pgm +\family default + +\family typewriter +\series bold > wm_image.pgm -\layout Standard +\end_layout +\begin_layout Standard unless redirected to a file, e.g. -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small -wm_cox_e -s cox.sig -\series bold +\family typewriter +\size small +wm_cox_e -s cox.sig +\family default + +\family typewriter +\series bold -o wm_image.pgm -\series default - image.pgm -\layout Subsection +\family default +\series default + +\family typewriter +image.pgm +\end_layout +\begin_layout Subsection Featured algorithms -\layout Standard +\end_layout +\begin_layout Standard Currently it includes the following watermarking algorithms -\layout Itemize +\end_layout +\begin_layout Itemize Bruyndonckx [bruyn], refer to -\layout Quotation +\end_layout +\begin_layout Quotation O. Bruyndonckx, Jean-Jacques Quisquater, and Benoit M. Macq. Spatial method for copyright labeling of digital images. In IEEE Workshop on Nonlinear Signal and Image Processing '95, Thessaloniki, Greece, pages 456 - 459, 1995. -\layout Itemize +\end_layout +\begin_layout Itemize Corvi, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Marco Corvi and Gianluca Nicchiotti. Wavelet-based image watermarking for copyright protection. In Scandinavian Conference on Image Analysis SCIA '97, Lappeenranta, Finland, June 1997. -\layout Itemize +\end_layout +\begin_layout Itemize Cox, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Ingemar J. Cox, Joe Kilian, Tom Leighton, and Talal G. Shamoon. Secure spread spectrum watermarking for multimedia. In Proceedings of the IEEE ICIP '97, volume 6, pages 1673 - 1687, Santa Barbara, California, USA, 1997. -\layout Itemize +\end_layout +\begin_layout Itemize Dugad, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Rakesh Dugad, Krishna Ratakonda, and Narendra Ahuja. A new wavelet-based scheme for watermarking images. In Proceedings of the IEEE International Conference on Image Processing, ICIP '98, Chicago, IL, USA, October 1998. -\layout Itemize +\end_layout +\begin_layout Itemize Fridrich (2. scheme), refer to -\layout Quotation +\end_layout +\begin_layout Quotation Jiri Fridrich. Combining low-frequency and spread spectrum watermarking. In Proceedings of the SPIE Symposium on Optical Science, Engineering and Instrumentation, San Diego, USA, July 1998. -\layout Itemize +\end_layout +\begin_layout Itemize Kim, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Jong Ryul Kim and Young Shik Moon. A robust wavelet-based digital watermark using level-adaptive thresholding. In Proceedings of the 6th IEEE International Conference on Image Processing ICIP '99, page 202, Kobe, Japan, October 1999. -\layout Itemize +\end_layout +\begin_layout Itemize Koch, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Eckhard Koch and Jian Zhao. Towards robust and hidden image copyright labeling. In Proceedings of the IEEE International Workshop on Nonlinear Signal and Image Processing, pages 452 - 455, Halkidiki, Marmaras, Greece, June 1995. -\layout Itemize +\end_layout + +\begin_layout Itemize +Kundur, refer to +\end_layout + +\begin_layout Quotation +Deepa Kundur and Dimitrios Hatzinakos. + Digital watermarking using multiresolution wavelet decomposition. + In Proceedings of IEEE ICASSP '98, volume 5, pages 2969-2972, Seattle, + WA, USA, May 1998. + +\end_layout +\begin_deeper +\begin_layout Standard +and +\end_layout + +\end_deeper +\begin_layout Quotation +Deepa Kundur and D. + Hatzinakos. + Diversity and attack characterization for improved robust watermarking. + IEEE Transactions on Signal Processing, 29(10):2383-2396, October 2001. +\end_layout + +\begin_layout Itemize Wang, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Houng-Jyh Wang, Po-Chyi Su, and C.-C. Jay Kuo. Wavelet-based digital image watermarking. Optics Express, volume 3, pp. 497, December 1998. -\layout Itemize +\end_layout +\begin_layout Itemize Xia, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Xiang-Gen Xia, Charles G. Boncelet, and Gonzalo R. Arce. Wavelet transform based watermark for digital images. Optics Express, volume 3, pp. 497, December 1998. -\layout Itemize +\end_layout +\begin_layout Itemize Xie, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Liehua Xie and Gonzalo R. Arce. Joint wavelet compression and authentication watermarking. In Proceedings of the IEEE International Conference on Image Processing, ICIP '98, Chicago, IL, USA, 1998. -\layout Itemize +\end_layout +\begin_layout Itemize Zhu, refer to -\layout Quotation +\end_layout +\begin_layout Quotation Wenwu Zhu, Zixiang Xiong, and Ya-Qin Zhang. Multiresolution watermarking for images and video: a unified approach. In Proceedings of the IEEE International Conference on Image Processing, ICIP '98, Chicago, IL, USA, October 1998. -\layout Itemize +\end_layout +\begin_layout Itemize Piva/Fotopoulos [cast|test-pv,hart,sub], contribution by Vassilis Fotopoulos, refer to -\layout Quotation +\end_layout +\begin_layout Quotation M.Barni, F. Bartolini, V. Cappellini, A. Piva. A DCT-Domain System for Robust Image Watermarking, Signal Processing, vol. 66, pp 357 - 372, 1998. -\begin_deeper -\layout Standard -\added_space_top smallskip \added_space_bottom smallskip +\end_layout + +\begin_deeper +\begin_layout Standard +\begin_inset VSpace smallskip +\end_inset + and -\end_deeper -\layout Quotation +\begin_inset VSpace smallskip +\end_inset + +\end_layout + +\end_deeper +\begin_layout Quotation V. Fotopoulos, A. N. Skodras, A Subband DCT approach to image watermarking, X European Signal Processing Conference, September 4 - 8, 2000, Tampere, Finland. -\layout Standard +\end_layout +\begin_layout Standard More algorithms will be added over time, I have implemented about 13 watermarkin g algorithms in the spatial-, DCT-, and wavelet domain so far. -\layout Subsection - +\end_layout -\begin_inset LatexCommand \label{sec:utility_programs} +\begin_layout Subsection +\begin_inset LatexCommand label +name "sec:utility_programs" -\end_inset +\end_inset Utility programs -\layout Standard +\end_layout +\begin_layout Standard A good way to check the effect of a watermarking algorithm is computing the difference image, i.e. subtracting the original image from the watermarked image. Alternatively, one can also have a look at the modified coefficients in the transform domain. The following programs facilitate these tasks: -\layout Description +\end_layout +\begin_layout Description cmp_pgm compute difference image, PSNR, ... -\layout Description +\end_layout +\begin_layout Description cmp_dct compute full-frame DCT domain difference image -\layout Description +\end_layout +\begin_layout Description cmp_dct8x8 compute 8x8 block-based DCT difference image -\layout Description +\end_layout +\begin_layout Description cmp_dwt compute DWT domain difference image -\layout Standard +\end_layout +\begin_layout Standard For example, to produce the difference image of two PGM files and compute the PSNR along with some other measures, the following command can be used: -\layout Standard - +\end_layout -\family typewriter -\size small +\begin_layout Standard + +\family typewriter +\size small cmp_pgm -p -i original.pgm -o diff.pgm watermarked.pgm -\layout Section +\end_layout +\begin_layout Section Usage -\layout Standard +\end_layout +\begin_layout Standard Note, almost all programs will output usage information if called with the -\family typewriter -\size small +\family typewriter +\size small -h -\family default -\size default +\family default +\size default argument. -\layout Subsection +\end_layout +\begin_layout Subsection Generating a mark -\layout Standard +\end_layout +\begin_layout Standard First, you have to generate an appropriate signature file for the corresponding embedding/detection algorithm; e.g. if you are going to use Cox' scheme, then you would run -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small gen_cox_sig -\layout Standard +\end_layout +\begin_layout Standard The programs outputs some parameters and a sequence of Gaussian distributed random numbers (which is the watermark sequence). You want to save that into a signature file, so you run -\layout Standard - +\end_layout -\family typewriter -\size small +\begin_layout Standard + +\family typewriter +\size small gen_cox_sig > cox.sig or -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small gen_cox_sig -o cox.sig -\layout Standard +\end_layout +\begin_layout Standard You can influence e.g. the embedding strength that will be used in the embedding step by running -\layout Standard +\end_layout + +\begin_layout Standard + +\family typewriter +\size small +gen_cox_sig -a 0.5 > too_strong_cox.sig +\end_layout + +\begin_layout Standard +Usually, the programs for generating a signature will supply reasonable + default values for marking a 8-bit gray-scale image of size +\begin_inset Formula $512\times512.$ +\end_inset -\family typewriter -\size small -gen_cox_sig -a 0.5 > too_strong_cox.sig -\layout Standard +\end_layout -Usually, the programs for generating a signature will supply reasonable - default values for marking a 8-bit gray-scale image of size -\begin_inset Formula \( 512\times 512. \) -\end_inset - +\begin_layout Subsection +Watermark embedding +\end_layout -\layout Subsection - -Watermark embedding -\layout Standard - +\begin_layout Standard Watermark embedding is performed with the following command (for our example, we are using Cox' scheme): -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small wm_cox_e -s cox.sig -o cox_lena.pgm lena.pgm -\layout Standard +\end_layout +\begin_layout Standard The signature file is parsed to obtain the particular watermark sequence and the embedding strength. The watermarked image is written to the file -\family typewriter -\size small +\family typewriter +\size small cox_lena.pgm -\family default -\size default +\family default +\size default . Now it the time to check the perceptual quality of the produced image and also have a look at the difference image (see section -\begin_inset LatexCommand \ref{sec:utility_programs} +\begin_inset LatexCommand ref +reference "sec:utility_programs" -\end_inset +\end_inset ). -\layout Subsection +\end_layout +\begin_layout Subsection Watermark extraction -\layout Standard +\end_layout +\begin_layout Standard To extract the embedded signature, we execute the command -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small wm_cox_d -s cox.sig -i lena.pgm -o cox.wm cox_lena.pgm -\layout Standard +\end_layout +\begin_layout Standard Since Cox' algorithm is not blind, the original image is needed as a reference to extract the embedded mark. The embedded mark will be stored in -\family typewriter -\size small +\family typewriter +\size small cox.wm -\family default -\size default +\family default +\size default . The original signature, -\family typewriter -\size small +\family typewriter +\size small cox.sig -\family default -\size default +\family default +\size default , is used to get the auxiliary embedding parameter correct (e.g. embedding strength). -\layout Subsection +\end_layout +\begin_layout Subsection Comparing the mark -\layout Standard +\end_layout +\begin_layout Standard The final step is comparing the original signature against the extracted signature. The result here is usually a correlation factor. Values around 0 indicate that the mark has not been found, values around - 1 -\layout Standard + 1. +\end_layout +\begin_layout Standard In most programs a analytical detection threshold for some detection probability is not used. Hence, one has to observe the output of the detector for many different @@ -589,365 +753,459 @@ detection. A good value to go with initially might be 0.2 which means we claim the watermark detected if the correlation factor is > 0.2. -\layout Standard +\end_layout +\begin_layout Standard The appropriate command for comparing the mark is -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small cmp_cox_sig -s cox.sig cox.wm -\layout Subsection +\end_layout +\begin_layout Subsection Batch testing - benchmarking -\layout Standard +\end_layout +\begin_layout Standard If you want to run many test you can pipe the images to be do be watermarked (and tested) through the embedder and detector. The programs then act like a filter. Try something like the following in a Unix shell script: -\layout Standard - +\end_layout -\family typewriter -\size small +\begin_layout Standard + +\family typewriter +\size small gen_cox_sig > cox.sig -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small for i in *.pgm -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small do -\layout Standard - +\end_layout -\family typewriter -\size small -\SpecialChar ~ -\SpecialChar ~ +\begin_layout Standard + +\family typewriter +\size small +\InsetSpace ~ +\InsetSpace ~ wm_cox_e -s cox.sig $i | -\backslash +\backslash -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small -\SpecialChar ~ -\SpecialChar ~ +\family typewriter +\size small +\InsetSpace ~ +\InsetSpace ~ wm_cox_d -s cox.sig -i $i | -\backslash +\backslash -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small -\SpecialChar ~ -\SpecialChar ~ +\family typewriter +\size small +\InsetSpace ~ +\InsetSpace ~ cmp_cox_sig -s cox.sig -\layout Standard +\end_layout +\begin_layout Standard -\family typewriter -\size small +\family typewriter +\size small done -\layout Section +\end_layout +\begin_layout Section +\begin_inset LatexCommand label +name "sec:recompile" -\begin_inset LatexCommand \label{sec:recompile} - -\end_inset +\end_inset Recompiling -\layout Standard +\end_layout +\begin_layout Standard Note, that most watermark embedding/extraction programs use the built-in random number generator of the C library, i.e. -\family typewriter -\size small +\family typewriter +\size small srandom() -\family default -\size default +\family default +\size default and -\family typewriter -\size small +\family typewriter +\size small random(). + +\family default -\family default -\size default +\size default Therefore, if you recompile, chances are that you won't be able to use your images watermarked with the previous version. -\layout Standard +\end_layout +\begin_layout Standard The Makefile options for compiling on the different platforms can be found in the -\family typewriter -\size small +\family typewriter +\size small make/ -\family default -\size default +\family default +\size default sub-directory of the archive. -\layout Subsection - +\end_layout -\begin_inset LatexCommand \label{sec:prereq} +\begin_layout Subsection +\begin_inset LatexCommand label +name "sec:prereq" -\end_inset +\end_inset Prerequisites -\layout Subsubsection +\end_layout +\begin_layout Subsubsection NetPBM -\layout Standard +\end_layout +\begin_layout Standard NetPBM is responsible for image file I/O and provides a definition of a simple image file format along with many image file format filters that allow to convert images to and from NetPBM format. -\layout Standard +\end_layout +\begin_layout Standard You need to get and install the NetPBM library at -\begin_inset LatexCommand \url{http://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/} +\begin_inset LatexCommand url +target "http://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/" -\end_inset +\end_inset or -\begin_inset LatexCommand \url{http://netpbm.sourceforge.net} +\begin_inset LatexCommand url +target "http://netpbm.sourceforge.net" -\end_inset +\end_inset . The library provides -\family typewriter -\size small +\family typewriter +\size small pgm.h -\family default -\size default +\family default +\size default and the appropriate implementation. -\layout Subsection +\end_layout + +\begin_layout Subsubsection +getopt +\end_layout +\begin_layout Standard +When compiling on Windows, the getopt() function call required. + An implementation of getopt() can be found in the NetPBM package. + +\end_layout + +\begin_layout Subsection Unix/Linux platform -\layout Standard +\end_layout +\begin_layout Standard All programs were developed using Linux and GNU C. The programs should compile and work with all recent versions of Linux and GNU C. -\layout Subsection - +\end_layout -\begin_inset LatexCommand \label{sec:win32_compile} +\begin_layout Subsection +\begin_inset LatexCommand label +name "sec:win32_compile" -\end_inset +\end_inset Win32 platform -\layout Standard +\end_layout +\begin_layout Standard The programs were ported to the Windows platform using the Cygwin -\begin_float footnote -\layout Standard +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.cygwin.com" + +\end_inset + + +\end_layout + +\end_inset + +and Mingw +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.mingw.org" + +\end_inset -\begin_inset LatexCommand \url{http://www.cygwin.com} - -\end_inset +\end_layout - -\end_float -and Mingw -\begin_float footnote -\layout Standard - +\end_inset -\begin_inset LatexCommand \url{http://www.mingw.org} - -\end_inset - - -\end_float environment. Most notable, the file mode for standard input and standard output has to be set to binary mode. This is accomplished with the -\family typewriter -\size small +\family typewriter +\size small setmode() -\family default -\size default +\family default +\size default or -\family typewriter -\size small +\family typewriter +\size small _fsetmode() -\family default -\size default +\family default +\size default commands. -\layout Section +\end_layout +\begin_layout Section FAQ -\layout Standard +\end_layout +\begin_layout Standard Q: How can I report problems? -\layout Standard +\end_layout +\begin_layout Standard A: See the contact information at the beginning of this document. -\layout Standard +\end_layout +\begin_layout Standard Q: The compiler complains about -\family typewriter -\size small +\family typewriter +\size small pgm.h -\family default -\size default +\family default +\size default ? -\layout Standard +\end_layout +\begin_layout Standard A: You need to get and install the NetPBM library, see section -\begin_inset LatexCommand \ref{sec:prereq} +\begin_inset LatexCommand ref +reference "sec:prereq" -\end_inset +\end_inset . -\layout Standard +\end_layout +\begin_layout Standard Q: What is the best algorithm? -\layout Standard +\end_layout +\begin_layout Standard A: Depends on your application. -\layout Standard +\end_layout +\begin_layout Standard Q: What is the most robust algorithm? -\layout Standard +\end_layout +\begin_layout Standard A: Depends on the attack. See some results on -\begin_inset LatexCommand \url{http://www.cosy.sbg.ac.at/~pmeerw/Watermarking} +\begin_inset LatexCommand url +target "http://www.cosy.sbg.ac.at/~pmeerw/Watermarking" -\end_inset +\end_inset . -\layout Standard +\end_layout +\begin_layout Standard Q: I need code for a full-frame DCT? -\layout Standard +\end_layout +\begin_layout Standard A: See the files Meerwald/dct.* in the archive. -\layout Standard +\end_layout +\begin_layout Standard Q: I need code for a 8x8 block DCT? -\layout Standard +\end_layout +\begin_layout Standard A: See the files -\family typewriter -\size small +\family typewriter +\size small Meerwald/dct.* -\family default -\size default +\family default +\size default in the archive. -\layout Standard +\end_layout +\begin_layout Standard Q: I need code for the wavelet transform (DWT)? -\layout Standard +\end_layout +\begin_layout Standard A: See the files -\family typewriter -\size small +\family typewriter +\size small Meerwald/wavelet.* -\family default -\size default +\family default +\size default in the archive. -\layout Standard +\end_layout +\begin_layout Standard Q: I get the message 'unable to open filter.dat' - what to do? -\layout Standard +\end_layout +\begin_layout Standard A: Make sure the file filter.dat is in the current directory or accessible via path/filename specified in the signature file. Use the signature generation command to specify an absolute path if necessary. -\layout Standard +\end_layout +\begin_layout Standard Q: I can't compile the code using some Microsoft product? -\layout Standard +\end_layout +\begin_layout Standard A: Make your life easier, install GNU software! See section -\begin_inset LatexCommand \ref{sec:recompile} +\begin_inset LatexCommand ref +reference "sec:recompile" -\end_inset +\end_inset . -\layout Section +\end_layout +\begin_layout Section Revision history -\layout Standard +\end_layout + +\begin_layout Standard +version 0.5 (December, 2005) +\end_layout +\begin_layout Itemize +added algorithm kund3, kund2 and xie2 +\end_layout + +\begin_layout Standard version 0.4 (June 21, 2001) -\layout Itemize +\end_layout +\begin_layout Itemize bug fixes -\begin_deeper -\layout Itemize +\end_layout +\begin_deeper +\begin_layout Itemize wm_xia_{e|d}.c variable level uninitialized -\layout Itemize +\end_layout +\begin_layout Itemize wm_zhu_{e|d}.c variable level uninitialized -\layout Itemize +\end_layout +\begin_layout Itemize issue with random() vs. rand() and RAND_MAX in frid2_common.c -\end_deeper -\layout Itemize +\end_layout +\end_deeper +\begin_layout Itemize added option to bruyn algorithm to disable block skipping -\layout Itemize +\end_layout +\begin_layout Itemize added algorithm kim -\layout Standard +\end_layout +\begin_layout Standard version 0.3 (June 18, 2001) -\layout Itemize +\end_layout +\begin_layout Itemize created a nice (?) manual/documentation -\layout Itemize +\end_layout +\begin_layout Itemize added algorithms by Dugad, Wang, Zhu, Fridrich -\layout Itemize +\end_layout +\begin_layout Itemize added Makefiles for Win32 platform (mingw32) -\layout Standard +\end_layout +\begin_layout Standard version 0.2 (February 22, 2001) -\layout Itemize +\end_layout +\begin_layout Itemize added contribution by Vassilis Fotopoulos (Piva's algorithm, -\layout Itemize +\end_layout +\begin_layout Itemize DCT, Hartley and subband domain) - see Fotopoulos/ subdirectory -\layout Itemize +\end_layout +\begin_layout Itemize stuff moved to Meerwald/ subdirectory -\layout Itemize +\end_layout +\begin_layout Itemize added Bruyndonckx, Corvi, Koch, Xia, Xie algorithms -\layout Standard +\end_layout +\begin_layout Standard version 0.1 (February 18, 2001) -\layout Itemize +\end_layout +\begin_layout Itemize initial release -\layout Section +\end_layout +\begin_layout Section Legal statement -\layout Standard +\end_layout +\begin_layout Standard My license is called "I-don't-care" license: (1) You can do with the accompanyin g software whatever you want, but don't blame me if it doesn't work or it causes damage. @@ -955,12 +1213,17 @@ not obliged to do so. I suggest not to remove information contained in this other documentation file. -\layout Standard +\end_layout + +\begin_layout Standard +\begin_inset LatexCommand bibtex +options "plain" +bibfiles "watermarking" + +\end_inset -\begin_inset LatexCommand \BibTeX[plain]{watermarking} +\end_layout -\end_inset - - -\the_end +\end_body +\end_document