基于果蝇优化算法和DWT-SVD的数字水印方法
2019-11-18杨雪霞
张 帅,贾 有,杨雪霞
(1.太原广播电视大学 教学处,太原 030024;2.太原科技大学 应用科学学院,太原 030024)
互联网的高速发展使得信息传播变得越来越便捷,与此同时,数字产品的非法传播、未授权使用已经严重侵害了版权所有者权益。数字水印技术将版权信息直接嵌入到数据本身,实现了数据的不可分割性与安全性,从而实现了版权保护的目的[1]。
数字水印技术分为两大类:空间域和变换域[2-3]。变换域的水印技术通过频域变换将水印信息嵌入到相应的频率系数中,该技术具有更好的不可见性和鲁棒性。李林静[4]等人提出了一种DWT-SVD并结合Arnold变换的水印算法,该方法具有较好的不可见性与鲁棒性,并且实现了水印信息的盲提取,但并未充分考虑水印嵌入强度,仅对未进行模拟攻击水印进行了鲁棒性分析。晁妍[5]等人提出了一种奇异值分解并结合粒子群优化算法的数字水印方案,通过粒子群算法对嵌入水印强度进行优化,平衡了水印算法的不可见性和鲁棒性,但本算法未能实现水印信息的盲提取。肖振久[6]等人提出了一种基于水印主成分并结合果蝇优化的水印嵌入方案,该优化算法在定义适应度函数时加入了权重因子,考虑了权值对水印鲁棒性的影响,但在仿真实验中并未对权值进行详细分析。Roy S[7]等人将彩色图像的RGB分量转化为YCbCr颜色分量,并对Y色度分量进行小波变换与奇异值分解,最终将水印信息嵌入到载体图像中。该算法未对水印图像进行置乱预处理,导致在剪切攻击时鲁棒性较差。齐向明[8]等人利用SIFT提取鲁棒性强的点作为特征点,并在此基础上完成了水印信息的嵌入,一定程度上增强了水印算法的鲁棒性,最终通过果蝇优化算法对嵌入水印强度进行了优化,但该算法没有考虑适应度函数是否为最优目标,且未能实现水印信息的盲提取。李少波、王林[9-10]等人对果蝇算法的原理、搜索策略、改进措施进行了综述,并与相关的智能优化算法进行了对比分析,肯定了果蝇算法在全局寻优、计算量、复杂度及精度方面的优势。
本文结合果蝇算法的寻优特点,提出了在小波变换域内结合奇异值分解的水印嵌入方案,并充分考虑了果蝇优化算法中适应度函数权重因子的重要性,提出了平衡水印算法鲁棒性与不可见性的最佳方案,并通过仿真实验对算法的性能进行了验证。
1 果蝇优化算法
果蝇优化算法是在仿真果蝇觅食行为过程中提出的全局优化算法,算法寻优的过程模拟了果蝇的嗅觉和视觉特性。该算法比同类智能算法在全局寻优、计算复杂度及精度方面表现出更好的性能。算法具体过程如下[11-13]:
(1)随机初始化果蝇群体(X_axis,Y_axis)
(2)果蝇个体通过嗅觉搜寻食物,并随机飞向一个方向和距离,具体表示如下:
(1)
(3)食物的位置最初是未知的,因此首先计算果蝇到原点的距离,由Dist表示,然后计算果蝇到食物的味道浓度判定值,该值为距离的倒数,由Si表示:
(2)
(3)
(4)根据味道浓度判定值计算出每一个果蝇此时的味道浓度,味道浓度的适应度函数表示为:
Smelli=Fuction(Si)
(4)
(5)找出果蝇群体中最大味道浓度值,具体表达式为:
[bestSmell,bestIndex]=max(Smelli)
(5)
(6)记录下此时的最佳味道浓度值以及对应的坐标,然后果蝇群利用视觉特性飞往该位置。
(6)
(7)根据设定的迭代次数,进入迭代寻优,重复执行2-5步,并判断味道浓度值是否优于前一步,若是,则执行第六步。
2 水印嵌入算法
2.1 水印的嵌入过程
本文选择512×512的Lena图像作为嵌入水印的图像,首先对载体图像进行小波分解,分解的级数越高,含水印载体图像的峰值信噪比越大,水印的稳定性也会越高,但水印的容量将会减少[14]。根据本算法的设计方案,对载体图像进行二级小波分解,并对LL2子带进行奇异值分解以提高嵌入水印的鲁棒性。由于奇异值分解过程具有较高的时间复杂度,为了提高运算效率,我们对LL2子带进行分块处理。本文对LL2子带按照4×4进行分块,然后在每一个分块的最大奇异值中嵌入一位水印信息,正好可以完成32×32的水印信息嵌入。并且按照如下规则实现了水印信息的嵌入与盲提取:Z=σ1modq
(7)
(8)
(9)
其中:q为关键参数,即水印嵌入强度,用来平衡嵌入水印的鲁棒性和载体图像的不可见性。σ1在本算法中表示LL2子带分块后每一个子块的最大奇异值,W(i,j)′为水印信息。
水印信息的提取即为嵌入水印算法的逆过程,具体提取规则如下:
(10)
经过二级小波分解的载体图像,其信号的主要能量将集中到LL2子带区域,具体结果如图1所示:
图1 原始载体图像与二级小波分解图像Fig.1 Original carrier image and two-level wavelet decomposition image
2.2 果蝇优化过程
作为一种智能优化算法,本文将利用果蝇优化算法优化嵌入水印强度,以平衡水印鲁棒性与图像不可见性之间的矛盾。不可见性的客观评价指标[15-16]常用峰值信噪比来表示,峰值信噪比越高则水印不可见性越好,通过仿真实验观察,当PSNR的值达到36 dB以上时,含水印图像具备了良好的不可见性。归一化值可用于评估提取水印的鲁棒性问题,当NC=1时,提取的水印信息与原始图像完全一致,鲁棒性最好,当NC值低于0.9时,提取水印信息将难以辨认。实验对提取水印的鲁棒性一般要求能达到0.95以上。
在果蝇优化算法中,适应度函数将根据具体应用及优化目标进行定义。本文根据影响水印嵌入强度的因素,进行了如下定义,具体公式如下:
(11)
本文结合小波变换与奇异值分解,利用果蝇优化算法并在适应度函数中引入了α、β作为权重因子,通过循环迭代获得适应度函数的最优参数,从而在最佳的适应度函数中获得嵌入水印强度的最优解。利用果蝇优化算法对嵌入水印强度的寻优过程如图2所示。
图2 果蝇优化算法寻优过程Fig.2 The Process of optimizing by Fruit Fly Optimization
3 实验与仿真
3.1 适应度函数及水印强度的最优解
本文载体图像为512×512的Lena图像,水印图像为32×32的“开”字。根据果蝇优化算法,初始化迭代次数与种群规模,选择种群规模为30,迭代次数为100.然后初始化适应度函数的参数α为0.01,迭代大小0.01,共循环100次。模拟攻击共采用了压缩、滤波、噪声、剪切、缩放等九种攻击类型。
通过仿真实验,对适应度参数α进行优化,九种攻击类型的强度分别选择:JEPG品质因素30、中值滤波窗口[3 3]、维纳滤波窗口[3 3]、高斯低通滤波模板[3 3]、椒盐噪声0.02、高斯噪声0.015、剪切100×100、旋转5°、缩放1/2。具体如图3、4所示。
图3 优化参数α与PSNR值Fig.3 Optimizing parametersαand PSNR values
图4 优化参数α与NC均值Fig.4 Optimizing parametersαand NC mean values
如图3与图4所示,随着α值的不断增大,含水印图像的峰值信噪比呈现递减,而NC均值呈现递增的现象,为了均衡水印算法的鲁棒性与不可见性,对实验结果进行分析,当α取值为0.67时,PSNR值为40.197 5,NC均值可达到0.986 9,此时可同时满足不可见性与鲁棒性的要求。
图5给出了适应度参数α值的变化与九种攻击后分别提取水印的NC值的对应关系,具体结果如下:
图5 优化参数α与九种NC具体值Fig.5 Optimizing parametersαand NC specific values
根据上述实验分析,α取值为0.67时,水印算法的不可见性与鲁棒性表现最好,此时对应的果蝇优化结果为0.641 0,即为嵌入水印强度。具体适应度参数α与果蝇优化结果的对应关系如图6所示。
图6 优化参数α与果蝇优化结果Fig.6 Optimizing parametersαand fruit fly values
图7 迭代次数与强度因子Fig.7 Iteration number and intensity factor
图7给出了当α取值为0.67时,果蝇优化算法经过100次迭代循环寻找最优解的过程。
3.2 仿真实验及模拟攻击
通过3.1节分析,当适应度函数参数α=0.67时,水印嵌入强度q=0.641 0.本节将改变模拟攻击的强度对嵌入水印算法的性能做进一步测试。首先对含水印图像进行JPEG压缩攻击,提取的水印图像与具体实验结果如图8、9所示:
图8 JPEG压缩攻击后提取水印图像Fig.8 Extracted watermarking image after JPEG compression
图9 JPEG压缩攻击后提取水印NC值Fig.9 Extracted NC value after JPEG compression attack
当JPEG压缩品质因素大于30时,水印信息可以被完整提取,当品质因素等于15时,提取水印有轻微损坏,品质因素为10时,NC值为0.861 1,水印质量出现明显下降,但依然可以辨认。
如图10、11所示,对含水印图像进行中值滤波时,当窗口大小从3×3变化到9×9,提取的水印质量逐渐下降,但NC值均保持在0.9以上。
图10 中值滤波后提取水印图像 Fig.10 Extracted watermarking image after median filtering
图11 中值滤波后提取水印NC值Fig.11 Extracted NC value after median filtering
图12 维纳滤波后提取水印图像Fig.12 Extracted watermarking image after wiener filtering
图13 维纳滤波后提取水印NC值Fig.13 Extracted NC value after wiener filtering
如图12、13所示,对含水印图像进行维纳滤波,窗口大小从3×3增大到9×9时,NC值依然能达到0.9736,表现出较强的鲁棒性。
如图14、15所示,对含水印图像进行椒盐噪声攻击,当强度小于0.01时,水印信息可以完整提取,当强度达到0.05时,提取水印的NC值保持在0.9以上,表现出较好的性能。
图14 椒盐噪声后提取水印图像Fig.14 Extracted watermarking image after salt and pepper noise
图15 椒盐噪声后提取水印NC值Fig.15 Extracted NC value after salt and pepper noise
如图16、17所示,高斯噪声对含水印图像进行攻击时,对载体图像的质量影响较大,出现了明显的噪点,当强度达到0.02时,含水印图像的PSNR已经下降到18.245 5,此时提取水印的NC值为0.884 4,依然可以辨认出水印信息。
图16 高斯噪声后提取水印图像Fig.16 Extracted watermarking image after Gauss noise
图17 高斯噪声后提取水印NC值Fig.17 Extraction of NC value of watermarking after Gauss noise
如图18、19所示,对含水印图像进行剪切攻击,剪切大小从左上角100×100像素开始仿真实验,当剪切面积达到400×400像素时,此时含水印图像的PSNR仅为8.252 7,提取水印的NC值为0.942 2,表现出较强的鲁棒性。
图18 剪切攻击提取水印图像与载体图像Fig.18 Extraction of watermarking image and carrier image by cutting attack
图19 剪切攻击提取水印NC值Fig.19 Cut attack extraction of watermark NC value
高斯低通滤波、旋转攻击、缩放攻击的结果如表1所示。
表1 高斯低通、旋转、缩放攻击后的NC值
3.3 对比试验分析
在本节中,本文实现的算法与采用DCT-SVD类似算法在提取水印的鲁棒性方面做进一步的对比分析,具体结果如表2所示。
如表2可知,本文所提出的算法在椒盐噪声、剪切攻击以及旋转攻击与文献[7-8]相比具有一定的优势,高斯噪声攻击的鲁棒性优于文献[7]但与文献[8]相比略有不足,在JPEG压缩与中值滤波方面具有明显的优势。通过对比分析,可以得出本算法在鲁棒性方面表现更为突出。
表2 相关参考文献与本算法鲁棒性对比
4 结论
提出了一种基于DWT-SVD并结合果蝇优化的盲水印算法。首先对载体图像进行小波变换与奇异值分解,然后应用果蝇优化算法对嵌入水印的强度进行了优化。本算法的创新之处在于,对果蝇算法的适应度函数给予了充分考虑,设定了可调参数,通过仿真实验,确定了最佳的适应度函数参数值,并在此基础上对嵌入水印的强度进行优化,最终得到了嵌入水印强度的最优解。本算法在保证含水印载体图像PSNR值大于40 dB的前提下,保证了提取水印的NC均值能达到0.98以上,并通过多种强度的模拟攻击以及相关文献的实验数据对本算法的性能进行了分析,实验结果表明本算法保证含水印图像不可见性的前提下表现出了更强的鲁棒性。