赵久影, 王洪君
(1 吉林师范大学 数学学院, 吉林 四平136000; 2 吉林师范大学 计算机学院, 吉林 四平 136000)
随着计算机的迅速发展,保护数字产品的版权已成为近年来的一个重要问题。目前,研究人员提出了许多保护数字图像知识产权的技术。其中,数字水印技术就是在载体图像中隐藏有意义的数字水印,以保护版权和完整性检查。当需要证实图像的合法所有权时,可以提取隐藏的水印进行所有权验证。
曲长波等人[1-2]给出了基于视觉密码的零水印算法,对载体图像进行置乱和奇异值分解等操作提取特征矩阵,利用视觉密码生成零水印。零水印算法没有将水印嵌入到载体图像中,所以载体图像不会被修改。侯翔等人[3]给出了一种定位篡改实体组的脆弱水印算法,该算法采用优化的k均值聚类进行分组,构建特征参数及混沌映射生成脆弱水印。Li等人[4]提出了一种基于DCT算法的数字水印,利用离散余弦变换对图像像素值和频域系数矩阵进行变换,实现了盲水印的嵌入和提取。文献[5-10]也对数字水印算法进行了研究。罗昊等人[11]提出了一种在加密域中来做直方图平移的可逆水印算法,利用直方图平移的方法实现水印的嵌入和提取,在此过程中不会影响原始载体图像。刘连山等人[12]提出了基于分块的预测差值直方图平移的可逆水印算法。文献[13-16]也提出了不同的可逆水印算法。
本文提出基于像素不扩展视觉密码的可逆水印算法,该算法既能提取水印,又能无损地恢复载体图像。利用(2,2)像素不扩展视觉密码方案将水印分割为2幅分享图像。将分享图像中的一个嵌入载体图像中,另一个分配给所有者。提取时,从嵌入水印后的图像中提取分享图像,将这2幅分享图像合并显示水印,在此过程中还能完整地恢复载体图像。实验结果表明,该算法实现简单,具有良好的抗攻击能力。
1994年,Naor和Shamir[17]提出了一种新的加密方法,称为视觉密码(VSS)。将一幅秘密图像编码为n幅分享图像,然后分发给n个参与者,每人一幅分享图像。解密时只需将分享图像打印到透明胶片上,n幅分享图像中的任意k幅或k幅以上进行叠加,用人眼即可辨认出秘密图像。传统视觉密码方案的分享图像大小比原秘密图像大,并且分享图像无意义。为了解决上述问题,王洪君等人[18-19]给出了像素不扩展的(2,3)视觉密码方案和具有掩盖图像的像素不扩展的(2,2)视觉密码方案。李春燕[20]提出了基于像素不扩展视觉密码的盲水印算法,利用像素不扩展的(2,2)视觉密码的基础矩阵修改载体图像的低位来嵌入水印。
像素不扩展的(2,2)视觉密码方案见表1。对于一个白(黑)色像素,有2条加密规则。对于每一次编码一个白(黑)色像素,随机选择一个加密规则,根据所选的规则将像素分割为2个子像素。
表1 加密规则
假设载体图像H是一个M×N的灰度图像,水印图像W是一个m×n的二值图像。利用密钥K产生m×n个随机数,从M×N个像素位置筛选出符合嵌入条件的m×n对像素值。将水印图像W利用像素不扩展的(2,2)视觉密码方案分割成2幅分享图像,分享1嵌入到载体图像中,分享2和密钥K分配给所有者,根据水印嵌入算法,得到嵌入水印后的载体图像。嵌入水印的算法流程具体如下。
(1)利用密钥K产生m×n个随机整数。随机整数对应图像的像素位置,将选取位置的像素值与其相邻的像素值进行比较。每当一对像素值(x,y)被读入时,当x (1) 反之亦然,否则不能嵌入水印,重新选择嵌入位置。 (2)水印图像W利用像素不扩展的(2,2)视觉密码方案分割成2幅分享图像(见表1),分享1嵌入到载体图像中,分享2分配给所有者。嵌入过程的阐释表述如下。 ① 求出每对像素值差值的绝对值h,差值与2作取余运算,余数为r。 ② 分享图像1的像素w与差值h和余数r作如下运算得到q,其数学公式可表示为: q=2×h-r+2×w, (2) ③ 判断(x,y)的大小关系,先用较小的值与q作减法,再用较小的值与q作加法,得到嵌入水印后的像素值(x',y')。x',y'之间的大小关系与x,y之间的大小关系相同。假设x x'=x-q, (3) y'=x+q. (4) 由此可得x' 当所有者想要证明所有权时,利用密钥K在嵌入水印位置提取像素值,每当一对(x',y')的值被读入时,根据水印的提取算法,得到w和(x,y),直到把所有像素值都提取出来就得到分享1,将其与所有者的分享2叠加,可以得到原水印图像。将(x',y')替换成(x,y)就可以恢复原始载体图像。水印提取的完整算法详见如下。 (1)利用密钥K提取m×n对嵌入水印的像素值(x',y')。 (2)比较(x',y')的大小,求出x',y'的平均值,x',y'中较小值对应的x或y为平均值。假设x' (5) (3)求x与x'差值的绝对值s,差值s与4作取余运算,余数为t。 (4)被除数为余数t,除数为2,得到的商就是嵌入水印图像的像素值w,余数为p。 (5)将差值s,提取的水印像素值w和余数p作如下运算得到c,其数学公式可表示为: (6) (6)x,y中,较小值已经确定,较大值即为较小值与c的和,得到原载体图像像素对(x,y)。假设x' y=x+c, (7) 同理,如果嵌入过程利用较大的值与q作加减法得到(x',y'),则提取时,利用较大的值为平均值,较小值即为较大值与c的差。 假设有一对灰度值(x,y),x,y∈Z,0≤x,y≤255,嵌入w,w∈{0,1},并恢复(x,y)的可逆方法如下。假设: x=127,y=132,w=0, x,y满足嵌入条件,则有: x'=118,y'=136 嵌入一对像素(x',y'),根据水印提取算法提取嵌入值w并且恢复原始对(x,y)。其推导运算过程如下: (8) 1÷2=w…r, (9) w=0, (10) y=x+c=132. (11) 以512×512的Lena为载体图像,133×133的水印图像如图1所示,嵌入水印的图像见图2(a),恢复载体图像见图2(b)。提取的分享图像1见图3(a)和所有者的分享图像2见图3(b),2幅分享图像的叠加结果如图3(c)所示。在实验中,使用峰值信噪比(PSNR)来测量嵌入水印后图像的质量。PSNR的计算公式的数学表述如下: (12) 其中, (13) 式中,pi,j是原载体图像的像素值,p'i,j是嵌入水印后图像的像素值。PSNR越大,嵌入水印后的图像与原载体图像越相似。一般来说,如果PSNR大于30,人类的眼睛就无法察觉到差异。原载体图像与嵌入水印后的图像的峰值信噪比为43.95,这意味着人眼几乎看不到嵌入水印后的图像与原载体图像的区别。恢复的载体图像与原载体图像的峰值信噪比为正无穷,意味着2张图像完全相同。 对嵌入水印后的图像分别引入加噪声、剪切、滤波、缩放等扰动因素。提取的水印由测量值NC(归一化相关)来进行表征,如式(14)所示: (14) 其中,Wi, j是原始水印的像素值,W'i, j是提取水印的像素值。如果NC接近1,则提取的水印与原始水印相似。不同攻击下提取的水印图像如图4所示,PSNR值是被攻击的图像和恢复的载体图像计算出来的,在有攻击和无攻击的叠加结果间测量NC值,可求得PSNR和NC数据见表2。结果表明,该方案能够抵御常见的攻击。 图1 原始水印图像 (a) 嵌入水印后的图像 (b) 恢复的载体图像 (a) Watermarked image (b) Recovered image 图2 嵌入水印后的图像及恢复的图像 Fig. 2 The watermarked image and recovered image (a) 分享图像1 (b) 分享图像2 (c) 叠加结果 (a) Shared image1 (b) Shared image 2 (c) Stacked result 图3 分享图像及叠加结果 Fig. 3 Shared and stacked result 图4 不同攻击下提取的水印 表2 常见攻击 将像素不扩展的视觉密码方案与可逆水印相结合,提出了基于像素不扩展视觉密码的可逆水印算法,既能保证原始载体图像的隐私,又能保证水印的安全。近年来,视觉密码与水印相结合多为零水印算法,零水印算法没有将水印图像嵌入到载体图像中,载体图像不会被修改。其它视觉密码与水印相结合的算法不能完整地恢复载体图像。该算法不仅能正确地提取水印图像,并且能无损地恢复载体图像。对嵌入水印后的图像进行攻击,提取的水印和原始水印图像也较为相似。实验结果表明,该算法能抵御常规的攻击。2.2 水印的提取
2.3 实验结果
3 结束语