www.gusucode.com > 数字水印算法实现(matlab程序包),包含有DCT水印嵌入算法源码程序 > watermark综述+代码/lsb_embed.m
%Name: Chris Shoemaker %Course: EER-280 - Digital Watermarking %Project: Least Significant Bit Substitution % Watermark Embeding clear all; % save start time start_time=cputime; % read in the cover object file_name='_lena_std_bw.bmp'; [cover_object,map]=imread(file_name); % read in the message image file_name='key.bmp'; [message,map1]=imread(file_name); message1=message; % convert to double for normalization, then back again message=double(message); message=fix(message./2); message=uint8(message); % determine size of cover object Mc=size(cover_object,1); %Height Nc=size(cover_object,2); %Width % determine size of message object Mm=size(message,1); %Height Nm=size(message,2); %Width % title the message object out to cover object size to generate watermark for ii = 1:Mc for jj = 1:Nc watermark(ii,jj)=message(mod(ii,Mm)+1,mod(jj,Nm)+1); end end % now we set the lsb of cover_object(ii,jj) to the value of watermark(ii,jj) watermarked_image=cover_object; for ii = 1:Mc for jj = 1:Nc watermarked_image(ii,jj)=bitset(watermarked_image(ii,jj),1,watermark(ii,jj)); end end % write the watermarked image out to a file imwrite(watermarked_image,'lsb_watermarked.bmp','bmp'); % display processing time elapsed_time=cputime-start_time, % calculate the PSNR psnr=psnr(cover_object,watermarked_image,Mc,Nc), % display watermarked image figure(1) imshow(watermarked_image,[]) title('Watermarked Image') figure(2) imshow(cover_object,[]) title('original image') for ii = 1:Mc for jj = 1:Nc watermark1(ii,jj)=message1(mod(ii,Mm)+1,mod(jj,Nm)+1); end end %watermark1=watermark1*256; %message1=message1*256; figure(3) imshow(watermark1,[]) title('the watermark') figure(4) imshow(message1,[]) title('the watermark')