LSB文本水印的嵌入与提取

自己在学习的过程中,找到的资料。
为了方便大家整理。

原创:https://blog.csdn.net/qq_22717679/article/details/46982303
(1)嵌入文本


tpath='D:ffinal\origin1.txt';
name='D:\ffinal\2.bmp';
key=3;imgfile=imread(name);
img=imgfile;
fi=fopen(tpath,'r');
[msg,len]=fread(fi,'ubit1');
[m,n]=size(img);
if len>m*n
  error('wrong!');
end
[x,y]=txtrandxy(img,len,key);
hideimg=img;
for i=1:len
  if bitand(hideimg(x(i),y(1,i)),1)==msg(i)
 continue
 else if msg(i)==1
 hideimg(x(i),y(i))=hideimg(x(i),y(i))+1;
     else hideimg(x(i),y(i))=hideimg(x(i),y(i))-1;
end
  end
end
imwrite(hideimg,'D:\ffinal\resulttxt.bmp');
 
 function [x,y]=txtrandxy(matrix,len,key)
[m,n]=size(matrix);
step1=floor(m*n/len)+1;
step2=step1-3;
if step2<=0
 error('wrong!');
end
rand('seed',key);
temp=rand(1,len);
locate=1;
x=zeros(1,len);
y=zeros(1,len);
x(1,1)=locate;
y(1,1)=locate;
for i=2:len
  if temp(i)>0.5
 locate=locate+step1;
  else
 locate=locate+step2;
 end
 x(1,i)=floor(locate/n)+1;
 if mod(locate,n)==0
 y(1,i)=n;
 else
 y(1,i)=mod(locate,n);
 end
end
 end


(2)提取文本


name='D:\ffinal\resulttxt.bmp';
key=3;
img=imread(name);
[m,n]=size(img);
if len>m*n
  error('wrong!');
end
[x,y]=txtrandxy(img,len,key);
msg=zeros(1,len);
for i=1:len
 msg(i)=bitand(img(x(i),y(i)),1);
fi=fopen('D:\ffinal\result.txt','w');
fwrite(fi,msg,'ubit1');
fclose(fi);
end
function [x,y]=txtrandxy(matrix,len,key)
[m,n]=size(matrix);
step1=floor(m*n/len)+1;
step2=step1-3;
if step2<=0
 error('wrong!');
end
rand('seed',key);
temp=rand(1,len);
locate=1;
x=zeros(1,len);
y=zeros(1,len);
x(1,1)=locate;
y(1,1)=locate;
for i=2:len
  if temp(i)>0.5
 locate=locate+step1;
  else
 locate=locate+step2;
 end
 x(1,i)=floor(locate/n)+1;
 if mod(locate,n)==0
 y(1,i)=n;
 else
 y(1,i)=mod(locate,n);
 end
end
 end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值