diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/manual.lyx	Sun Aug 12 13:14:34 2007 +0200
@@ -0,0 +1,966 @@
+#LyX 1.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 218
+\textclass paper
+\language english
+\inputencoding auto
+\fontscheme default
+\graphics default
+\paperfontsize default
+\spacing single 
+\papersize Default
+\paperpackage a4
+\use_geometry 0
+\use_amsmath 0
+\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
+
+Watermarking Source Code
+\layout SubTitle
+
+version 0.4
+\layout Author
+
+Peter Meerwald
+\layout Address
+
+Dept.
+ of Scientific Computing, University of Salzburg
+\newline 
+Jakob-Haringer-Str.
+ 2, A-5020 Salzburg, Austria
+\newline 
+
+\begin_inset LatexCommand \url{mailto:pmeerw@cosy.sbg.ac.at}
+
+\end_inset 
+
+
+\newline 
+
+\begin_inset LatexCommand \url{http://www.cosy.sbg.ac.at/~pmeerw/Watermarking}
+
+\end_inset 
+
+
+\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
+
+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
+
+
+\begin_inset LatexCommand \tableofcontents{}
+
+\end_inset 
+
+
+\layout Section
+
+Introduction
+\layout Standard
+
+Academic research in the watermarking field has grown dramatically since
+ approximately 1995.
+ But surprisingly, source code for the proposed watermarking schemes has
+ not been made available.
+ 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}
+
+\end_inset 
+
+.
+\layout Standard
+
+With the availability of public robustness test for watermarking algorithms,
+ StirMark 
+\begin_inset LatexCommand \cite{Petitcolas99c, Petitcolas98b, Petitcolas98a}
+
+\end_inset 
+
+, Unzign
+\begin_float footnote 
+\layout Standard
+
+
+\begin_inset LatexCommand \url{http://www.altern.org/watermark}
+
+\end_inset 
+
+
+\end_float 
+ and very recently Checkmark
+\begin_inset LatexCommand \cite{Pereira01b}
+
+\end_inset 
+
+, the situation begins to improve.
+ Now it is possible to measure the performance of watermarking systems.
+ 
+\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
+
+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
+
+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
+
+If you use the accompanying code, please cite my thesis:
+\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
+
+Software
+\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 LatexCommand \url{mailto:vfotop1@physics.upatras.gr}
+
+\end_inset 
+
+
+\end_float 
+.
+ The software in the archive is organized in the following sub-directories:
+\layout Description
+
+Fotopoulos/ contains contributions by Vassilis Fotopoulos
+\layout Description
+
+Meerwald/ contains my work
+\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
+
+linux_bin/ the place where the Linux executables are stored in the binary
+ distribution
+\layout Description
+
+win32_bin/ the place where Windows 32-bit executables are distributed; tested
+ with Windows NT 4.0 only
+\layout Description
+
+make/ contains the 
+\family typewriter 
+\size small 
+Makefile
+\family default 
+\size default 
+ options to build the code on supported platforms
+\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
+ of Vassilis's code; there are only cast and test programs (corresponds
+ 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
+
+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}
+
+\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 
+
+ 
+\layout Standard
+
+In order to simplify batch testing, the programs allow to read either from
+ a file, e.g.
+\layout Standard
+
+
+\family typewriter 
+\size small 
+wm_cox_e -s cox.sig 
+\series bold 
+image.pgm
+\layout Standard
+
+or from standard input, i.e.
+\layout Standard
+
+wm_cox_e -s cox.sig 
+\series bold 
+< image.pgm
+\layout Standard
+
+The output is usually written to standard output, i.e.
+ 
+\layout Standard
+
+
+\family typewriter 
+\size small 
+wm_cox_e -s cox.sig image.pgm 
+\series bold 
+> wm_image.pgm
+\layout Standard
+
+unless redirected to a file, e.g.
+\layout Standard
+
+
+\family typewriter 
+\size small 
+wm_cox_e -s cox.sig 
+\series bold 
+-o wm_image.pgm
+\series default 
+ image.pgm
+\layout Subsection
+
+Featured algorithms
+\layout Standard
+
+Currently it includes the following watermarking algorithms
+\layout Itemize
+
+Bruyndonckx [bruyn], refer to
+\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
+
+Corvi, refer to
+\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
+
+Cox, refer to
+\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
+
+Dugad, refer to
+\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
+
+Fridrich (2.
+ scheme), refer to
+\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
+
+Kim, refer to 
+\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
+
+Koch, refer to
+\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
+
+Wang, refer to
+\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
+
+Xia, refer to
+\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
+
+Xie, refer to
+\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
+
+Zhu, refer to
+\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
+
+Piva/Fotopoulos [cast|test-pv,hart,sub], contribution by Vassilis Fotopoulos,
+ refer to
+\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 
+and
+\end_deeper 
+\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
+
+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
+
+
+\begin_inset LatexCommand \label{sec:utility_programs}
+
+\end_inset 
+
+Utility programs
+\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
+
+cmp_pgm compute difference image, PSNR, ...
+\layout Description
+
+cmp_dct compute full-frame DCT domain difference image
+\layout Description
+
+cmp_dct8x8 compute 8x8 block-based DCT difference image
+\layout Description
+
+cmp_dwt compute DWT domain difference image
+\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
+
+
+\family typewriter 
+\size small 
+cmp_pgm -p -i original.pgm -o diff.pgm watermarked.pgm
+\layout Section
+
+Usage
+\layout Standard
+
+Note, almost all programs will output usage information if called with the
+ 
+\family typewriter 
+\size small 
+-h
+\family default 
+\size default 
+ argument.
+\layout Subsection
+
+Generating a mark
+\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
+
+
+\family typewriter 
+\size small 
+gen_cox_sig
+\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
+
+
+\family typewriter 
+\size small 
+gen_cox_sig > cox.sig or 
+\layout Standard
+
+
+\family typewriter 
+\size small 
+gen_cox_sig -o cox.sig
+\layout Standard
+
+You can influence e.g.
+ the embedding strength that will be used in the embedding step by running
+\layout Standard
+
+
+\family typewriter 
+\size small 
+gen_cox_sig -a 0.5 > too_strong_cox.sig
+\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\times 512. \)
+\end_inset 
+
+
+\layout Subsection
+
+Watermark embedding
+\layout Standard
+
+Watermark embedding is performed with the following command (for our example,
+ we are using Cox' scheme):
+\layout Standard
+
+
+\family typewriter 
+\size small 
+wm_cox_e -s cox.sig -o cox_lena.pgm lena.pgm
+\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 
+cox_lena.pgm
+\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}
+
+\end_inset 
+
+).
+\layout Subsection
+
+Watermark extraction
+\layout Standard
+
+To extract the embedded signature, we execute the command 
+\layout Standard
+
+
+\family typewriter 
+\size small 
+wm_cox_d -s cox.sig -i lena.pgm -o cox.wm cox_lena.pgm 
+\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 
+cox.wm
+\family default 
+\size default 
+.
+ The original signature, 
+\family typewriter 
+\size small 
+cox.sig
+\family default 
+\size default 
+, is used to get the auxiliary embedding parameter correct (e.g.
+ embedding strength).
+ 
+\layout Subsection
+
+Comparing the mark
+\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
+
+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
+ keys (around 1000 I'd suggest) to establish a reasonable threshold for
+ 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
+
+The appropriate command for comparing the mark is
+\layout Standard
+
+
+\family typewriter 
+\size small 
+cmp_cox_sig -s cox.sig cox.wm 
+\layout Subsection
+
+Batch testing - benchmarking
+\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
+
+
+\family typewriter 
+\size small 
+gen_cox_sig > cox.sig 
+\layout Standard
+
+
+\family typewriter 
+\size small 
+for i in *.pgm 
+\layout Standard
+
+
+\family typewriter 
+\size small 
+do 
+\layout Standard
+
+
+\family typewriter 
+\size small 
+\SpecialChar ~
+\SpecialChar ~
+wm_cox_e -s cox.sig $i | 
+\backslash 
+
+\layout Standard
+
+
+\family typewriter 
+\size small 
+\SpecialChar ~
+\SpecialChar ~
+wm_cox_d -s cox.sig -i $i | 
+\backslash 
+
+\layout Standard
+
+
+\family typewriter 
+\size small 
+\SpecialChar ~
+\SpecialChar ~
+cmp_cox_sig -s cox.sig 
+\layout Standard
+
+
+\family typewriter 
+\size small 
+done
+\layout Section
+
+
+\begin_inset LatexCommand \label{sec:recompile}
+
+\end_inset 
+
+Recompiling
+\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 
+srandom()
+\family default 
+\size default 
+ and 
+\family typewriter 
+\size small 
+random().
+ 
+\family 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
+
+The Makefile options for compiling on the different platforms can be found
+ in the 
+\family typewriter 
+\size small 
+make/
+\family default 
+\size default 
+ sub-directory of the archive.
+\layout Subsection
+
+
+\begin_inset LatexCommand \label{sec:prereq}
+
+\end_inset 
+
+Prerequisites
+\layout Subsubsection
+
+NetPBM
+\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
+
+You need to get and install the NetPBM library at 
+\begin_inset LatexCommand \url{http://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/}
+
+\end_inset 
+
+ or 
+\begin_inset LatexCommand \url{http://netpbm.sourceforge.net}
+
+\end_inset 
+
+.
+ The library provides 
+\family typewriter 
+\size small 
+pgm.h
+\family default 
+\size default 
+ and the appropriate implementation.
+\layout Subsection
+
+Unix/Linux platform
+\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
+
+
+\begin_inset LatexCommand \label{sec:win32_compile}
+
+\end_inset 
+
+Win32 platform
+\layout Standard
+
+The programs were ported to the Windows platform using the Cygwin
+\begin_float footnote 
+\layout Standard
+
+
+\begin_inset LatexCommand \url{http://www.cygwin.com}
+
+\end_inset 
+
+ 
+\end_float 
+and Mingw
+\begin_float footnote 
+\layout Standard
+
+
+\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 
+setmode()
+\family default 
+\size default 
+ or 
+\family typewriter 
+\size small 
+_fsetmode()
+\family default 
+\size default 
+ commands.
+\layout Section
+
+FAQ
+\layout Standard
+
+Q: How can I report problems?
+\layout Standard
+
+A: See the contact information at the beginning of this document.
+\layout Standard
+
+Q: The compiler complains about 
+\family typewriter 
+\size small 
+pgm.h
+\family default 
+\size default 
+?
+\layout Standard
+
+A: You need to get and install the NetPBM library, see section 
+\begin_inset LatexCommand \ref{sec:prereq}
+
+\end_inset 
+
+.
+\layout Standard
+
+Q: What is the best algorithm? 
+\layout Standard
+
+A: Depends on your application.
+\layout Standard
+
+Q: What is the most robust algorithm?
+\layout Standard
+
+A: Depends on the attack.
+ See some results on 
+\begin_inset LatexCommand \url{http://www.cosy.sbg.ac.at/~pmeerw/Watermarking}
+
+\end_inset 
+
+.
+\layout Standard
+
+Q: I need code for a full-frame DCT?
+\layout Standard
+
+A: See the files Meerwald/dct.* in the archive.
+\layout Standard
+
+Q: I need code for a 8x8 block DCT?
+\layout Standard
+
+A: See the files 
+\family typewriter 
+\size small 
+Meerwald/dct.*
+\family default 
+\size default 
+ in the archive.
+\layout Standard
+
+Q: I need code for the wavelet transform (DWT)?
+\layout Standard
+
+A: See the files 
+\family typewriter 
+\size small 
+Meerwald/wavelet.*
+\family default 
+\size default 
+ in the archive.
+\layout Standard
+
+Q: I get the message 'unable to open filter.dat' - what to do?
+\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
+
+Q: I can't compile the code using some Microsoft product?
+\layout Standard
+
+A: Make your life easier, install GNU software! See section 
+\begin_inset LatexCommand \ref{sec:recompile}
+
+\end_inset 
+
+.
+\layout Section
+
+Revision history
+\layout Standard
+
+version 0.4 (June 21, 2001)
+\layout Itemize
+
+bug fixes 
+\begin_deeper 
+\layout Itemize
+
+wm_xia_{e|d}.c variable level uninitialized 
+\layout Itemize
+
+wm_zhu_{e|d}.c variable level uninitialized
+\layout Itemize
+
+issue with random() vs.
+ rand() and RAND_MAX in frid2_common.c
+\end_deeper 
+\layout Itemize
+
+added option to bruyn algorithm to disable block skipping
+\layout Itemize
+
+added algorithm kim
+\layout Standard
+
+version 0.3 (June 18, 2001)
+\layout Itemize
+
+created a nice (?) manual/documentation
+\layout Itemize
+
+added algorithms by Dugad, Wang, Zhu, Fridrich
+\layout Itemize
+
+added Makefiles for Win32 platform (mingw32)
+\layout Standard
+
+version 0.2 (February 22, 2001)
+\layout Itemize
+
+added contribution by Vassilis Fotopoulos (Piva's algorithm,
+\layout Itemize
+
+DCT, Hartley and subband domain) - see Fotopoulos/ subdirectory
+\layout Itemize
+
+stuff moved to Meerwald/ subdirectory
+\layout Itemize
+
+added Bruyndonckx, Corvi, Koch, Xia, Xie algorithms
+\layout Standard
+
+version 0.1 (February 18, 2001)
+\layout Itemize
+
+initial release
+\layout Section
+
+Legal statement
+\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.
+ (2) If you think my work is useful, tell me and tell others, but you are
+ not obliged to do so.
+ I suggest not to remove information contained in this other documentation
+ file.
+\layout Standard
+
+
+\begin_inset LatexCommand \BibTeX[plain]{watermarking}
+
+\end_inset 
+
+
+\the_end

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.