This web page presents some results for a H.264 watermarking technique.

Chen Wei has been working for a couple of years in our lab on H.264 watermarking, using advanced HVS models.

He provided very useful source code for three HVS based masks, see the softwares section. He furthermore designed a nice H.264 embedding technique avoiding error propagation in the video frames.

Pierre Evenou designed a Qt based GUI playing simultaneously the original video sequence along with the marked sequence and the watermark. The maximum cross-correlation values are also plotted in real time.

  • Algorithm details:

The watermark is embedded within the QTC (Quantized Transformed Coefficients) of H.264. The 4x4 blocks are modified in such a way that the border coefficients are kept unchanged, and thus, the error does not spread within the intra frame.

Some Mathematica functions are provided here (along with some brief explanations) to determine the basis solutions to the linear system of equations that will keep the border coefficients intact.
Note: mathics could be used as a free alternative to mathematica : or

Right here, you will find a simple Matlab (or GNU Octave) piece of code showing how the watermark embedding is performed in the 4x4 blocks without modifying the border coefficients.

If you want to see how using a perceptual model can improve the perception, you can see here for a watermarked sequence without any HVS modeling, and here when DCTune is employed to weight the watermark strength.

Some detection performances are provided here.

You can have a quick glance at the demo here.

  • Downloads:

Download the H.264 watermarking demo here.

This demo uses cmake to compile.

Using cmake in a few steps:
> mkdir build
> cd build
> cmake -G "Unix Makefiles" ../
> cmake -G "Xcode" ../
> cmake -G "Visual Studio 7" ../
> cmake -G "NMake Makefiles" ../
> cmake -G "MSYS Makefiles" ../
> cmake -G "MinGW Makefiles" ../

and then compile.

Or simply launch the Cmake interface program.

Requirements :

- Qt 4
- qwt

Or alternatively (if you are encountering any problem while compiling), you can browse through the files there.