This document describes a watermarking algorithm that embeds a watermark into an image using discrete wavelet transforms. It performs a 2-level discrete wavelet transform on the image and watermark. It then adds a scaled version of the watermark coefficients to the image coefficients if they exceed a threshold. The inverse discrete wavelet transform is applied to get the watermarked image. It also describes how to detect the watermark by filtering the watermarked image and subtracting the original, then applying wavelet transforms to the difference.