0% found this document useful (0 votes)
75 views15 pages

All All: Watermarking Using LSB Technique

This document describes two techniques for watermarking EEG signal data: 1) a least significant bit (LSB) technique that embeds a watermark by modifying the LSB of signal samples, and 2) a reversible technique that embeds watermark bits in the wavelet domain by modifying wavelet coefficients in a reversible manner. Both techniques are demonstrated on sample EEG signal data, embedding an image as the watermark. Performance is evaluated based on peak signal-to-noise ratio and mean error between the original and watermarked signals.

Uploaded by

Mohammad Shoeb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views15 pages

All All: Watermarking Using LSB Technique

This document describes two techniques for watermarking EEG signal data: 1) a least significant bit (LSB) technique that embeds a watermark by modifying the LSB of signal samples, and 2) a reversible technique that embeds watermark bits in the wavelet domain by modifying wavelet coefficients in a reversible manner. Both techniques are demonstrated on sample EEG signal data, embedding an image as the watermark. Performance is evaluated based on peak signal-to-noise ratio and mean error between the original and watermarked signals.

Uploaded by

Mohammad Shoeb
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

Watermarking using LSB technique

close all;
clear all;
tic
sig = xlsread('eeg data.xls', 1,'B:B');
for i=2:6
sig2 = xlsread('eeg data.xls', i,'B:B');
sig = cat(1,sig,sig2);
end
sig3=sig;
t0=toc;
% msg=input('Enter Message :: ','s');
% s=msg;
msg2 = imread('logo02.bmp');
% msg2=double(msg2);
%% watermark embadding
tic
msg = cast(msg2,'uint8');
figure
imshow(double(msg));
[n1 n2]=size(msg2);
msg = reshape(msg,1,n1*n2);
sig_mark = sig;
len = length(msg);
n=len*8;
1

msg = DataProcess(msg);
% disp('Encrypted Message');
% disp(msg);
key = [0 0 1 0 1 1 1 0 1 0 1 0];
[rand_key rand] = pn_seq(key,n);
j=1;
for i = 1:len
p = double(msg(i));
for k = 1:8
x = bitget(p,k);
s = mod(sig(rand(j),1),2);
if (x~=s && x==0)
sig_mark(rand(j),1) = sig(rand(j),1)-1;
elseif (x~=s && x==1)
sig_mark(rand(j),1) = sig(rand(j),1)+1;
end
j=j+1;
end
end
% A1=double(sig_mark);
t1=toc;
figure
plot(sig3);
title('Original Signal');
figure
plot(sig_mark);
title('Watermark Signal');
2

%% watermark extraction
tic
key = [0 0 1 0 1 1 1 0 1 0 1 0];
[rand_key rand] = pn_seq(key,n);
% sig_mark2 = imnoise(sig_mark,'salt & pepper',0.01);
j=n;
for i = 1:n
new = sig_mark(rand(j),1);
new = abs(new)+128;
a2(j) = bitget(new,1);
j=j-1;
end
c=1;
for i=1:8:n
a(1:8)=a2(i:i+7);
sum = 0;
for j=1:8
if (a(j)== 1)
sum = sum + 2^(j-1);
end
end
q = char(sum);
arr_msg(c)= q;
c=c+1;
end
msg_ext = DataProcess(arr_msg);
msg_ext = reshape(msg_ext,n1,n2);
3

msg_ext=cast(msg_ext,'char');
figure
imshow(double(msg_ext));
t2=toc;
[PeakSNR, Mean2err]=psnr(sig, sig_mark);
disp('Signal Load Time ');
disp(t0);
disp('Time Required for Watermarking ');
disp(t1);
disp('Time Required for Extracting Watermark ');
disp(t2);
disp('PSNR');
disp(PeakSNR);
disp('Mean Error');
disp(Mean2err);

Watermarking using reversible technique


close all;
clear all;
tic
sig = xlsread('eeg data.xls', 1,'B:B');
for i=2:6
sig2 = xlsread('eeg data.xls', i,'B:B');
sig = cat(1,sig,sig2);
end
sig3=sig;
t0=toc;
% msg=input('Enter Message :: ','s');
% s=msg;
msg2 = imread('logo03.bmp');
% msg2=double(msg2);
%% watermark embadding
tic
msg = cast(msg2,'uint8');
figure
imshow(double(msg));
[n1 n2]=size(msg2);
msg = reshape(msg,1,n1*n2);
A=double(sig);
lshaar = liftwave('haar');
els = {'p',[-0.125 0.125],0};
5

lsnew = addlift(lshaar,els);
lshaarInt = liftwave('haar','int2int');
lsnewInt = addlift(lshaarInt,els);
[L H] = lwt(A,lsnewInt);
sig = L;
sig_mark = sig;
len = length(msg);
n=len*8;
msg = DataProcess(msg);
% disp('Encrypted Message');
% disp(msg);
key = [0 0 1 0 1 1 1 0 1 0 1 0];
[rand_key rand] = pn_seq(key,n);
j=1;
for i = 1:len
p = double(msg(i));
for k = 1:8
b = bitget(p,k);
x = sig(rand(j),1);
y = sig((rand(j)+1),1);
l = ceil((x+y)/2);
h = x-y;
h1 = dec2bin(h,3);
h2(1) = h1(1);
h2(2) = b;
h2(3) = h1(2);
h2(4) = h1(3);
6

h3 = bin2dec(h2);
sum = 0;
for k=1:4
if (h2(k)== 1)
sum = sum + 2^(k-1);
end
end
h3 = sum;
x1 = l + ceil((h3+1)/2);
y1 = x'-h3;
sig_mark(rand(j),1) = x1;
sig_mark((rand(j)+1),1) = y1;
j=j+1;
end
end

