LSB水印嵌入算法Matlab

1、加载原始图像和需要嵌入的信息

 

%读取载体图像

file_name= 'sherlock.jpg';

orig_image=imread(file_name);

%读取秘密信息

file_name='text.png';

message=imread(file_name);

% message=double(message);

% message=fix(message./2);

% message=uint8(message);

figure('Position',[0,0,700,300])

subplot(1,2,1);

imshow(orig_image);

title('原始信息');

subplot(1,2,2);

imshow(message);

title('需要嵌入的消息');

2、水印嵌入算法

%确定载体图像大小

Hc=size(orig_image,1);

Nc=size(orig_image,2);

%确定秘密信息大小

Hm=size(message,1);

Wm=size(message,2);

%确定秘密信息生成载体图像大小的水印信息

watermark=zeros(Hc,Nc);

for i=1:Hc

for j=1:Nc

watermark(i,j)=message(mod(i,Hm)+1,mod(j,Wm)+1);

end

end

%将水印信息嵌入载体图像

watermarked_image=orig_image;

for i=1:Hc

for j=1:Nc

watermarked_image(i,j,1)=bitset(watermarked_image(i,j,1),1,watermark(i,j));

end

end

figure();

imshow(watermarked_image);

title('带有数字水印的图片');

3、提取水印算法

% 水印图像的大小

[Hw,Ww,~]=size(watermarked_image);

% 水印信息提取过程

watermark2=zeros(Hw,Ww);

for i=1:Hw

for j=1:Ww

watermark2(i,j)=bitget(watermarked_image(i,j,1),1);

end

end

watermark2=2*double(watermark2);

%显示水印

figure();

imshow(watermark2);

title('恢复出来的水印');

注:

  1. MATLAB 自带图片一般位于路径/Applications/MATLAB_R2021a.app/toolbox/images/imdata/

 

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值