将二值图嵌入两张图片并反解
[hpiccover1,hpiccover2] = LSB(piccover1,piccover2,pic2ray);
subplot(2,2,1),imshow(piccover1),title('第一张封面原图')
subplot(2,2,2),imshow(hpiccover1),title('第一张封面嵌入')
subplot(2,2,3),imshow(piccover2),title('第二张封面原图')
subplot(2,2,4),imshow(hpiccover2),title('第二张封面嵌入')
picjie = inLSB(hpiccover1,hpiccover2);
imshow(picjie)
LSB
function [piccover1,piccover2] = LSB( piccover1,piccover2,pic2ray ) %piccover第一封面,piccover2为第二封面,pic2ray二值图
[M,N]=size(piccover1);
[m,n]=size(pic2ray);
[r,c]=size(piccover2);
X=min(M,r);
Y=min(N,c);
if(m<=X&&n<=Y)
for i=1:m
for j=1:n
if pic2ray(i,j)==1&&mod(mod(piccover1(i,j),2)+mod(piccover2(i,j),2),2)==1 %若封面一二灰度值相加余数等于隐藏信息值,则不动,因为灰度值有上限,所以不能两个灰度值直接相加
continue;
elseif pic2ray(i,j)==0&&mod(mod(piccover1(i,j),2)+mod(piccover2(i,j),2),2)==0
continue;
else %若封面一二灰度值相加余数不等于,则进行双重随机增加保密性
a=randsrc; %随机数a=1或者-1
if a==1
if piccover1(i,j)==0
piccover1(i,j)=piccover1(i,j)+1;
elseif piccover1(i,j)==255
piccover1(i,j)=piccover1(i,j)-1;
else
piccover1(i,j)=piccover1(i,j)+randsrc;
end
else
if piccover2(i,j)==0
piccover2(i,j)=piccover2(i,j)+1;
elseif piccover2(i,j)==255
piccover2(i,j)=piccover2(i,j)-1;
else
piccover2(i,j)=piccover2(i,j)+randsrc;
end
end
end
end
end
else
fprintf('朋友,封面大小不够唉!')
end
end
inLSB
function picjie = inLSB(hpiccover1,hpiccover2)
[M,N]=size(hpiccover1);
[r,c]=size(hpiccover2);
X=min(M,r);
Y=min(N,c);
picjie=zeros(X,Y);
for i=1:X
for j=1:Y
if mod(mod(hpiccover1(i,j),2)+mod(hpiccover2(i,j),2),2)==1
picjie(i,j)=255;
else
picjie(i,j)=0;
end
end
end
end