分块DCT的自适应扩频水印算法
摘要:本文提出了一个利用块分类的DCT域自适应扩频图像水印算法。嵌人的水印是一个可视二值图像,用两个不相关的伪随机序列分别代表水印信息中的0和1,从而达到扩频的目的。将扩频后的水印信号,嵌入到分块DCT域的中低频段系数中的过程中,充分考虑到了局部图像的复杂度,能够自适应地调整嵌入强度,提取水印信号无需使用原始图像。仿真实验表明:图像经过JPEG有损压缩、低通与中值滤波和剪切等图像处理操作后仍是稳健的。
关键词:分块DCT 扩频 HVS 图像 水印 算法
1 引言
数字水印技术是指在宿主数字媒体(图像、声音、视频)等中嵌入一定量的数字信息,例如作者的电子签名、日期、公司图标等,用以证明作品的所有权,并可作为起诉非法侵权的证据,从而保护作品原创者的合法利益。数字水印技术不同于传统的数据加密,其目的不是限制对数据的存取,而是保证嵌入的数据不可侵犯和可恢复。其基本要求有:透明性,是指在宿主数字媒体中嵌入一定量的数字水印信息后,不会引起原媒体明显的降质现象,隐藏数据不易察觉,即无法人为地看见或听见;鲁棒性,是指数字水印必须对施加于宿主媒体的各种变换操作(如有损压缩、滤波和剪切等)具有免疫性,即水印信息不能因为施加于宿主媒体的某种变换操作而丢失;安全性,是指数字水印能够抵挡各种蓄意的攻击,很难被他人所复制和伪造,只要其不知道控制该算法的密钥。
2 已有的基于DCT域的图像水印算法分析
较早利用分块DCT的水印技术是Koch .E、Zhao.J的文章[1],他们的水印方案是用一个密钥随机的选择图像的一些分块,在频域的中频上稍稍改变一个三元组来隐藏二进制序列信息。这种方法对有损压缩和低通滤波是稳健的。Cox等[2]提出了着名的基于图像全局变换的数字水印技术,该方案对整个图像作离散余弦变换(DCT),然后将水印嵌入到预先设定的低频分量中,水印信号由高斯分布的实数序列组成,算法不仅在视觉上具有不可察觉性,而且稳健性也非常好,可经受JPEG压缩、滤波、剪切等攻击。Barni等[3]提出一种利用HVS掩蔽特性的基于DCT的水印算法,在水印嵌入阶段,对 的图像进行 的DCT变换,对DCT系数按Zig-Zag扫描重新排列为一维向量,留下向量中开始的L个系数不作修改,对第L个系数后面的M个系数进行修改以嵌入水印。黄继武等人[4] 在对DCT系数DC和AC分量的定性和定量分析的基础上,指出DC分量比AC分量更适合嵌入水印,嵌入DC分量的水印具有更好的稳健性,并提出了一个利用DC分量的自适应算法。
以上算法至少有以下两个缺点:①在水印提取过程中使用了原始图像,这一点在实时的网络环境中很难做到;②只能给出水印存在有无的回答,在许多应用场合要求水印是有意义的,如一个二维图像(商标、印鉴等)。显然,这种有意义的水印所包含的信息量、可感知性、可辩识性及保密性,是无意义的伪随机噪声所不能比拟的。
本文在研究了前人算法的基础上,提出了一个利用块分类的DCT域自适应扩频图像水印算法,嵌入的水印是一个可视二值图像。用两个不相关的伪随机序列分别代表水印信息中的0和1,从而达到扩频的目的,将扩频后的水印信号,嵌入到分块DCT域的中低频段系数中。在嵌人过程中充分考虑到了局部图像的复杂度,能够自适应地调整嵌人强度,水印检测算法不需要原始图像,实现了盲检测。仿真实验表明:图像经过JPEG有损压缩、低通与中值滤波、剪切等图像处理操作后仍是稳健的。
3 数字水印嵌入算法具体步骤
本文算法基本框图如图1所示,以下对各步骤作详细介绍。
图1 水印嵌入算法框图
3.1 原始图像分块
设原始图像为f(x,y),首先将 f(x,y) 分割为互不覆盖的8×8子块,记为
Bm={fm(i,j),0≤ m =0,1,...,M-1 ≤7}m =0,1,...,M-1 ,对 Bm进行DCT变换,得到:
= =DCT{ ,0≤ ≤7}m =0,1,...,M-1 (1)
3.2 基于视觉掩蔽特性的块分类
本文借鉴黄继武等[5]提出的算法,水印的嵌入过程可以看成在一个强背景(原始图像)上叠加一个弱信号(数字水印),只要信号低于HVS的对比度门限,视觉系统就无法感觉到信号的存在。根据HVS的对比度特性,该门限受背景照度,背景纹理复杂性和信号频率的影响,一般说来,背景越亮,纹理越复杂,门限就越高。即可以嵌入更高强度的水印信号,根据图像的局部纹理复杂性,尽可能提高嵌入水印的强度,这是提高水印稳健性的有效办法。为此,把图像分为三类,以便叠加不同强度的水印分量。第1类(R1)平均灰度较低(暗),且灰度变化比较平滑,HVS对其中像素值的改变较为敏感,叠加的水印分量的强度最弱;第3类( R3)平均灰度较高,且纹理复杂,HVS对其中像素值的改变敏感性最弱,叠加的水印分量的强度最强;余下的为第2类( R2)。
设背景照度为 I,根据Weber定律,在均匀背景下,人眼刚好可以识别的物体照度为 , 满足: 。文中定义了如下衡量块均匀度的参数:
(2)
其中 为 的灰度均值。上式的物理意义是:决定物体照度可见度的应该是对比度而非照度绝对差,加权系数 作为修正因子, 根据下式确定:
= (3)
,当 较小时, 被认为比较均匀;反之, 较大时, 被认为包含纹理和边缘。文献中提到利用 作为块均匀度的测量标准,其结果优于利用块方差作为标准的情况。
块分类器可描述如下:
如果 且 ,则 。
如果 且 ,则 。
若上述两种情况均不满足,则 ,其中T1、T4为门限,可由实验确定。
3.3 水印的预处理
设二值水印表示为: , ,很明显,如果不打乱水印的空域关系,直接把可视的二值水印加到原始图像的中频段,那么一个简单的图像剪切操作就会把水印破坏掉,因此,在嵌入水印之前,首先对其进行置乱处理,本文采用一个时间复杂度较低的随机算法来打乱水印的空间顺序。
}(4)
其中, 是原始像素点 经过随机排序后得到的乱序水印像素点。
图2 水印随机排序示意图
首先,利用密钥K1产生0到 的随机数作为原始水印每个像素点的标号,然后利用桶分类排序算法将这些随机标号按由小到大排序,随机标号的顺序排序使得标号所标识的原始水印像素点随机排序,这种方法的时间复杂度为 ,以32×32二值水印为例,排序过程由图2所示。
3.4 水印扩频
扩频调制具有抗干扰、低功率谱密度、保密性好等许多优点,它是利用伪随机序列对被传输信号进行频谱扩展,使之占据的带宽远远超过所必需的最小带宽,其本质是利用带宽换取信噪比。在水印算法中,它是利用水印信道的容量换取算法稳健性的改善。本文提出采用两个不相关的伪随机序列来代表二值水印信息中的0和1,从而实现频谱扩展的目的,首先利用密钥K2产生一个种子,在此种子下,生成两个不相关的伪随机序列:PN_zero,PN_one。
, (5)
其中 L 由8×8DCT系数矩阵的中频段长度决定,然后根据二值水印信息的0或1,分别嵌入PN_zero或PN_one。本文采用的扩频方案具有简单易实现和稳健性好的优点。
3.5 水印嵌入
为了在鲁棒性和透明性之间进行折中,本文将二值水印经扩频后的伪随机序列嵌入到各图像块的中低频段系数中。实验中采用的二值图像是 16×16 的字符图像,原始图像是256× 256 的Lena图像。原始图像经过8×8分块后,有1024个子块,而二值图像的总长度为256,因此把二值图像周期扩展为长度为1024的向量,然后再嵌入到原始图像,使水印具有更好的抵抗剪切攻击能力。首先对B`m(m =0,1,...,M-1) 的系数按Zig-Zag顺序读取(如图3(a)),本文对水印的嵌入位置和伪随机序列的长度进行了大量的实验,发现在图3(b)为1的位置嵌入伪随机序列, 水印具有较好的鲁棒性和透明性。
将按Zig-Zag顺序读取的每一分块系数重新排列为一维向量 ,并取出系数中第 L+1到L+N 的中低频段部分,得:
,
根据图3知 L =14, N =13,伪随机序列由 N 个实数随机数组成:
按下式将伪随机序列嵌入到 中:
当message(m)=0, (6)
当message(m)=1, (7)
(a)Zig-Zag读取顺序 (b)水
[1] [2] [3] 下一页