1.29.2015

Multiresolution Watermark Based on Wavelet Transform for Digital images


The basic concept of this research paper is to perform watermarking using wavelet domain. Since it consists of adding weight to the large coefficients at the high and medium frequency bands of the discrete wavelet transform of an image. But first, let us know why wavelets approach is used here. Considering that this process involves masking, transform domain is well suited to it since it is well localized both in time and frequency. Also, wavelet transform would allow much easier and optimized way in information protection. Another aspect of wavelet transform is to watermark an image in significant regions of the data in order to remain robust and risking image alteration. As we all know, image watermarking introduces the invincibility of the hidden image/text as “secret message” within another image but keeping the watermark robust too. The paper‘s methodology includes operating the frequency domain with Mean = 0 and Variance = 1 and following instructions with code snippets.


Code for getting the image and transforming it into gray scale image: (Figure 1)

img  = imread('home.jpg'); 
img  = rgb2gray(img);      

img  = double(img);
c = 0.01; 

figure,imshow(uint8(img)),title('Original Image');
[p q] = size(img)

Key Generation: (Figure 2)

n = awgn(img,4,3,'linear');
N = imabsdiff(n,img);
figure,imshow(double(N)),title('Key');

Image Decomposition:

[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('haar');
[ca,ch,cv,cd] = dwt2(img,Lo_D,Hi_D); 

**






Watermarking:

y = [ca ch;cv cd];
Y = y + c*abs(y).* N; 
p=p/2;q=q/2;
for i=1:p
    for j=1:q
        nca(i,j) = Y(i,j);
        ncv(i,j) = Y(i+p,j);
        nch(i,j) = Y(i,j+q);
        ncd(i,j) =  Y (i+p,j+q);
    end
end

** In order to weight the watermark according to the magnitude of the wavelet coefficients, we used one of the two following relations between the original coefficients y and ÿ, the ones containing the watermark:





  



It must be pointed out that the relations (1) and (2), even though they are mathematically different, but have the exact same goal which is to put more weight to the watermark added to high value wavelet coefficients. The parameter alpha is to control the level of the watermark; it is in fact a good way to choose between good transparency or good robustness or a tradeoff between the two. Finally, the two dimension inverse wavelet transform of is computed to form ÿ the watermarked image.



Display Watermarked Image: (Figure 3)

wimg = idwt2(nca,nch,ncv,ncd,Lo_R,Hi_R);
figure,imshow(uint8(wimg)),title('Watermarked Image');



Screenshots

Output of the program after execution.