嵌入算法:
Picture=imread('C:\Users\zdh-001\Desktop\6.jpeg'); %读入载体图像
Double_Picture=Picture;
Double_Picture=double(Double_Picture);%将图像转换为二进制
fileID=fopen('C:\Users\zdh-001\Desktop\test.txt','r');%r表示读入
[msg,msg_len]=fread(fileID,'ubit1');
[m,n]=size(Double_Picture);
p=1;%p为秘密信息的位计数器
[row,col]=randinterval(Double_Picture,msg_len,2010);%其中2010为随机种子,可以自己选取
for i=1:msg_len
Double_Picture(row(i),col(i))= Double_Picture(row(i),col(i))-mod( Double_Picture(row(i),col(i)),2)+msg(p,1);
%将秘密信息嵌入图像随机的LSB中
if p==msg_len
break;
end
p=p+1;
end
Double_Picture=uint8(Double_Picture);
imwrite(Double_Picture,'C:\Users\zdh-001\Desktop\result.tif');
subplot(121);imshow(Picture);title('未嵌入信息的图片');
subplot(122);imshow(Double_Picture);title('嵌入信息的图片');
提取算法:
Picture=imread('C:\Users\zdh-001\Desktop\result.tif');
Picture=double(Picture);
[m,n]=size(Picture);
frr=fopen('C:\Users\zdh-001\Desktop\result.txt','a');
msg_len=8;
p=1;
[row,col]=randinterval(Picture,msg_len,2010);
for i=1:msg_len
if bitand(Picture(row(i),col(i)),1)==1;
fwrite(frr,1,'bit1');
result(p,1)=1;
else
fwrite(frr,0,'bit1');
result(p,1)=0;
end
if p==msg_len
break;
end
p=p+1;
end
fclose(frr);