An 8-bit blind embedding and 8-bit blind detection/extraction technique for image watermarking is presented below.

[ E_SIMPLE_8 ] [ D_SIMPLE_8 ]


This method is based on System 4 presented in [ 1 ]. It is a method based on E-Blind, although in this case 8 different marks are embedded. This allows 8 bits to be embedded, since each mark can be inserted by adding (1) or subtracting (0).

As more and more marks are inserted, in order to embed more bits of information, the reliability decreases. Therefore, we cannot use this methodology to embed large amounts of information.

It is a robust method, capable of resisting some alterations of the image.

The code of the embedding method is available at the following link: E_SIMPLE_8.

To embed a mark, just run a command like the following:

$ python3 image.png passw123 10101010 marked.png


Mark detection is performed by calculating the linear correlation between the marked image and each of the eight marks. In this way, for each of the eight marks we extract one of the eight bits.

The formula used for the linear correlation is as follows:

$Z_{lc} = \frac{1}{N} \bar{c} ยท \bar{w_r} = \frac{1}{N}\sum_{xy}c(x,y) w_r(x,y)$

In this case the threshold of $Z_{lc}$ used for the extraction of each of the bits is $0$. So we do not consider the option that one of the marks is not present. Thus, eight bits will always be extracted, even if no mark is present.

The code for the detection method is available at the following link: D_SIMPLE_8.

To detect the mark and see if a 0 or a 1 is embedded, just run a command like the following:

$ python3 marked.png passw123
msg: 10101010


  1. I. J. Cox, M. L. Miller, J. A. Bloom, J. Fridrich y T. Kalker (2008). Digital Watermarking and Steganography. Morgan Kaufmann. Second Edition.


There are currently no comments on this article.

Add a Comment