陈小娥
(福建船政交通职业学院信息工程系,福州 350007)
数字水印技术是信息隐藏技术研究领域中的一个热点问题,主要指将一些标识信息作为水印嵌入到数字媒体(包括图像、视频、音频、文档和软件等)中,且不影响原载体的正常使用,也不容易被探知和再次修改。数字水印技术具有广阔的应用前景,如可用于版权保护、多媒体图像处理和文档管理、隐匿通信等方面。
经过相关领域学者们的辛勤研究,许多数字水印算法被相继提出,大体可以分为空域水印算法和频域水印算法。空域水印算法主要通过直接修改载体图像中的某些像素值来嵌入水印,如最低有效位算法[1]就是数字水印发展前期比较典型的空域算法,该算法将信息嵌入到图像点中最不重要的像素位上,算法比较简单,但鲁棒性较差。之后相继出现比较有代表性的算法还有Patchwork算法[2]和Histogram shifting算法[3]等。频域水印算法是另一主要水印算法,主要通过对变换系数做适当调整将水印嵌入图像中,比较常见的有离散傅里叶变换法、离散余弦变换法以及离散小波变换法等,该类算法拥有较强的鲁棒特性[4-8]。如文献[4]提出了一种基于PCA和DWT的新的数字水印算法,先对载体图像进行一级小波分解,然后用主成分分析提取其低频子带的主成分系数,最后将水印嵌入到提取出的主成分系数中,该算法明显提高了抗剪裁、旋转等几何攻击能力;文献[5]提出了一种彩色QR码嵌入彩色图像的数字水印技术,主要通过Contourlet-离散余弦变换和奇异值水印技术完成对水印的嵌入和提出,该算法对高斯噪声、椒盐噪声、剪切攻击和JPEG压缩攻击具有较强的抵抗能力。
本文提出了一种基于DCT变换的数字水印算法。算法首先将水印信息转换成对应的QR码,然后通过Arnold置乱技术将QR码进行预处理,接着对载体图像实现8×8分块,对每个分块完成DCT变换,将预处理后的水印信息嵌入到各分块中,从而完成水印信息的嵌入。实验结果表明,本文算法对噪声叠加、剪切等常见攻击具有较强的鲁棒性,能在保证水印隐藏性的同时抵抗住一定程度的攻击,满足标识图像版权信息的需求。
离散余弦变换(DisereteCosine Transform)简称为DCT。在图像处理中使用的是二维DCT,二维DCT变换就是将二维图像从空间域转换到频率域。设f(x,y)表示一幅大小为M×N的图像,其中x=0,1,2…M-1;y=0,1,2…N-1,则其二维DCT变换T(u,v)可表示为:
二维DCT反变换为:
水印在嵌入前先经过一定的预处理,可进一步提高水印嵌入过程中的鲁棒性。图像置乱技术是一种常见的信息隐藏技术,其中Arnold变换就是一种经典的置乱技术。它通过把图像中的像素点的位置按照某种规则进行置换,达到加密的目的。式(1)~(2)是Arnold变换的公式:
(1)
Arnold置乱反变换为:
(2)
其中,(x,y)为原图像的像素点坐标,(x′,y′)是置换后的图像的像素点坐标,N表示图像矩阵的阶数。原始水印图像通过Arnold置换后,可以增强破译的难度,还可以利用Arnold变换的周期性,设置迭代的次数,让创建者自由控制算法,增加水印本身的安全性。
QR码是二维码的一种,来自英文“Quick Response”的缩写,即快速反应的意思。QR码能够快速读取,且存储更多更丰富的信息,可以对文字、URL地址和其他类型的数据进行加密。一般QR码呈正方形,在正方形的3个边角有3个“回”字的图案用来帮助软件定位,方便使用者扫描,无需对准。
数字水印技术一般主要包括嵌入水印信息和提取水印信息两大部分,图1显示了本文提出的数字水印算法的嵌入和提取的过程示意图。
水印信息的嵌入步骤如下:
1)水印信息预处理。将待添加的水印信息转换成对应的QR码,对该QR码进行Arnold置换,生成无法识别的水印信息。
图1 水印的嵌入和提取过程
2)将载体图像分成K个8×8的子块,每个图像子块都进行DCT变换,取得所有子块DCT量化系数Ck(x,y),其中,k=1,2…K;x=1,2…,8;y=1,2…8。
3)实现水印信息的嵌入,按照一定规律选择要嵌入的水印信息的系数Ck(x,y),调整其值,如式(3):
Ck′(x+i,y+8-i)=Ck(x+i,y+8-i)+αMk,
(3)
式中:i=1,2…8;α为尺度因子,用来控制添加水印的强度;Mk为根据分配给各子块所对应的水印信息的值而设定的一个序列。具体如式(4):
(4)
式中:k1k2为随机序列;m(i,j)为初始水印信息转换成的对应的QR码并经过Arnold置换后生成的二值图对应位置的值。
4)系数修改完后,对每一图像子块再进行二维DCT逆变换,从而生成添加了水印的水印图像。
水印信息的提取步骤如下:
1)将含水印的图像,分成大小为8×8的图像子块,对每个子块进行DCT变换。
2)将之前改变过系数值的像素点提取出来,通过对比提取序列与k1的相关系数和提取系列与k2的相关系数,初步恢复中间的水印信息。
3)将上一步得到的中间水印信息,进行Arnold逆变换,即得到恢复的QR码形式的水印信息,进而可获得原始水印信息。
为进一步评价提取出来的水印的质量,通过计算所恢复的QR水印信号和原来QR水印信号的相关系数的值,来描述两者之间相似度。设两幅图像f(m,n)和g(m,n),归一化相关系数Nc如式(5):
(5)
实验中载体图像大小为512像素×512像素,如图2所示。原始水印信号为文字“数字水印”,将其转换成对应的QR码图像,QR码大小为64像素×64像素,如图3所示。
图2 载体图像
图3 原始水印QR码
将原始水印的QR码进行Arnold置乱,图4为对图3进行不同迭代次数的Arnold置乱后的示意图,置乱公式使用上文提到的式(1),且其中参数a取值1,b取值1;式(3)中α值取30。由变换结果可以看出,QR码变为了无法扫描识别的无意义图像。将迭代5次后的水印信息加入到载体图像后,得到加水印后的图像,如图5所示。
(a)迭代1次
(b)迭代3次
(c)迭代5次
图5 加入水印后的图像
利用水印嵌入逆过程从水印图像中提取水印信号,结果如图6所示,图6(a)为提取的水印图,图6(b)是将图6(a)再经过Arnold逆变换得到的QR码,经扫描可快速识别出文字“数字水印”。
(a)提取的水印
(b)对提取水印Arnold逆置换
对式(3)的尺度因子α设置不同的值,得到的结果见表1。
表1 不同α值的嵌入结果对比
对加入水印的图像进行噪声攻击实验和剪切攻击实验来测试水印算法的抗攻击能力。实验中,尺度因子设置为30。噪声攻击性能测试实验结果如表2的前3行,显示了添加随机白噪声、方差为0.002的高斯噪声1和方差为0.005的高斯噪声2后的水印图像测试结果。剪切攻击性能测试实验如表2所示后2行,分别是图片上方剪切掉1/8和剪切掉1/4后的水印图像测试结果。
提出一种基于DCT变换的数字水印嵌入和提取算法。为了增加水印信号被破译的难度,先将待嵌入水印转换成对应的QR码并进行置乱操作,接着对载体图像进行分块,对每个分块分别进行DCT变换,并嵌入水印信息。实验结果表明,该算法对噪声和剪切等各种攻击具有较强的稳健性,具有一定的实用价值。
表2 各种攻击性能测试