%lsbmain.m LSB 算法主程序
clear all
close all
c=imread('e.tif');%载体图像
m=imread('v.bmp');%秘密信息
ms=size(m);
s=LSB(c,m,1); %利用 LSB 算法隐藏信息
imwrite(s,'inwatermarking.tif','Compression','none');
watermarkingnew=reLSB(s,ms(1),ms(2)); %提取秘密信息
imshow(watermarkingnew)
imwrite(watermarkingnew,'watermarkingnew.tif','Compression','none');
subplot(2,2,1)
imshow(c)
title('载体图像')
subplot(2,2,2)
imshow(s)
title('伪装图像')
subplot(2,2,3)
imshow(watermarkingnew)
title('秘密信息')
subplot(2,2,4)
imshow(m)
title('原图')
% LSB.m LSB 算法嵌入函数
function y=LSB(c,m,n)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%此函数实现 LSB 算法的隐藏过程,参数 c 表示载体图像
%参数 m 表示秘密信息,n 表示在 8 层结构中最低的 n 层进行隐藏
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cd=double(c);
cs=size(c);
hangc=cs(1);
liec=cs(2);
mbin=im2bin(m);
lm=length(mbin);
for i=1:n:lm-n+1
t=numdec2bin(cd(ceil(i/liec/n),ceil(i/n)-(ceil(i/liec/n)-1)*liec),8);
t(9-n:8)=mbin(i:i+n-1);
cd(ceil(i/liec/n),ceil(i/n)-(ceil(i/liec/n)-1)*liec)=numbin2dec(t);
end
y=uint8(cd);