使用卡方(χ2)特性进行的密写分析。原理是一堆数学证明,网上有,不再赘述。简单来说,就是由图像左上角开始逐步扩大计算p值,根据p值与分析区域的曲线得出密写率以及密写的大致区域。这里直接给出实现:
- 卡方分析主程序
image='ste_cover.bmp';
ste_cover=imread(image);
[m,n]=size(ste_cover);
i=1;
for rto=0:0.01:1
row=round(m*rto);
col=round(n*rto);
p(i)=StgPrb(ste_cover(1:row,1:col));
i=i+1;
end
x=round([0:0.01:1]*m)/m*100;
figure;
plot(x,p(:));
axis([0 100 0 1.2]);
%legend('Lena');
xlabel('Size of sample(%)');
ylabel('Probability of embedding');
- 求卡方的p的程序
function p=StgPrb(matrix)
n=hist(matrix(:),[0:255])'; %得到matrix的直方图
h2i=n([1:2:255]); %h(2i)
h2ip1=n([2:2:256]); %h(2i+1)
h2is=(h2i+h2ip1)/2; %h(2i)*
idx=find(h2is); %找出h(2i)*中不为0的元素的索引
k=length(idx);
r=sum(((h2i(idx)-h2is(idx)).^2)./(h2is(idx))); %r为卡方统计量
p=1-chi2cdf(r,k-1);
网友评论