lsb嵌入水印代码




% Name:ChrisShoemaker
% Course:EER - 280 - DigitalWatermarking
% Project:LeastSignificantBitSubstitution
% WatermarkEmbeding

clearall;

% savestarttime
start_time
= cputime;

% read in thecover object
file_name
= ' _lena_std_bw.bmp ' ;
[cover_object,map]
= imread(file_name);

% read in themessageimage
file_name
= ' key.bmp ' ;
[message,map1]
= imread(file_name);
message1
= message;

% convertto double for normalization,thenbackagain
message
= double (message);
message
= fix(message. / 2 );
message
= uint8(message);

% determinesizeofcover object
Mc
= size(cover_object, 1 ); % Height
Nc
= size(cover_object, 2 ); % Width

% determinesizeofmessage object
Mm
= size(message, 1 ); % Height
Nm
= size(message, 2 ); % Width

% titlethemessage object out tocover object sizetogeneratewatermark
for ii = 1 :Mc
for jj = 1 :Nc
watermark(ii,jj)
= message(mod(ii,Mm) + 1 ,mod(jj,Nm) + 1 );
end
end

% nowwe set thelsbofcover_object(ii,jj)tothevalueofwatermark(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

% writethewatermarkedimage out toafile
imwrite(watermarked_image,
' lsb_watermarked.bmp ' , ' bmp ' );

% displayprocessingtime
elapsed_time
= cputime - start_time,

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

% displaywatermarkedimage
figure(
1 )
imshow(watermarked_image,[])
title(
' WatermarkedImage ' )
figure(
2 )
imshow(cover_object,[])
title(
' originalimage ' )
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(
' thewatermark ' )
figure(
4 )
imshow(message1,[])
title(
' thewatermark ' )

你可能感兴趣的:(代码)