This project aims to implement a robust watermarking algorithm for 1D audio signals and 2D color images, using spread spectrum techniques. The main goal is to study the tradeoff between robustness and transparency in the watermarking process. The second part of the project complements the initial watermarking implementation by introducing quality-aware and perceptual control mechanisms. It focuses on evaluating and guiding watermarking using quality metrics such as PSNR, SSIM, and Just-Noticeable Difference (JND) models.
- Embed a secret signature (e.g., user ID) into a cover signal using a private key.
- Detect the watermark using a decoding process.
- Analyze robustness against attacks (low-pass/high-pass filters, image compression, etc.)
- Extend the watermarking to images using the YCrCb color space.
- Analyze the impact of Gaussian noise and filtering on image quality.
- Evaluate the quality using objective metrics like PSNR and SSIM.
- Use JND models to control the watermarking strength at the pixel level.
- Propose dynamic watermarking strategies based on these metrics.
- Convert a character to a signature of 8 bits in {β1, +1}.
- Upsample the signature by a factor
cr. - Generate a pseudo-random Gaussian modulation sequence
pusing a private key. - Modulate the signature using
w[k] = Ξ± Β· b[k] Β· p[k]. - Embed the watermark in the signal:
s_m[n] = s[n] + w[n].
-
Demodulate the watermarked signal with
p[k]and reconstruct the signature using:sd[n] = (1/cr) β p[k] Β· sm[k] sign(sd[n]) β a[n]
- Analyze performance against:
- Low-pass filtering (e.g., fc = 0.3, 0.1)
- High-pass filtering (e.g., fc = 0.2, 0.4)
- Convert image to YCrCb space.
- Choose a component (Y, Cr, or Cb) to apply the watermark.
- Use a 4x4 signature matrix (from two characters).
- Apply 2D spread spectrum watermarking with upsampling and modulation.
- Python 3
- NumPy
- Matplotlib
- SciPy
- OpenCV (for image processing)
- FFT (for spectral analysis)
- WAV files for audio processing
skimage.metrics.structural_similarityfor SSIM- Custom JND map generator
Project realized as part of the Security M1 EUR program by Imane ELACERI.