资源描述:
《基于JSteg顺序隐写的快速卡方检验方法.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、基于JSteg顺序隐写的快速卡方检验方法•背景知识:研究发现,采用jsteg算法嵌入信息后的jpeg图像的DCT系数统计特性将发生变化。嵌入过程中相互交换的DCT系数值对的出现频次开始趋于一致,而原始图像中,值对出现的频次通常不一致。利用该特性,可以利用快速卡方检验方法对图像是否经过jsteg隐写作出判断。•快速卡方检验原理:定义f0(C)为AC系数中正偶数和负奇数的个数,f1(C)为负偶数和正奇数的个数。统计表明,有f0(C)≈f1(C),且服从如下自由度为1的卡方分布由于对于秘密消息的嵌入而改变了DCT分布关于0的对
2、称性,因此对于载密图像必然有且上式可作为图像中是否存在用JSteg隐写嵌入的秘密信息的判断依据。•实现过程:•1、读一张图像。•2、对图像进行分块处理,获得AC系数。•3、令集合C表示所有的量化DCT系数•4、随机生成隐密信息。•5、构建一个C的子集,进行顺序jsteg隐写。•6、计算隐写后的卡方值。•7、根据卡方值判断是否隐写。num_radio_0=0;gray=imread('C:UsersAdministratorDesktop1233.jpg');Imshow(gray);gray=rgb2gray(g
3、ray);gray=im2double(gray);[mn]=size(gray);temp=double(gray);T=dctmtx(8);%产生二维DCT变换矩阵Q_table=[1611101624405161121214192658605514131624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399];B=blkproc(temp,[8,8],'P1*x*P2
4、',T,T');%分块DCT变换B=blkproc(B,[8,8],'round(x./P1)',Q_table);C=zeros(1,m*n-m*n/64);%创建一个1行m*n-m*n/64列的矩阵,量化后的DCT系数K=1;fori=1:mforj=1:n6if(mod(i,8)~=1)
5、
6、(mod(j,8)~=1)%去掉DC值C(1,K)=B(i,j);%提取AC值到C矩阵中K=K+1;endendend%计算AC系数不等于0且不等于1的个数v=0;fori=1:m*n-m*n/64if(C(1,i)~=0)&&
7、(C(1,i)~=1)%系数不等于0且不等于1v=v+1;endendrate=0.2;A=floor(v*rate);%向下取整,取一部分M=rand(1,A)>0.5;%随机产生矩阵%取一不大于(AC系数不等于0且不等于1个数)的矩阵j=0;fori=1:m*n-m*n/64if(C(1,i)~=0)&&(C(1,i)~=1)j=j+1;endifj==Abreak;endendS=zeros(1,i);%构造C的一个子集,矩阵为1*n的全0矩阵%隐写过程l=1;forr=1:iS(1,r)=C(1,r);endfo
8、rr=1:iif(S(1,r)~=0)&&(S(1,r)~=1)if(S(1,r)>0)S(1,r)=S(1,r)-mod(S(1,r),2)+uint8(M(1,l));elseif(S(1,r)<0)if(mod(S(1,r),2)==1)if(M(1,l)==0)S(1,r)=S(1,r)-1;6elseS(1,r)=S(1,r);endelseif(M(1,l)==1)S(1,r)=S(1,r)+1;elseS(1,r)=S(1,r);endendendl=l+1;ifl>Abreak;endendend%检测过
9、程forr=1:iC(1,r)=S(1,r);endf0=0;%正偶数和负奇数的个数f1=0;%负偶数和正奇数的个数fori=1:m*n-m*n/64if((C(1,i)>0)&&(mod(C(1,i),2)==0))
10、
11、((C(1,i)<0)&&(mod(C(1,i),2)==1))f0=f0+1;Elseif((C(1,i)>0)&&(mod(C(1,i),2)==1))
12、
13、((C(1,i)<0)&&(mod(C(1,i),2)==0))f1=f1+1;endendx=(f1-f0).^2/(f1+f0+eps);%
14、卡方分布if((x>3.843)&&(f1-f0>0))%是否嵌入秘密信息的判断依据num_radio_0=num_radio_0+1;endradio_2=num_radio_0;%判断结果,如果>0则表示有秘密信息嵌入,反之则没有num_radio_0=0;gray=imread('C:UsersAdmini