Image processing water mark embedding and extraction

clc;
clear
close all;
a=imread('new 2.jpg');% Original image
ac=im2double(a);
red=ac(:,:,3);% blue component of the original image
w=imread('watermark.png'); % Watermark
wc=im2double(w);
% Level 1 Decomposition
[A1 H1 V1 D1]=dwt2(red,'haar');
sa1=wcodemat(A1);
sh1=wcodemat(H1);
sv1=wcodemat(V1);
sd1=wcodemat(D1);
% level 2 Decomposition
[A2 H2 V2 D2]=dwt2(A1,'haar');
sh2=wcodemat(H2);
sv2=wcodemat(V2);
sd2=wcodemat(D2);
% level 3 Decomposition
[A3 H3 V3 D3]=dwt2(A2,'haar');
sa3=wcodemat(A3);
sh3=wcodemat(H3);
sv3=wcodemat(V3);
sd3=wcodemat(D3);
s3=[sa3,sh3;sv3,sd3];
s2=[s3,sh2;sv2,sd2];
s1=[s2,sh1;sv1,sd1];
image(s1); % image showing the 3 level decomposition
frame=D3;
I =double(frame);
sigma=0.5; Thrshold=52000; r=6; disp=1;
dx=[-1 0 1;-1 0 1;-1 0 1];
dy=dx;
Ix = conv2(I, dx, 'same');
Iy = conv2(I, dy, 'same');
g = fspecial('gaussian',max(1,fix(6*sigma)), sigma); %%%%%% Gaussian Filter
%%%%%
Ix2 = conv2(Ix.^2, g, 'same');
Iy2 = conv2(Iy.^2, g, 'same');
Ixy = conv2(Ix.*Iy, g,'same');
k = 0.05;
R11 = (Ix2.*Iy2 - Ixy.^2) - k*(Ix2 + Iy2).^2;
R11=(1000/max(max(R11)))*R11;
R=R11;
ma=max(max(R));
MX = ordfilt2(R,900,ones(30,30));
R11 = (R==MX)&(R>Thrshold);
%count=sum(sum(R11(5:size(R11,1)-5,5:size(R11,2)-5)));
R=R*0;
R(5:size(R11,1)-5,5:size(R11,2)-5)=R11(5:size(R11,1)-5,5:size(R11,2)-5);
[r1,c1] = find(R);
PIP=[r1,c1]%% IP
Size_PI=size(PIP,1);
for r=1: Size_PI
I(PIP(r,1)-2:PIP(r,1)+2,PIP(r,2)-2)=255;
I(PIP(r,1)-2:PIP(r,1)+2,PIP(r,2)+2)=255;
I(PIP(r,1)-2,PIP(r,2)-2:PIP(r,2)+2)=255;
I(PIP(r,1)+2,PIP(r,2)-2:PIP(r,2)+2)=255;
end
j=uint8(I);
imshow(j);
minx=min(r1(:));
maxx=max(r1(:));
miny=min(c1(:));
maxy=max(c1(:));
display(maxx);
w=imread('watermark.png');
w1=im2double(rgb2gray(w));
r2=r1;
c2=c1;
for i=1:2498
k1=unidrnd(100,1,2);
h1=k1(1,1);
h2=k1(1,2);
x=floor(minx*(h1/200)+maxx*(1-(h1/200)));
y=floor(miny*(h2/200)+maxy*(1-(h2/200)));
r2(i+2)=x;
c2(i+2)=y;
end
T3=D3;
k=1;
for i=1:50
for j=1:50
D3(r2(k),c2(k))=T3(r2(k),c2(k))+0.15*w1(i,j);
a1(i,j)=D3(r2(k),c2(k));
k=k+1;
end
end
[l,m]=size(D3);
[l1,m1]=size(wc);
p=floor(l/l1);
q=floor(m/m1);
i=1:floor(l/l1)
j=1:floor(m/m1)
M = []
for i1=1:l1
for j1=1:m1
temp=(i1+(i-1)*l1) +2
temp1=(j1+(j-1)*m1) +2
if(i1<51&&j1<51)
M(i1,j1)=a1(i1,j1);
end
end
end
[l3 m3]=size(M);
for i2=1:l3
for j2=1:m3
temp=i2+(i-1)*l3;
temp1=j2+(j-1)*m3;
newmatrix(temp,temp1)=M(i2,j2);
end
end
[l4,m4]= size(newmatrix);
i=rem(l,l1);
j=rem(m,m1);
for i=1:l4
for j=1:m4
p1(i,j)=newmatrix(i,j);
end
end
for i=(l4+1):l
for j=1:m4
p1(i,j)=D3(i,j);
end
end
for j=(m4+1):m
for i=1:l
p1(i,j)=D3(i,j);
end
end
new9=p1;
awk1= idwt2(A3,H3,V3,new9,'haar');
awk2= idwt2(awk1,H2,V2,D2,'haar');
finalimage= idwt2(awk2,H1,V1,D1,'haar');
newimage12(:,:,3)=finalimage;
green=ac(:,:,2);
newimage12(:,:,2)=green;
red=ac(:,:,1);
newimage12(:,:,1)=red;
imshow(newimage12)
imwrite(newimage12 ,'newimage14.bmp');
imshow('newimage12.bmp');
a=imread('lena.bmp');% Original image
ac1=im2double(a);
redo=ac1(:,:,3);% blue component of the original image
newimage12=imscale(newimage12,1);
imshow(newimage12);
k=(newimage12+1)/100;
j1=(k*100)-1;
b=im2double(j1);
redw=b(:,:,3);
w=imread('D:\matlab7\watermark.png');% Watermark
wc=im2double(w);
[l1 m1]=size(wc);
display(size(wc));
original=redo;
watermarked=redw;
% DWT2 on original image
[A1 H1 V1 D1]=dwt2(original,'haar');
[A2 H2 V2 D2]=dwt2(A1,'haar');
[A3 H3 V3 D3]=dwt2(A2,'haar');
%display(H3);
display(size(D3));
% DWT2 on watermarked image
[aw1 hw1 vw1 dw1]=dwt2(watermarked,'haar');
[aw2 hw2 vw2 dw2]=dwt2(aw1,'haar');
[aw3 hw3 vw3 dw3]=dwt2(aw2,'haar');
k=1;
for i=1:50
for j=1:50
w2(i,j)=(dw3(r2(k),c2(k))-D3(r2(k),c2(k)))/0.15;
k=k+1;
end
end
imager=w2;
imwrite(imager,'water4.png');
imshow('water4.png');
I used this code for embedding a watermark and extracting the watermark,but I couldn't get the right extracted water mark,please help me

Answers (0)

Products

Asked:

on 12 Jun 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!