This document describes a method for embedding a secret watermark image into a QR code image using discrete wavelet transform. The watermark embedding process involves:
1) Performing a two-level discrete wavelet transform on the QR code image to create sub-bands
2) Converting the watermark image (e.g. a logo) to a binary sequence and generating a pseudo-random sequence with a secret key
3) Embedding the watermark bits into one of the high frequency sub-bands by modifying pixel values
4) Performing inverse discrete wavelet transform to get the watermarked QR code image
The watermark can then be extracted without the original QR code by estimating the original pixel values and