孙晓霞,佟国香
(上海理工大学 光电信息与计算机工程学院,上海 200093)
数字水印技术是一种应用计算机算法将保护信息嵌入载体文件的技术,对其起到版权保护及认证的作用.随着数字信息时代的发展,数字作品的版权保护问题引起越来越多的关注.近年来,许多国内外的专家学者在数字水印领域做出了自己的贡献,这些贡献主要集中在图像水印,音频水印,视频水印等,其中研究最广泛的是图像数字水印.
经典的图像数字水印算法包括空域数字水印算法和变换域数字水印算法[1].常见的空域算法有LSB算法[2]、Patchwork算法、基于直方图的算法等,空域水印算法快捷简单、时间复杂度低,但是鲁棒性和透明性较差.变换域算法将载体图像进行相应的频域变换,通过修改频域系数将水印嵌入.与空域算法相比,变换域算法更复杂,但是不可见性和鲁棒性也更高,是目前常用的数字水印算法.常见的变换域算法有离散余弦变换(DCT)[3]、离散傅里叶变换(DFT)和离散小波变换(DWT)[4]等.
基于DCT和分形编码的数字图像水印方法[5]实现了双重加密,改进了传统的DCT方法,提高了计算效率,但其抵抗几何攻击的能力较弱.与DCT相比,小波变换抵抗几何攻击的能力更强,文献[6]提出了一种基于广义卷积定理的线性正则小波变换(LCWT)的水印算法,算法将LCWT和QR分解相结合,提供了更大的灵活性,但其水印的不可见性一般.
基于变换域的方法虽然可以提高鲁棒性,但其抵抗旋转缩放等攻击的能力整体较弱,因此一种更加稳定的变换方法奇异值分解(SVD)被引入数字水印算法.陈青等[7]将整数小波系数与SVD相结合,提出了基于模运算的SVD小波系数算法,该方法对一般的几何攻击尤其是旋转攻击有较强的鲁棒性,但其算法复杂度较高.Makbol等[8]将SVD和DWT相结合选取特定块区域嵌入水印,实验结果表明算法对常见的图像处理攻击具有高透明性和高鲁棒性,不足之处在于算法效率不够高.
与一般图像不同,医学图像的图像特征通常具有重要的意义和价值,因此很多针对图像特征的生理模型算法也逐渐被提出.文献[9]利用指纹生物识别技术进行身份验证,利用加密过程进行保密,并利用可逆水印实现完整性,提出了一种基于生物特征的有效医学图像水印的电子水印技术,但其只是针对特定领域,不适用于所有图像.
上述方法都是数字水印算法的传统方法,随着机器学习的发展,许多基于机器学习的算法被应用于图像数字水印算法领域.基于机器学习的算法可以解决参数优化和水印盲提取两个问题[10].文献[11]将DWT和DCT相结合,将SVM回归模型用于几何畸变校正,提高了算法的鲁棒性,但是算法的复杂度很高.基于机器学习的水印算法虽然在不同程度上实现了更好的鲁棒性与透明性,但是在参数优化以及算法复杂度等方面仍然存在很大的提升空间.
为了解决目前水印算法存在的问题,本文将DWT和SVD相结合,提出了基于机器学习的图像数字水印算法.首先将载体图像进行一级离散小波变换,选取低频子带进行分块处理,再对分块进行奇异值分解,并提取特征向量来训练LS-SVM分类器.训练好的LS-SVM用于自适应最大水印嵌入强度的计算以及水印的盲提取.
将水印进行加密可以提高算法保密性,本文采用混沌加密算法对水印进行加密,混沌加密算法具有伪随机性、便利性和对初值敏感等特性,在水印加密中被广泛使用[12].其逻辑方程如公式(1)所示:
xn+1=rxn(1-xn) (r>0,0 (1) 式中:xn为自变量,r为控制参数,r取值不同时,数列{xn}具有不同的敛散性,当r趋近4时,{xn}呈现无规则化,出现混沌状态. 离散小波变换(DWT)[13]具有多分辨率和多尺度的特性,更加符合人眼视觉系统(HVS)的特点,抵抗压缩攻击的能力更强.将载体图像进行一级离散小波变换得到LL,HL,LH,HH四个子带图像,LL子带包含了图像的主要信息,其他三个子带代表了图像的细节和边缘信息,故选取LL子带进行分块处理.离散小波变换的公式如(2)所示: (2) 式中:α为尺度,τ为平移量. 奇异值分解稳定性好,具有旋转和比例不变性.SVD基于特征值和特征向量进行变换,可以将非对称矩阵进行对角化,不仅限于方阵[14].SVD公式如(3)所示: (3) 式中:A为n×n的矩阵,U,V为正交特征向量矩阵,S为奇异值矩阵.S的奇异值作为样本特征来训练LS-SVM. 水印嵌入强度指水印嵌入过程中对载体图像的修改程度[15].水印嵌入强度越大,水印算法的鲁棒性越强,透明性越差.本文将SVD的奇异值作为特征向量,与图像子块中心像素的最大水印嵌入强度组成样本来训练LS-SVM分类器,从而实现自适应的最大水印嵌入强度算法. LS-SVM是支持向量机(SVM)的改进.LS-SVM将SVM的二次规划问题变成了求解线性方程组的问题,降低了算法的复杂度,适用性更强[16].本文利用LS-SVM来求解最大水印嵌入强度和提取水印.训练LS-SVM的特征向量为SVD的奇异值向量.在求解自适应最大水印嵌入强度时,样本由特征向量和图像子块中心像素对应的最大水印嵌入强度组成;在提取水印时,样本由带水印载体图像和水印对应的样本标签值组成. 本文水印算法分为自适应最大水印嵌入强度、水印嵌入、LS-SVM分类器的训练和水印提取四部分.水印嵌入前先将其进行混沌加密,利用LS-SVM分类器得到各分块图像的自适应最大水印嵌入强度.水印嵌入时,先对载体图像进行一级离散小波变换,选取LL子带图像将其进行分块处理,再对各分块进行奇异值分解后嵌入加密水印.最后利用训练好的LS-SVM分类器对奇异值向量的标签进行估计来实现水印的盲提取.算法的流程图如图1所示. 图1 基于机器学习的数字水印算法流程图Fig.1 Flow chart of the digital watermarking algorithm based on machine learning 自适应最大水印嵌入强度算法根据不同图像子块的相关特征来计算对应的最大水印嵌入强度,利用LS-SVM分类器进行预测分类.本文将像素灰度值归一化处理,故水印嵌入强度范围为[0,1],设定步长为0.01进行分析.具体实现步骤如下: Step1.对64×64载体图像A进行一级小波变换,选取LL子带对其进行4×4分块处理. Step3.将每个Sij矩阵的对角线元素作为Aij的特征向量Vij=(σ1,σ2,σ3,σ4). Step4.初始化水印嵌入强度α与结构相似度(SSIM)判断阈值β,水印嵌入强度设定为[0.3,1],α初始化为1,β设定为0.90. (4) (5) (6) (7) (8) Step9.将特征向量Vij与最大水印嵌入强度αij组成样本{Vij,αij},生成样本集合An.从中随机选取80%的样本生成训练样本集ATrain,剩余20%组成测试样本集ATest.利用ATrain训练LS-SVM,利用ATest对训练好的模型进行测试.输入特征向量可得最大水印嵌入强度. 选择512×512的图像作为载体,64×64的图像作为水印.首先将载体图像进行一级离散小波变换,选取LL子带将其进行4×4分块处理,然后将各分块进行奇异值分解,通过自适应最大水印嵌入强度算法计算各分块中心像素对应的最大嵌入强度,最后嵌入混沌加密的水印.具体步骤如下: Step1.对载体图像I进行一级小波变换,将LL子带进行4×4分块,并记为LLij,其中i≤N,j≤N,N为分块的个数. Step2.对每一个LLij做SVD变换,即LLij=UijSijVijT. Step3.选取Sij的主对角线元素作为LLij的特征向量Vij=(σ1,σ2,σ3,σ4). Step4.根据自适应最大水印嵌入强度算法,输入特征向量Vij得到图像子块中心像素的水印强度αij,按照按行优先原则,对特征向量的σ2进行修改以嵌入水印信息,具体操作如公式(9)所示: (9) Step3.选取S分量中的对角线向量作为特征向量Vij=(σ1,σ2,σ3,σ4)共8组. Step4.由水印图像Wij映射得到样本集标签,如式(10)所示: (10) Step6.由样本集Trainijk训练可得LS-SVM分类器. 水印提取为水印嵌入的逆过程.首先对嵌入水印后的载体图像进行一级小波变换,然后对LL子带按照4×4进行分块后进行SVD变换.利用训练好的LS-SVM分类器提取水印.具体步骤如下: (11) 4.1.1 透明性参数 选取原始载体图像和含水印载体图像的平均结构相似度(MSSIM)[17]与峰值信噪比(PSNR)[18]来评价水印算法的透明性.MSSIM和PSNR均是越大代表水印透明性越好.PSNR反映了图像数据变化的统计平均量,PSNR≥40dB时人眼无法察觉图像是否有改动.MSSIM与PSNR的计算公式分别如式(12)和式(13)所示: (12) 式中,I为原始载体图像,I′为含水印载体图像,N为图像子块个数. (13) 式中,MSE为I与I′的平均绝对误差[18],公式如(14)所示: (14) 式中,L和K分别代表载体图像的长和宽. 4.1.2 鲁棒性参数 鲁棒性反映水印算法的抗攻击能力,选取原始水印和提取水印的相似度系数(NC)[19]和比特错误率(BER)[20]对算法的鲁棒性进行评价.BER反映了提取的水印信息与原始水印信息之间的差异,BER越小,算法鲁棒性越强.NC代表了原始水印与提取水印的相似度,NC越大鲁棒性越好.BER和NC的公式分别如式(15)和式(16)所示: (15) 式中,WL为水印信息长度. (16) 其中W为原始水印,W′为提取水印,nL、nK是水印图像长与宽. 实验基于python3.6在4GB RAM、1.6GHz、内核i5处理器的PC机进行来评估本文算法的性能.采用3张512×512的标准测试图像为载体图像,如图2所示;采用64×64的二值图像为水印图像,如图4(a)所示.图3为本文算法嵌入水印后的载体图像,图4(b)和图4(c)分别为加密水印和无攻击时提取出的水印图像.为了进一步评估本文算法性能,与其他3个算法进行了实验对比. 图4 不同阶段的水印图像Fig.4 Watermark images in different stages 4.2.1 透明性测试 选取图2的载体图像用于透明性测试,在未受攻击的情况下,4种算法的透明性参数MSSIM和PSNR如表1和表2所示.图5为MSSIM和PSNR的对比图. 图5 透明性参数对比图Fig.5 Comparison of transparency parameters 表1 4种算法的MSSIM对比Table 1 Comparison of MSSIM among four algorithms 表2 4种算法的PSNR对比Table 2 Comparison of PSNR among four algorithms 4.2.2 鲁棒性测试 选取Lena图像用于鲁棒性测试,对图像添加攻击后提取水印,4种算法的鲁棒性参数BER和NC如表3和表4所示. 表3 Lena图像的BER对比Table 3 BER comparison of Lena image 表4 Lena图像的NC对比Table 4 NC comparison of Lena image 图6给出了BER和NC的对比图.本文选取7种攻击方法,分别为高斯噪声0.01、椒盐噪声0.01、剪切(左上1/8)、中值滤波3×3、逆时针旋转5°、JPEG压缩70和缩放0.5. 图6 鲁棒性参数对比图Fig.6 Comparison of robustness parameters 4.2.3 算法复杂度测试 选取Lena图像进行算法复杂度测试,将512×512Lena图像嵌入和提取水印整个过程的运行时间作为判定标准.4个算法的运行时间对比如表5所示. 表5 4个算法的运行时间比较Table 5 Comparison of running time among four algorithms 由表1和表2可知,本文算法具有很好的透明性,未受攻击时,透明性参数MSSIM大于0.98,PSNR达到60dB以上.由表3和表4可知,本文算法也具有很高的鲁棒性.在受到不同的攻击时,除了中值滤波,鲁棒性参数BER均小于0.02,NC均大于0.95.由表5可以看出,本文的算法复杂度也占有一定的优势,作为机器学习算法仍然保持较高的运行效率.本文的自适应最大水印嵌入强度算法,在保证水印算法透明性的前提下尽可能增加水印的嵌入强度,提高了算法的鲁棒性. 与其他3个算法相比,本文算法分别表现出了一定的优势.由图5可以看出,本文算法的透明性明显优于文献[21]和文献[23]的算法.由图6可知,除了中值滤波,本文算法抵抗常规攻击的能力较高且保持均衡,适用性较广.在面对剪切、缩放等几何攻击时,本文算法鲁棒性优于其他3个算法.在算法复杂度方面,本文算法优于文献[21]和[22]的算法.文献[22]虽然透明性优于本文算法,但本文算法的透明性早已超过PSNR=40dB的人眼可辨识范围,而且文献[22]的算法面对高斯噪声时鲁棒性不是很强.另外,本文的自适应水印嵌入强度均大于其他3个算法,这是本文的一大优势.综合来看,本文算法兼顾透明性、鲁棒性、嵌入强度以及时间复杂度,性能最佳. 本文算法也有不足之处,如抵抗中值滤波攻击时鲁棒性较弱,有待于提高. 本文提出了一种利用机器学习方法的图像数字水印算法,算法包括LS-SVM分类器的训练以及水印的嵌入和提取.算法将DWT和SVD相结合嵌入水印,将LS-SVM分类器用于自适应最大水印嵌入强度算法和水印的盲提取.最大水印嵌入强度算法使得水印算法保证透明性的前提下尽可能地提高鲁棒性.实验证明,在水印嵌入强度范围为[0.3,1]的条件下,本文算法的透明性实现了最佳PSNR=63.71dB的效果,针对JPEG压缩、高斯噪声,尤其是旋转、剪切和缩放等常规攻击手段,算法能保持较强的鲁棒性. 本文算法针对中值滤波攻击时鲁棒性有待于提高,在未来的研究中,可针对中值滤波攻击进行算法改进,通过不断优化LS-SVM分类器参数来获得更高的透明性与鲁棒性.今后的研究也可以考虑尝试其他机器学习算法与传统数字水印算法的结合,使其性能更佳,适用范围更广.2.2 离散小波变换
2.3 奇异值分解(SVD)
2.4 最大水印嵌入强度
2.5 LS-SVM分类器
3 基于机器学习的数字水印算法
3.1 自适应最大水印嵌入强度
3.2 水印的嵌入
3.3 LS-SVM分类器的训练
3.4 水印的提取
4 实验分析
4.1 性能参数
4.2 实验仿真
5 结论与展望