README for TIP11-light-wm MATLAB code implementing and testing five different detectors for additive, spread-spectrum watermarking evaluated in the paper Roland Kwitt, Peter Meerwald, Andreas Uhl, "Lightweight Detection of Additive Watermarking in the DWT-Domain", IEEE Transactions on Image Processing 20:2, pp. 474-484, Feb. 2011 See http://wavelab.at/sources. % assume to work in directory src/ % set the image names to test; they must be present in directory ../img std_image_names = {'barbara', 'boat','bridge','elaine','lena','peppers'}; % compute probability of miss depending on distribution shape parameter for the % images given in std_image_names; [0 0 0; 0 1 0] denotes the embedding subband, % 'bior4.4' the wavelet filter used for image decomposition, 20 is the embedding % DWR, 1000 the number of random watermarks to test (Monte Carlo simulation), 1e-6 % is the probability of false-alarm. [results,quality,time] = test_cauchy_ggd_param_extensive(std_image_names, [0 0 0; 0 1 0], 'bior4.4', 20, 1000, 1e-6); % produce 'Hoecker' (German word for 'hump') plots, see Fig. 2 and 3 in the paper; % results are obtained by test_cauchy_ggd_param_extensive(), 1 denotes i-th image % in the image set (std_image_names), 'ggd' produces plots for the GGD shape % parameter (alternatively, use 'cauchy' to produce a plot for the Cauchy shape % parameter, 'Barbara' specifies title the plot and the output file name); the % resulting plot in .eps format in written to directory ../out [pm,mle] = paper_hoecker_plot(results, 1, 'ggd', {'lrt','rao'}, 1e-6, results{3,1,1}.range, 'Barbara'); [pm,mle] = paper_hoecker_plot(results, 1, 'cauchy', {'lrt','rao'}, 1e-6, results{1,1,1}.range, 'Barbara'); Interesting functions: * ggd_fast() computes a fast estimate of a vector's GGD shape parameter * cauchy_fast() computes a fast estimate of a vector's Cauchy shape parameter * detect_rao_cauchy() computes the detection statistic using the Rao-Cauchy detector * detect_rao_ggd() computes the detection statistic using the Rao-GGD detector * detect_lrt_cauchy() computes the detection statistic using the LRT-Cauchy detector * detect_lrt_ggd() computes the detection statistic using the LRT-GGD detector * detstat_corr_musigma() computes expected mean and variance of linear correlation (LC) detection statistic under H0 * detstat_cauchy_musigma() computes expected mean and variance of LRT-Cauchy detection statistic under H0 * detstat_ggd_musigma() computes expected mean and variance of LRT-GGD detection statistic under H0 Dependencies: The following programs and libraries need to be installed and in the execution path (shell or MATLAB): * Minh N. Do's MATLAB implementation of the moment matching and maximum likelihood estimators for the generalized Gaussian density, http://www.ifp.uiuc.edu/~minhdo/software/ * Pedar Axensten's Cauchy distribution MATLAB code, http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=11749 * Nikola Sprljan's MATLAB Quality Assessment toolbox (v1.10), http://sprljan.com/nikola/matlab/qassessment.html Disclaimer: This material is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. No author or distributor accepts responsibility to anyone for the consequences of using it or for whether it serves any particular purpose or works at all. The material is prepared strictly for research use only, commercial use is prohibited. Do not distribute the material without written permission. If you publish any work based on this code, please cite the original paper. Contact: Please address any technical questions to Roland Kwitt (rkwitt@cosy.sbg.ac.at), or Peter Meerwald (pmeerw@cosy.sbg.ac.at) or write to Andreas Uhl Department of Computer Sciences Universität Salzburg Jakob-Haringer-Str. 2 A-5020 Salzburg AUSTRIA Telephone: ++43 (0)662 8044 6303 Fax: ++43 (0)662 8044 172 Email: uhl@cosy.sbg.ac.at