

算法 5.3随机间隔方法的嵌入过程
fori =1,…,l (c) do
s i←c i
end for
使用种子 k随机生成序列 k i
n←k1
fori =1,…,l (m) do
s n←cn m i
n←n +k i
end for
算法 5.4随机间隔方法的提取过程
使用种子 k随机生成序列 k i
n←k1
fori =1,…,l (m) do
m i ←LSB(cn)
n←n +k i
end for
(2)DCT水印算法:DCT水印算法是最主要的变换域算法之一,其细分种类很多。为便于理解,我们从一种简单的基于DCT系数大小关系的实例出发,来介绍 DCT水印思想,为理解图像乃至视频水印技术打下一定基础。首先很有必要介绍一下在 JPEG图像压缩中用到的二维 DCT变换(见图 5-17)。

二维 DCT变换是目前使用的最著名的有损数字图像压缩系统,JPEG系统的核心。JPEG系统首先将要压缩的图像转换为 YCbCr颜色空间,并把每一个颜色平面分成 8×8的像素块。然后,对所有的块进行DCT变换。在量化阶段,对所有的 DCT系数除以一些预定义的量化值(参见表 5-1),并取整到最接近的整数(根据质量因子,量化值能通过一个常数进行缩放)。这个处理的目的是调整图像中不同频谱成分的影响,尤其是减小了最高频的DCT系数,它们主要是噪声并且不含有图像的细节。最终获得的 DCT系数通过熵编码器进行压缩(例如,哈夫曼编码或算术编码)。在JPEG译码时,逆量化所有的 DCT系数(也就是乘以在编码阶段中使用的量化值),然后执行逆 DCT变换重构数据。恢复后的图像很接近(但不等同)于原始图像。但是如果适当地设置量化值,得到的图像光凭人眼是觉察不到差异的。

所介绍的算法主要思想是在一个图像块中调整两个(或多个)DCT系数的相对大小,来构造对应的水印信息。首先,在编码处理中,发送者将载体图像分成 8×8的像素块,每一块只精确地编码一个秘密信息位。嵌入过程开始时,首先伪随机地选择一个图像块 b i,用它对第i个消息比特进行编码。令 B i = D{bi} 为 DCT变换后的图像块。
在通信开始前,发送者和接收者必须对嵌入过程中使用的两个 DCT系数的位置达成一致,让我们用( u1,v1)和( u2v2)来表示这两个索引。这两个系数应该相应于余弦变换的中频,确保信息保存在信号的重要部位(从而使嵌入信息不容易因JPEG压缩而完全丢失)。进一步而言,人们普遍认为中频 DCT系数有相似的数量级,我们可以假定嵌入过程不会使载体产生严重降质。因为构造的系统要在抵抗JPEG压缩方面是健壮的。我们就选择在 JPEG压缩算法中它们的量化值一样的那些 DCT系数。根据表 5-1,系数(4,1)和(3,2),或者(1,2)和(3,0)是比较好的。
若块B i(u1v1>B2( u2,v2)就编码为“ 1”,否则编码为“ 0”。在编码阶段,如果相对大小与要编码的比特不匹配,就相互交换两个系数。由于JPEG压缩(在量化阶段)能影响系数的相对大小,算法应通过在两个系数中加随机值,以确保对某个x>0,使得Bi(u1,v1)-bi(u2,v2)>x。x值越大,算法抵抗 JPEG压缩的能力就越健壮,然而图像的质量就越差。最后,发送者执行逆 DCT变换把系数变换回空间域。为了从图像中提取信息,必须对所有图像块进行 DCT变换。通过比较每一块中的两个系数,就可以得到隐藏的信息。嵌入和提取算法如算法5.5和 5.6所示。
| 各省软考办 | ||||||||||