Dirty Paper Trellis Watermarking Software

Click on the icon to dowload the archive (latest changes: 28/11/2005). There are two Microsoft Visual Studio solutions to be compiled
  1. .\Suc\Projects\Libs.sln - open the file and build the solution to obtain the libraries used for input/output
  2. .\dptWatermarking.sln - open the file and build the solution to obtain the two exec files
Note: Make sure to build the solutions in Release mode

Now if you go to the .\Exe directory you should see dptIterativeEmbedder and dptDetector
Type the command at a Ms-DOS prompt to see the syntax, basically <command> <image> <key>

Edit the Makefile and give the right value for PROJECT_HOME
Go to the root directory where the Makefile is and type 'make' at the command line
Many warnings should pop up but discard them

Now if you go to the ./Bin directory you should see dptIterativeEmbedder and dptDetector
Type the command to see the syntax, basically <command> <image> <key>

You can change some parameters in the file .\Include\dptDefines.h
There are mainly two of interest
  1. MAX_ITERATION: The higher, the surer you are to meet the robustness constraint. Of course, this is counter-balanced by a higher computational load. With the value 200, embedding usually takes less than 2 minutes on my computer. Do not go below 100.
  2. ROBUSTNESS_THRESHOLD: this set the robustness constraint. The higher, the more robust but of course the more visible. At the end of the iterations, you will see the algorithm oscillate around a value sigma on the log display. This is the value of the standard deviation of the noise added to the DCT coefficients of the image during embedding. Therefore, the embedded watermark should survive such noise addition. You will also obtain the watson measure of the introduced distortion. Usually, if it is below 20, it is invisible or at least non-suspicious. However you can decrease the value of ROBUSTNESS_THRESHOLD if you want to decrease the distortion.

There is no warranty for the programs, to the extent permitted by applicable law. Except when otherwise stated in the writing, the copyright holders  and/or other parties provide the program as is without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the programs are with you. should the programs prove defective, you assume the cost of all necessary servicing, repair or correction.
In no event unless required by applicable law or agreed to in writing will ant copyright holder, or any other party who may modify and/or redistribute the programs, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other programs), even if such holder or other party has been advised of the possiblity of such damages.

  1. Change the image I/O library for more convenience. For the moment, we only accept a specific kind of targa (.tga) images.
  2. Insert Lin's non iterative embedding technique for comparison (ICIP'05).
  3. The current implementation of Watson's distance is know to be buggy.
  4. Robustness constraint may be different for different payload (to be checked) i.e. use same payload for valid comparison for the moment.
  5. Add signature bits to ensure a given false postive probability.