灰度图像隐写分析
本文是一个介绍基本灰度图像隐写分析的报告,主要是根据隐写分析实验写的~想要代码的请留言哈~
即此灰度值的直方图大小为hj),那么,如果秘密信息完全替换了载体图像像素的最低位,则h2i与h2i 1的值会比较接近,即便没有完全替换,两者的值也会有一定的相等性,而如果图像未经信息的嵌入,h2i与h2i 1的值相差的会大些。
基于以上对问题的讨论,根据概率论中的定理,定义统计量r:
*2(h2i h22i)r ~ k 1*h2i 1ik(1)其中h2i *h2i h2i 1
2
即,r服从自由度为k 1的卡方分布。
之后,结合卡方分布的密度函数,设P是h2i与h2i 1相等的概率,则有:
P 1
2k 1
2 2 k 1 12xk 10ex x2k 1 12dx(2)
在程序中,不可能用代码去写(2)式,而是调用matlab中自带的函数chi2cdf,调用方法是:p(j)=1-chi2cdf(r,127);然后将j加1,再循环此过程,直到将p都计算出来。
具体判断时,如果对某些j,有p(j)约为1,那么,此图像是经过了隐写,而如果对所有的j,p(j)都近似为0,那么此图像就是一幅未经隐写的自然图像。
3.随机LSB替换
随机LSB替换中一个重要的问题是生成随机嵌入序列问题,即要找到一个好的方式生成互不相同的随机,并且其范围应该在1到图像像素个数之间,这样才能保证正确的隐写,不会溢出也不会产生覆盖。
在此部分中,我选择了一个数论中用到的方法来产生随机序列:
(注:默认图像大小为512 512,即图像中的像素总个数为2个)18
K是随机序列,其长度等于消息的长度,接下来,有:
K1 Key,其中Key为初始密钥值,由用户选择输入;
for(i 2tolength(message))
Ki mod(210 97 Ki 1,218)
end
在上面的伪代码中,(3)式中的2与97的选择是基于以下情况考虑:
i.如果用户输入的数字过小(比如100以内),2的作用是使生成的随机序列能快速的增加以至于有周期的作用,即到某一个随机数后,后一个数比前一个数小(由于模了2,181010(3)


