• 大小: 2KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: LSB算法  水印  

资源简介

lsb算法实现简单水印的嵌入与提取,lsb是嵌入,lsb2是提取。

资源截图

代码片段和文件信息

clear all;
% 保存开始时间
start_time=cputime;
% 读入原图像
file_name=‘lena.bmp‘;
[cover_objectmap]=imread(file_name);
% 读入水印图像
file_name=‘logo.bmp‘;
[messagemap1]=imread(file_name);
message1=message;
message=double(message);   %%转换为double数
message=fix(message./2);   %%转换为0,1组成的矩阵
message=uint8(message);   %%转换为uint8数
% 原图的行数与列数
Mc=size(cover_object1);    %原图的行数
Nc=size(cover_object2);    %原图的列数
% 水印的行数与列数
Mm=size(message1);         %水印的行数
Nm=size(message2);         %水印的列数
% 将水印扩展为原图像大小,并写入watermark
for ii = 1:Mc
  for jj = 1:Nc
    watermark(iijj)=message(mod(iiMm)+1mod(jjNm)+1);
  end
end
% 将原图的最低有效位值换为水印的值
watermarked_image=cover_object;
for ii = 1:Mc
  for jj = 1:Nc
    watermarked_image(iijj)=bitset(watermarked_image(iijj)1watermark(iijj));
  end
end
% 将嵌入水印图像写入lsb_watermarked.jpeg
imwrite(watermarked_image‘lsb_watermarked.bmp‘‘bmp‘);
imwrite(watermark‘kuozhan.bmp‘‘bmp‘);
% 显示运行时间
elapsed_time=cputime-start_time
% 显示嵌入水印图像
figure(1)
subplot(121)
imshow(watermarked_image[])
title(‘嵌入水印信息量100%图像‘)
subplot(122)
imshow(cover_object[])
title(‘原图像‘)
%%扩展后水印
for ii = 1:Mc
  for jj = 1:Nc
    watermark1(iijj)=message1(mod(iiMm)+1mod(jjNm)+1);
  end
end
figure(2);subplot(121);
imshow(watermark1[]);
title(‘扩展后的水印‘);
figure(2);subplot(122);
imshow(message1[]);
title(‘原水印‘);
imshow(message1[]);
title(‘原水印‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1560  2017-12-08 14:21  lsb算法实现水印嵌入提取\LSB.m
     文件         725  2017-12-01 14:44  lsb算法实现水印嵌入提取\LSB2.m
     文件         400  2017-12-08 13:32  lsb算法实现水印嵌入提取\psnr.m
     目录           0  2017-12-15 10:42  lsb算法实现水印嵌入提取\

评论

共有 条评论