Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

i need help with DWT watermarking

Status
Not open for further replies.

geogeneration

Newbie level 1
Newbie level 1
Joined
Mar 21, 2010
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Jordan,Amman
Activity points
1,318
Hello all,
I am a having a bit of difficulty in my final graduation project and i really hope that some of you here can help me out.
my project is: adding watermark using DWT into a medical image. (i have no knowledge in watermarking)
I have the following code


%----------------------------- Watermark embedding ----------------------

% set the gain factor for embeding and threshold for evaluation
thresh=.5;
k=2;

%--------------------------------------------------------------------------
% ------------- read in the original image or the cover object ------------
%--------------------------------------------------------------------------

% read and display original image
file_name='_lena_std_bw.bmp';
I=imread(file_name);
cover_object=double(I);

%imshow(I)
%figure(1)
%imshow(cover_object,[])
%title('Original Image')


% determine size of original image
Mc=size(cover_object,1); %Height
Nc=size(cover_object,2); %Width

%--------------------------------------------------------------------------
% ------------- read in the original watermark image ----------------------
%--------------------------------------------------------------------------

% read in the message image and reshape it into a vector
file_name='_copyright.bmp';
message=double(imread(file_name));

%size of the embedded watermark
Mo=size(message,1);
No=size(message,2);
N=No*Mo;

% reshape the message to a vector
message_vector=round(reshape(message,Mo*No,1)./256);
W=message_vector;

% display original watermark
%figure(2)
%imshow(message,[])
%title('Original Watermark')

%--------------------------------------------------------------------------
% -- Set Random Generator, DWT2 the original image and Embed watermark ----
%--------------------------------------------------------------------------

file_name='_key.bmp';
key=double(imread(file_name))./256;

% reset MATLAB's PN generator to state "key"
rand('state',key);

[cA1,cH1,cV1,cD1] = dwt2(cover_object,'haar');

% add pn sequences to H1 and V1 componants when message = 0
for (kk=1:length(message_vector))
pn_sequence_h=round(2*(rand(Mc/2,Nc/2)-0.5));
pn_sequence_v=round(2*(rand(Mc/2,Nc/2)-0.5));

if (message(kk) == 0)
cH1=cH1+k*pn_sequence_h;
cV1=cV1+k*pn_sequence_v;
end
end

% perform IDWT
watermarked_image = idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);

% convert back to uint8
watermarked_image_int=uint8(watermarked_image);

%--------------------------------------------------------------------------
%- write the watermarked image out to a file and display watermarked image
%--------------------------------------------------------------------------

imwrite(watermarked_image,'dwt_watermarked.bmp','bmp');

% display watermarked image
%figure(3)
%imshow(watermarked_image_int,[])
%title('Watermarked Image')
J=watermarked_image_int;


%--------------------------------------------------------------------------

My problem is in "% -- Set Random Generator, DWT2 the original image and Embed watermark ----"
how did we embed the watermark image??

I took the code from above that deals with setting random generator , DWT2 the origional image and embedding the watermark..

file_name='_key.bmp';
key=double(imread(file_name))./256;

% reset MATLAB's PN generator to state "key"
rand('state',key);

[cA1,cH1,cV1,cD1] = dwt2(cover_object,'haar');

% add pn sequences to H1 and V1 componants when message = 0
for (kk=1:length(message_vector))
pn_sequence_h=round(2*(rand(Mc/2,Nc/2)-0.5));
pn_sequence_v=round(2*(rand(Mc/2,Nc/2)-0.5));

if (message(kk) == 0)
cH1=cH1+k*pn_sequence_h;
cV1=cV1+k*pn_sequence_v;
end
end

my problem starts on line "Add pn sequence to H1 and V1 components..."
Here we are adding to each quadrant a sequence (from a Random generator) , how does that has got to do with embedding ?
please can anybody explain the code to me , i would really appreciate it
thanks in advanced
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top