Robust grayscale image watermarking approach using DCT and DWT

In this work, we implement a robust image watermarking method for grayscale images that uses two transforms, namely, discrete wavelet transform (DWT) and discrete cosine transform (DCT). During the embedding stage, 1-level 2D-DWT is first performed on the host image to yield four sub-matrices, that is to say, LL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> , HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> , LH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> and HH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> . Afterwards, two of these sub-matrices, namely, HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> and LH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> are divided into 8 x 8 non-overlapping blocks. Then, 2D-DCT operation is applied to each of the above-mentioned blocks. The watermark bits are embedded using pre-generated pseudo-random sequences PRNo or PRN <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> and a scaling factor δ, inside the middle-band DCT block coefficients only, in accordance with watermark binary bit value, that is, 0 or 1. Next, each altered block of HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> and LH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> sub-bands are used to generate the modified HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> and LH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> sub-bands, using inverse 2D-DCT transform operation. At last, the marked image is produced by means of inverse 2D-DWT. In the retrieval stage, the marked image, which may be attacked, is transformed, in a similar way, as in the embedding process, by 1-level 2D-DWT to produce four sub-matrices, LL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> , modified LH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> , modified HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> , and HH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> . Then, forward 2D-DCT is operated on modified HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> to retrieve the modified middle-band DCT coefficients of modified HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> . The same process is repeated with the modified LH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> sub-band to extract the modified middle-band DCT coefficients of modified HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> . The correlations between PRNo, PRN <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> , and the extracted middle-frequency coefficients of modified HL <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> are computed. The same process is repeated for modified LH <inf xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">1</inf> sub-band. Finally, the watermark is extracted using correlation values. To add more security to the watermarking mechanism, Arnold transform (AT) is applied to encrypt the watermark image prior to embedding.