Watermark Crypt

download Watermark Crypt

of 3

Transcript of Watermark Crypt

  • 8/12/2019 Watermark Crypt

    1/3

    %Name: Chris Shoemaker%Course: EER-280 - Digital Watermarking%Project: Threshold-Based Correlation in DCT mid-band% Uses two PN sequences; one for a "0" and another for a "1"% Watermark Embeding

    clear all;

    % save start timestart_time=cputime;

    k=20; % set gain factor for embedingblocksize=8; % set the dct blocksize

    midband=[ 0,0,0,1,1,1,1,0; % defines the mid-band frequencies of an 8x8dct

    0,0,1,1,1,1,0,0;0,1,1,1,1,0,0,0;1,1,1,1,0,0,0,0;

    1,1,1,0,0,0,0,0;1,1,0,0,0,0,0,0;1,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0 ];

    % read in the cover objectfile_name='cameraman.tif';cover_object=double(imread(file_name));

    % determine size of cover imageMc=size(cover_object,1); %HeightNc=size(cover_object,2); %Width

    % determine maximum message size based on cover object, and blocksizemax_message=Mc*Nc/(blocksize^2);

    % read in the message imagefile_name='rice.png';message=double(imread(file_name));Mm=size(message,1); %HeightNm=size(message,2); %Width

    % reshape the message to a vectormessage=round(reshape(message,Mm*Nm,1)./256);

    % check that the message isn't too large for cover

    if(length(message) > max_message)error('Message too large to fit in Cover Object')

    end

    % pad the message out to the maximum message size with ones'smessage_vector=ones(1,max_message);message_vector(1:length(message))=message;

    % generate shell of watermarked image

  • 8/12/2019 Watermark Crypt

    2/3

    watermarked_image=cover_object;

    % read in key for PN generatorfile_name='_key.bmp';key=double(imread(file_name))./256;

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

    % generate PN sequencepn_sequence_zero=round(2*(rand(1,sum(sum(midband)))-0.5));

    % process the image in blocksx=1;y=1;for(kk = 1:length(message_vector))

    % transform block using DCTdct_block=dct2(cover_object(y:y+blocksize-1,x:x+blocksize-1));

    % if message bit contains zero then embed pn_sequence_zero into the mid-band

    % componants of the dct_blockll=1;if(message_vector(kk)==0)

    forii=1:blocksizeforjj=1:blocksize

    if(midband(jj,ii)==1)dct_block(jj,ii)=dct_block(jj,ii)+k*pn_sequence_zero(ll);ll=ll+1;

    endend

    endend

    % transform block back into spatial domainwatermarked_image(y:y+blocksize-1,x:x+blocksize-1)=idct2(dct_block);

    % move on to next block. At and of row move to next rowif(x+blocksize) >= Nc

    x=1;y=y+blocksize;

    elsex=x+blocksize;

    endend

    % convert to uint8 and write the watermarked image out to a filewatermarked_image_int=uint8(watermarked_image);imwrite(watermarked_image_int,'dct2_watermarked.bmp','bmp');

    % display processing timeelapsed_time=cputime-start_time,

    % display psnr of watermarked image

  • 8/12/2019 Watermark Crypt

    3/3

    psnr=psnr(cover_object,watermarked_image,Nc,Mc),

    % display watermarked imagefigure(1)imshow(watermarked_image,[])title('Watermarked Image')