% Name:ChrisShoemaker % Course:EER - 280 - DigitalWatermarking % Project:LeastSignificantBitSubstitution % WatermarkEmbedingclearall; % savestarttimestart_time = cputime; % read in thecover object file_name = ' _lena_std_bw.bmp ' ;[cover_object,map] = imread(file_name); % read in themessageimagefile_name = ' key.bmp ' ;[message,map1] = imread(file_name);message1 = message; % convertto double for normalization,thenbackagainmessage = double (message);message = fix(message. / 2 );message = uint8(message); % determinesizeofcover object Mc = size(cover_object, 1 ); % HeightNc = size(cover_object, 2 ); % Width % determinesizeofmessage object Mm = size(message, 1 ); % HeightNm = size(message, 2 ); % Width % titlethemessage object out tocover object sizetogeneratewatermark for ii = 1 :Mc for jj = 1 :Ncwatermark(ii,jj) = message(mod(ii,Mm) + 1 ,mod(jj,Nm) + 1 );endend % nowwe set thelsbofcover_object(ii,jj)tothevalueofwatermark(ii,jj)watermarked_image = cover_object; for ii = 1 :Mc for jj = 1 :Ncwatermarked_image(ii,jj) = bitset(watermarked_image(ii,jj), 1 ,watermark(ii,jj));endend % writethewatermarkedimage out toafileimwrite(watermarked_image, ' lsb_watermarked.bmp ' , ' bmp ' ); % displayprocessingtimeelapsed_time = cputime - start_time, % calculatethePSNRpsnr = psnr(cover_object,watermarked_image,Mc,Nc), % displaywatermarkedimagefigure( 1 )imshow(watermarked_image,[])title( ' WatermarkedImage ' )figure( 2 )imshow(cover_object,[])title( ' originalimage ' ) for ii = 1 :Mc for jj = 1 :Ncwatermark1(ii,jj) = message1(mod(ii,Mm) + 1 ,mod(jj,Nm) + 1 );endend % watermark1 = watermark1 * 256 ; % message1 = message1 * 256 ;figure( 3 )imshow(watermark1,[])title( ' thewatermark ' )figure( 4 )imshow(message1,[])title( ' thewatermark ' )