% A1=double(sig_mark);
sig_mark3 = ilwt(sig_mark,H,lsnewInt);
t1=toc;
figure
plot(sig3);
title('Original Signal');
figure
plot(sig_mark);
title('Watermark Signal');

%% watermark extraction
tic
A=double(sig_mark3);
lshaar = liftwave('haar');
els = {'p',[-0.125 0.125],0};
lsnew = addlift(lshaar,els);
lshaarInt = liftwave('haar','int2int');
lsnewInt = addlift(lshaarInt,els);
[L H] = lwt(A,lsnewInt);
sig_mark = L;
key = [0 0 1 0 1 1 1 0 1 0 1 0];
[rand_key rand] = pn_seq(key,n);
% sig_mark2 = imnoise(sig_mark,'salt & pepper',0.01);
sig_rec = sig_mark;
k=n;
j=1;
for i = 1:n
x1 = sig_mark(rand(j),1);
y1 = sig_mark(rand(j)+1,1);
h1 = x1-y1;
h2 = dec2bin(h1,4);
b = h2(2);
a2(k) = b;
k=k-1;
8

l = x1 - ceil((h1+1)/2);
x = l + ceil(h1/2);
y = x - h1;
sig_rec(rand(j),1) = x;
sig_rec(rand(j)+1,1) = y;
end
sig_rec2 = ilwt(sig,H,lsnewInt);
c=1;
for i=1:8:n
a(1:8)=a2(i:i+7);
sum = 0;
for j=1:8
if (a(j)== 1)
sum = sum + 2^(j-1);
end
end
q = char(sum);
arr_msg(c)= q;
c=c+1;
end
msg_ext = DataProcess(arr_msg);
msg_ext = reshape(msg_ext,n1,n2);
msg_ext=cast(msg_ext,'char');
9

figure
imshow(double(msg2));
figure
plot(sig_rec2);
title('Recontructed Signal');
t2=toc;
[PeakSNR, Mean2err]=psnr(sig3, sig_mark3);
disp('Signal Load Time ');
disp(t0);
disp('Time Required for Watermarking ');
disp(t1);
disp('Time Required for Extracting Watermark ');
disp(t2);
disp('PSNR');
disp(PeakSNR);
disp('Mean Error');
disp(Mean2err);

10

PN sequence Generation
function [rand_key rand_int] = pn_seq(Inp,n)
m=length(Inp);
a = Inp;
s_mux = [1 0 1];
for x=1:n
v3=xor(s_mux(2),s_mux(3));
s_new(1)=v3;
for i= 2:3

%% shifting of bits

s_new(i)=s_mux(i-1);
end
r3=0;
for i=1:3
if (s_new(4-i)== 1)
r3 = r3 + 2^(i-1);
end
end
s_mux=s_new;
if (r3 == 1)
tap(1:4)=[12 11 10 4];
elseif (r3 == 2)
tap(1:4)=[12 11 8 2];
elseif (r3 == 3)
tap(1:4)=[12 11 8 6];
elseif (r3 == 4)
tap(1:4)=[12 11 7 4];
11

elseif (r3 == 5)
tap(1:4)=[12 10 9 3];
elseif (r3 == 6)
tap(1:4)=[12 10 5 4];
elseif (r3 == 7)
tap(1:4)=[12 9 8 5];
else
tap(1:4)=[12 9 7 6];
end;
v1=xor(a(tap(1)),a(tap(2)));
v2=xor(a(tap(3)),a(tap(4)));
v=xor(v1,v2);
b(1)=v;
for i= 2:m

%% shifting of bits

b(i)=a(i-1);
end;
r1=0;
for i=1:m
if (b(m+1-i)== 1)
r1 = r1 + 2^(i-1);
end;
end;
rand_int(x) = r1;
rand_key = b;
a=b;
end;
return;
12

Encryption/Decryption Process
function [Out] = DataProcess(Inp)
m=length(Inp);
a = [0 1 1 0 0 1 0 0];
s_mux = [1 0 1];
for x=1:m
v3=xor(s_mux(2),s_mux(3));
s_new(1)=v3;
for i= 2:3

%% shifting of bits

s_new(i)=s_mux(i-1);
end;
r3=0;
for i=1:3
if (s_new(4-i)== 1)
r3 = r3 + 2^(i-1);
end;
end;
s_mux=s_new;
if (r3 == 1)
tap(1:4)=[8 6 3 1];
elseif (r3 == 2)
tap(1:4)=[8 6 3 2];
elseif (r3 == 3)
tap(1:4)=[8 4 3 1];
elseif (r3 == 4)
13

tap(1:4)=[8 6 5 4];
elseif (r3 == 5)
tap(1:4)=[8 6 5 3];
elseif (r3 == 6)
tap(1:4)=[8 6 5 2];
elseif (r3 == 7)
tap(1:4)=[8 6 5 1];
else
tap(1:4)=[8 4 3 2];
end;
v1=xor(a(tap(1)),a(tap(2)));
v2=xor(a(tap(3)),a(tap(4)));
v=xor(v1,v2);
b(1)=v;
% b = cat(2,v,a);
for i= 2:8

%% shifting of bits

b(i)=a(i-1);
end;
% b=uint8(b);
% disp(b);
r1=0;
for i=1:8
if (b(9-i)== 1)
r1 = r1 + 2^(i-1);
end;
end;
rand(x)=r1;
14

a=b;
end;
% disp(rand);
i=1;
[u1]=length(Inp);
for x=1:u1
val1=double(Inp(x));
E = bitxor(uint8(val1), uint8(rand(i)));
E=char(E);
Out(x)=E;
i=i+1;
end;
% Out=uint8(out2);
return;

15

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy