您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > LSB以及RS隐写分析
一、LSB隐写及其提取、峰值信噪比计算信息隐藏代码:%-----------------------将文本信息隐藏到图片中-------------------------------PICTURE=imread('g:\elena.bmp');DOUBLE_PICTURE=PICTURE;DOUBLE_PICTURE=double(DOUBLE_PICTURE);%将图像转换成双精度类型f_id=fopen('g:\secret2.txt','r');[msg,len]=fread(f_id,'ubit1');disp('需要隐藏信息的长度为:');disp(len);[m,n]=size(DOUBLE_PICTURE);%此处不分层测量彩色图像大小disp('图片长度:');disp(m);disp('图片宽度:');disp(n);p=1;%p为秘密信息的位计数器fori=1:nforj=1:mDOUBLE_PICTURE(i,j)=DOUBLE_PICTURE(i,j)-mod(DOUBLE_PICTURE(i,j),2)+msg(p,1);%将秘密信息用取余的方法按位放入连续的像素中ifp==len;break;endp=p+1;endifp==lenbreakendendDOUBLE_PICTURE=uint8(DOUBLE_PICTURE);imwrite(DOUBLE_PICTURE,'g:\elena_secret.bmp');new=DOUBLE_PICTURE-PICTURE;new=double(new);new_r=new(:,:,1);new_g=new(:,:,2);new_b=new(:,:,3);subplot(131);imshow(PICTURE);title('未嵌入信息的图片');subplot(132);imshow(DOUBLE_PICTURE);title('嵌入信息的图片');subplot(133);imshow(new);title('对比');秘密信息提取代码:%------------------从含有隐藏信息的图片中提取隐藏信息-------------------------P=imread('g:\elena_secret.bmp');PICTURE2=P;[m,n]=size(PICTURE2);decipher=fopen('g:\decipher.txt','w');p=1;fori=1:nforj=1:mifbitand(PICTURE2(i,j),1)==1%与每个像素的最后一位bitandfwrite(decipher,1,'ubit1');P(p,1)=1;elsefwrite(decipher,0,'ubit1');P(p,1)=0;endifp==len%此处的len等于隐藏程序中的lenbreak;endp=p+1;endifp==lenbreak;endendfclose(decipher);求解峰值信噪比:%--------------------------计算峰值信噪比程序———————--——————-----disp('计算两张图片的峰值信噪比:');im1=imread('g:\elena.bmp');im2=imread('g:\elena_secret.bmp');if(size(im1))~=(size(im2))error('错误:两个输入图象的大小不一致');end[m,n]=size(im1);A=double(im1);B=double(im2);x=sum(sum((A-B).^2));MSE=x/(m*n);ifx==0error('两幅图像完全一样');PSNR=200;elsePSNR=10*log10((255^2)/MSE);enddisp('两幅图片的峰值信噪比为:');disp(PSNR);%输出峰值信噪比二、RS隐写分析算法主程序:[fn,pn]=uigetfile({'*.jpg';'*.bmp'},'Selectfiletohide');name=strcat(pn,fn);t=rgb2gray(imread(name));%转换成灰度图像[p,q]=size(t);I=t(1:p,1:q);sz=size(I);m=floor(sz(1)/8);n=floor(sz(2)/8);rs=zeros(10,4);%生成零矩阵cor=zeros(1,3);M=randsrc(8,8,[01]);%生成0,1随机矩阵tmp=zeros(8,8);fori=1:10r=floor(sz(1)*i/10);%floor为向下取整c=floor(sz(2)*i/10);msg=randsrc(r,c,[01]);s=I;s(1:r,1:c)=bitset(s(1:r,1:c),1,msg);%计算RSforj=1:mrv=[(j-1)*8+1:j*8];fork=1:ncv=[(k-1)*8+1:k*8];tmp=s(rv,cv);cor(1)=SpaceCor(tmp);%不进行任何翻转,直接求图像块空间相关性cor(2)=SpaceCor(f1(tmp,M));%经过非负翻转图像块空间相关性cor(3)=SpaceCor(f_1(tmp,M));%经过非正翻转图像块空间相关性ifcor(2)cor(1)%计算RSrs(i,1)=rs(i,1)+1;%f1作用下正则组个数elseifcor(2)cor(1)%计算Smrs(i,2)=rs(i,2)+1;%f1作用下奇异组个数end;end;ifcor(3)cor(1)%计算R-mrs(i,3)=rs(i,3)+1;;%f_1作用下正则组个数elseifcor(3)cor(1)%计算S-mrs(i,4)=rs(i,4)+1;%f_1作用下奇异组个数end;end;end;end;end;rs=rs/(m*n);figure;plot([0.1:0.1:1.0],rs(:,1),[0.1:0.1:1.0],rs(:,2),[0.1:0.1:1.0],rs(:,3),[0.1:0.1:1.0],rs(:,4));legend('Rm','Sm','R-m','S-m');函数1:functiony=SpaceCor(x)%计算指定图像块的空间相关性%8*8图像块ZigZag扫描的位置顺序idx=[1,1;1,2;2,1;3,1;2,2;1,3;1,4;2,3;3,2;4,1;5,1;4,2;3,3;2,4;1,5;...1,6;2,5;3,4;4,3;5,2;6,1;7,1;6,2;5,3;4,4;3,5;2,6;1,7;...1,8;2,7;3,6;4,5;5,4;6,3;7,2;8,1;8,2;7,3;6,4;5,5;4,6;3,7;2,8;...3,8;4,7;5,6;6,5;7,4;8,3;8,4;7,5;6,6;5,7;4,8;5,8;6,7;7,6;8,5;...8,6;7,7;6,8;7,8;8,7;8,8;];n=64;y=0;fori=1:n-1r1=idx(i,1);c1=idx(i,2);r2=idx(i+1,1);c2=idx(i+1,2);y=y+abs(x(r1,c1)-x(r2,c2));end;函数2:functiony=f_1(x,M)%对应于翻转图谱M,对图像块x应用非正翻转并返回结果szx=size(x);szm=size(M);ifszx~=szmfprintf(1,'thesizeofxandMmustbethesame!\n');end;y=x;fori=1:szx(1)forj=1:szx(2)ifM(i,j)~=0odd=mod(x(i,j),2);%应用负翻转,像素灰度值在2i和2i-1之间变化ifodd==0y(i,j)=x(i,j)-1;elsey(i,j)=x(i,j)+1;end;end;end;end;函数3:functiony=f1(x,M)%对应于翻转图谱M,对图像块x应用非负翻转并返回结果szx=size(x);szm=size(M);ifszx~=szmfprintf(1,'thesizeofxandMmustbethesame!\n');end;y=x;fori=1:szx(1)forj=1:szx(2)ifM(i,j)~=0odd=mod(x(i,j),2);%应用正翻转,像素灰度值在2i和2i+1之间变化ifodd==0y(i,j)=x(i,j)+1;elsey(i,j)=x(i,j)-1;end;end;end;end;原始图片的图像:(此时当隐写率接近零时rm约等于r-m,sm与等于s-m)含有秘密信息的图片的图像:(当隐写率接近零时rm明显不等于r-m,sm明显不等于s-m)
本文标题:LSB以及RS隐写分析
链接地址:https://www.777doc.com/doc-3263558 .html