实验目的:
学习GPC专用隐写分析技术与实现
实验任务:
- 验证GPC隐写分析技术的正确性
- 比较GPC隐写分析技术的特性
- 验证所得线性模型的正确性
实验内容:
首先将载体图像数据的像素集对应于三维空间的一个离散点集,即将像素的位置对应于XY平面上的一点,而将其灰度值对应于Z轴上的一个值,再将相邻像素用直线连接起来,就可以得到三维空间中的起伏网格,类似渔网。然后建立两个平行于XY平面的平面簇,平面簇P由z=1.5, z=3.5, z=5.5, ..., z=255.5组成,平面簇P1由z=0.5, z=2.5 ,z=4.5 ,..., z=254.5 组成,这样相邻像素之间的连线会穿过平面簇P0和P1;令网格图中的网格线穿过平面簇P0和P1的次数分别为N0和N1。如果载体图像是自然图像,根据统计特性则认为N0≈N1;反之,若载体图像经过LSB隐写,由于隐写仅替换最低比特位,相邻像素的网格线不会跨越P0中的平面,只会跨越P1中的平面,所以N0保持不变,N1会增大。
算法设计:
Matlab实现该算法的具体步骤如下:
①读取原始图片和秘密信息图片,将要隐藏的秘密信息并进行二值转化。
②按比例在载体图片上随机选择一个位置,将秘密信息按照LSB算法嵌入到所选择的位置中,即将原始图片的最低有效位替换成秘密信息的比特位。
③计算相邻像素点之间的区别,统计奇偶性,得出比率R。
④按比例取嵌入图像所占大小,计算出一系列的比率R,并画出R变化趋势图并计算线性方程。
⑤根据线性方程,取新的载体图像测试检测隐藏信息量与实际隐藏信息量的吻合程度。
原始图像:
test1.jpg(size:1573 * 1009)
秘密图像:
test.jpg(size:1279 * 1706)
实验代码
运行截图:
以70%嵌入率为例:
不断改变信息嵌入率,计算测试图像的嵌入比例估计测试结果:
表1 测试图像的嵌入比例估计测试结果
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
比例 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1 |
R测试 | 数据 | 直接看 | 图表 | 吧 | 我图片 | 转存 | 失败了 | 。 | 。 | 。 |
作出R和信息嵌入率的图像
图1 测试图像的嵌入比例估计测试结果
分析:观察图1中的嵌入率α和R的关系曲线,当α以步长0.1增加时,R的值近似呈线性增长,在图中表现为一条直线。然后用下面的方法估计隐写信息量α.图1中α和R的函数关系近似一次函数,我们选择用一次函数y=a+bα来拟合。实验证明,一次线性函数可以很好地对这一函数关系建模.下面通过两个关键点(用(α,y(α))来表示)来估计嵌入比例α.两个关键点是零嵌入(0,y(0))情况和全嵌入(1,y(1))情况.对于零嵌入情况,通过大量实验,结果表明当α等于0时,R分布在1附近,这里我们经过实验表明,当α=0时,选R=1建模的效果较好.对于全嵌入情况,对待检测图像进行二次隐写,嵌入率β为100%.经二次隐写后,有部分像素经历了两次改变又回到原始的灰度值,而在两次隐写中仅改变过一次灰度值的像素占全部像素的(α+β-αβ)/2,即相当于经历了一次嵌入率为(α+β-αβ)的隐写.也就是说,当二次嵌入率为100%时,仅经历过一次灰度值变化的像素正好占全部像素的50%,也就相当于经历了一次嵌入率为100%的隐写.因此,可以用二次全嵌入近似一次全嵌入时的情况。由此可以得出线性模型y = 1.938 x + 0.6497
验证:
(1)验证嵌入不同秘密图像信息时图像,比较嵌入比例估计测试结果
原始图像:不变
秘密信息图像:
test2.jpg
以嵌入率0.7为例,计算相应信息如下:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
比例 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1 |
R测试 | 一样 | 转存 | 失败 | 大家 | 自己 | 做一下 | 数据吧 | |||
R验证 | 数据 | 大致 | 走势 | 和 | 下图 | 一样 | 吧 |
表2 验证图像的嵌入比例估计测试结果
图2 验证图像的嵌入比例估计测试结果
- 验证检测隐藏信息量与实际隐藏信息量的吻合程度(以载体图像为test1.jpg,秘密信息图像为test.jpg为例)
表3 检测隐藏信息量与实际隐藏信息量的吻合程度
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
实际隐藏信息量 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1 |
检测隐藏信息量 | 0.191686 | 0.225042 | 0.278206 | 0.352111 | 0.441425 | 0.547273 | 0.666458 | 0.795319 | 0.929759 | 1.073171 |
图3 检测隐藏信息量与实际隐藏信息量的吻合程度
分析: 0.007值非常小可忽略不计,即吻合程度模型为y = 0.899x,k=0.899
k接近于1,越接近于1说明该线性模型性能越好。
算法优化:
这个算法优化其实没有作太大变动,只是多加了for循环,可以输出不同信息嵌入率的R
结论:
- LSB算法
基于数字图像最低有效位(LSB)的数字图像水印算法是一种常见的数字水印嵌入和提取技术。该算法将一个需要隐藏的二值图像信息嵌入载体图像的最低有效位,即将载体图像的最低有效位层替换为当前需要隐的二值图像,从而实现将二值图像隐藏的目的由于二值图像处于载体图像的最低有效位上,所以对于载体图像的影响非常不明显,并且在必要时直接将载体图像的最低有效位层提取出来,即可得到嵌入在该位上的二值图像,达到提取秘密信息的目的。
- GPC算法
GPC分析的基本原理可以总结为:若载体图像是自然图像,由于相邻像素之间的相关性,N0≈N1;若载体图像经过了LSB隐写,则会减弱相邻像素之间的相关性,从而使N1增大。根据以上基本原理,可通过比较N0和N1的大小判断秘密信息的有无。令R=N1 / N0,定义阈值T,当RT时,认为该载体数据含有秘密信息。GPC算法需要统计所有网格线(集合 S1、S2、S3 中所有相邻像素对连接而成)穿越平面簇的次数,数值大。