APP下载

一种基于数字图像嵌入式小波编码的水印算法

2016-07-09李楸桐黄平

广东通信技术 2016年4期
关键词:数字水印小波变换

[李楸桐 黄平]



一种基于数字图像嵌入式小波编码的水印算法

[李楸桐黄平]

摘要在图像嵌入式小波编码算法(EZW、SPIHT、JPEG2000d等)的基础上提出了一种新颖的数字图像水印算法。该算法把水印比特的嵌入与图像小波编码过程中的比特平面编码有机地相结合,水印的检测或提取具有分级渐进特性,检测的效率高,实验表明该算法有很好的不可见性和鲁棒性,从而具有一定的理论与应用价值。

关键词:小波变换 数字水印 人类视觉系统 不可见性 嵌入式零树小波

李楸桐

成都东软学院。

黄平

成都东软学院。

1 图像小波编码技术

常见的图像小波编码算法是指Shapiro提出的嵌入式小波编码算法[1](EZW),Said和Parlman提出的SPIHT算法[2]以及JPEG2000[3]等编码算法,近年来,它们已得到实际的应用,具有嵌入式传输特性,嵌入式特性指的是对重要的图像或视频信息优先编码,并将压缩后的结果放在码流的初始部分,然后依次按照信息的重要程度放置码流的其他部分,这样,低码率的码流就嵌入在高码率的码流中。因而支持渐进式传输,可以在任意点停止解码,能严格满足目标码率或目标失真度的要求。

算法EZW和SPIHT编码中主要采用零树与逐次逼近量化(SAQ)技术。在EZW编码算法中,逐次逼近量化方法为:在编码过程中采用一个阈值序列(T0,T1,…,TK−1)来依次确定重要系数(大于阈值的小波系数)和不重要系数(小于阈值的小波系数),各个阈值满足条件:为小波变换系数中的最大幅值,SAQ在量化过程中以2的倍数不断细化阈值,以在不同的比特平面上进行编码。同时始终保持着两个列表:主表和副表,主表包含重要系数的映射即记录重要系数的幅值,副表主要是对已发现的重要系数进行更细化的表示。编码首先给出初始阈值T0,进行第一次主扫描,扫描到重要系数则将其幅值加到副表中,然后将该系数所在的位置零,接下来进行第一次副扫描,细化重要系数的表示,更新阈值,进行新一轮的主扫描,对上一轮已编码的重要系数不再扫描。假设当前阈值为Tk,主扫描后已找到的重要系数的幅值在之间,此时解码器可能用作为它的重构值,副扫描则以为界,将区间再分为两部分,用1位信息表示一个值处于区间的上部分,用另一位信息表示一个值处于区间的下部分],上部分的重构值为,下部分的重构值为

SPIHT编码算法是EZW算法的扩展,其只采用2的指数作为阈值,起始阈值取为T0=2n,n=lb|Xmax|」,Xmax是小波变换系数中的最大幅值。一遍扫描完成后,n减1,相当于阈值减半,进行下一遍扫描,经过多次扫描,重要系数是小波变换系数整数部分的二进制表示,这显然是一种典型的比特平面编码。

JPEG2000编码过程与EZW和SPIHT不同,为了减少表示小波系数的比特数,算法中采用了量化技术。对子带k的系数fk(i,j )使用式(1)量化为值qk(i,j ):

Rk是子带k的标定动态范围,而k和µk是分配给子带系数的指数和尾数的比特数。对于无误差编码,µk=0,Rk=k,∆k=1;而对于有误差编码,用式(2)给出动态范围Rk。

式中,RI为采样的比特精度,gaink为子带增益,µk、k用其它方法导出。

最后对系数比特建模,算术编码,比特流分层和分组。每个变换块分量的子带系数排列在称为码块的矩形中,这个码块一次对一个位平面进行独立编码,从带有非零元素的最高有效位平面开始,每个位平面进行3次处理,位平面的每比特仅在3次处理中的一次编码。

式中,Nk(i,j )为构成解码对象的位平面数,包括进行位平面数据截断时的解码对象,MSBl(k,i,j)为子带k的变换系数第l个MSB(l=1,2,…,Nk(i,j)。

可见,JPEG2000的编码器实质上也是位平面编码器。

2 水印嵌入

既然常见的图像小波编码是基于比特平面的,如果设计的水印算法能与比特平面编码相结合,则算法不仅可以与嵌入式小波编码技术相兼容,而且水印信号与载体图像一样具有渐进式重构的特性。因此作如下考虑:水印比特1嵌入小波域某位系数后,该系数在临界可见误差门限内变为重要系数,即在比特平面中该位为“1”;水印比特0嵌入某位后,该系数在临界可见误差门限内变为不重要系数,即在比特平面中该位为“0”,这样,水印比特便在位平面编码中完整地保留下来。选择水印比特的嵌入位置(对于JPEG2000的有误差编码,应在量化后选择)是该算法的关键部分,分两步进行:

步骤一、设图像小波变换后的系数为f (i,j),逐层叠代选择小波系数的迭代次数以T0= 2n′为初始阈值逐层折半递减扫描,计算以阈值和为中心的区间(即区间,不同的阈值的邻域不重叠)内的每个重要系数和不重要系数的临界可见误差门限,邻域半径Rk由Tk的值和嵌入水印的量确定。设误差门限为JNDi,j(i,j是系数的位置索引),取每次迭代扫描的邻域内所有小波系数的临界可见误差门限为JNDk=min(JNDi,j, Rk),不同的迭代层的误差门限是不同的。

步骤二、重复步骤一中的按初始阈值逐层折半递减扫描的操作,选择区间(Tk−JNDk/2Tk+JNDk/2)和(−Tk+JNDk/2−Tk−JNDk/2)区间长度为JNDk保证了含水印图像的不可感知性)内的每个重要系数和不重要系数的位置索引及其它相关信息并组成一维数组S:

其中t、i、j是系数的位置索引,k =1,2,…,n',设水印比特总数为L,将数组S的前L个元素、标识符水印(二维二值水印信号)的维数及混沌映射初值x0(式(5)中)经加密处理后作为在解码过程中提取水印的密钥K%发送到水印检测器(在解码过程中提取水印时使用)。

对于二维标识符水印信号,嵌入前对水印作混沌置乱处理,设水印的高和宽分别为m、n,用Logistic映射[4][5]把水印按行转化为一维水印序列w,设x0是映射初值。

其中,i=1,2,…,m,j=1,2,…,n,[ ]是取整运算,xk• mn是水印序列w中的位置索引,c是分枝参数。

在数组S的前L个元素所表示的小波系数位按式(6)嵌入水印比特:

sign是小波系数的符号,由于嵌入水印后处于边界值的小波系数易受影响,其波动性直接影响了算法的稳健性,应作如下调整:若加水印的小波系数与边界Tk、Tk+JNDk/2、Tk−JNDk/2之间的距离小于一定值α(α为较小的正值)时,将该系数值相应的调整为与Tk的距离为JNDk/4时的值:

算法的具体步骤为:

(1)将图像f进行L级小波变换,得到3*L+1个子带,算出初始阈值T0,逐层折半递减扫描得出每层选出的小波系数的临界可见误差门限JNDk。

(2)逐层折半递减扫描,由(4)式选择重要小波系数和不重要小波系数的位置索引组成一维数组S。

(3)对于二维水印图像,则用混沌置乱(式(5))将其并转化为一维水印序列w。

(4)由嵌入算法(6)式嵌入水印比特。

(5)由调整算法(7)式调整处于边界值的小波系数。

(6)小波反变换得到含水印图像f'。

3 水印提取与检测

水印的提取可以在图像小波编码解码过程中和图像数据完全恢复后进行。

(1)在解码过程中提取水印

水印比特的提取过程与用混沌置乱将其转换成二维水印的过程并行进行。由(10)式计算已恢复水印与原始水印的相似度,大于某一定值则认为检测到了水印的存在,可随时停止水印的提取。

(2)非解码过程中提取水印

式中,i=1,2,…。

4 伪随机水印实验

实验的样本空间是500个在[1,-1]内长度为1024的随机序列,使用512×512×8的Lena512灰度图像作为原始图像来进行测试,根据上一节中提出的水印算法进行水印嵌入,得到含水印的图像,如图2所示,嵌入水印后的结果图像有非常好的视觉效应,峰值信噪比(PSNR=41.2469)比较高。然后我们对含水印图像进行了各种攻击实验,相关检测结果如图3~12所示。

图1 原始图像

图2 含水印图像

图3 未遭受攻击水印检测输出,NC=1

4.1实验1小波编码实验

仿真实验时首先将含水印图像输入图像小波编解码器,这个编解码器是用小波基Db4进行4级分解,然后用SPIHT算法实现的。在编解码器输出端解码恢复原始图像的同时提取水印,可以控制编解码器使其在编码端对含水印图像进行完全编码,在解码端以任意码率解码,含水印图像被渐进式地重建,因而水印信号能够被渐进式地恢复,实验中的码率控制为每位用0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1、1.5比特解码时,用上节介绍的水印提取算法检测水印,随机水印信号能较好地被检测到,图4(a)(b)是在每位比特Q=0.2(压缩比为40:1)编码下的检测结果,图像质量较差(PSNR= 27.7962),但实验中仍能检测到水印的存在(NC= 0.5959)。图5(a)(b)是在每位比特Q=1(压缩比为8:1)编码下的检测结果,图像质量较好(PSNR= 36.6230),实验中水印信号能没有误差损失地检测到(NC=1)。

4.2实验2JPEG2000编码实验

图4 (a) 压缩图像

图4(b) 检测结果

图5 (a) 压缩图像

图5(b) 检测结果

在JPEG2000编码的仿真实验中,采用LuraTech 的LuraWaveSmartCompress来对含水印图像(如图2)进行JPEG2000编码,LuraWaveSmartCompress是LuraTech根据2000年3月份的JPEG2000草案编写的JPEG2000压缩编码格式软件。本文对含水印图像分别在每位比特0.2(压缩比为1:40)和4(压缩比为1:2)的码率控制下进行JPEG2000编码,相应的解码重构图像如图6(a)(PSNR= 31.5285)和如图7(a)(PSNR= 40.5823),数字水印图像的视觉效果保持良好;检测器输出如图6(b)(NC= 0.6404)和如图7(b)(NC= 0.9925)。

图6 (a) 压缩图像

图6 (b) 检测结果

图7 (a) 压缩图像

图7(b) 检测结果

4.3实验3JPEG压缩实验

图8 (a) 压缩图像

图8(b) 检测结果

JPEG压缩是很常见的一类攻击。图8给出了品质因子为5的情况下的检测性能。从图8(a)可以看出,压缩后的水印图像已经存在明显的方块效应(PSNR= 27.2910),但从图8 (b)的检测结果可以看出,此时仍然有水印序列存在,相似度CN=0.6125,说明算法在一般情况下能很好的抵抗JPEG有损压缩。

4.4实验4噪声实验

实验中向加水印图像加入强度为0.3的椒盐噪声,如图9(a)所示,图像质量已经非常差(PSNR= 10.6853),实验中仍能检测到较强的水印信号,水印检测器输出如图9(b)所示,CN= 0.6020。

图9 (a) 椒盐噪声攻击图像

图9(b) 检测器结果

(b) 检测器结果

在数字图像的传输过程中,常被加性高斯噪声干扰。图10给出了加入均值为0,方差为0.3的高斯噪声的情况下的检测性能。从图10 (a).可以看出,加入噪声后的水印图像已经存在明显的失真(PSNR= 8.7015),但从图10(b)的检测结果可以看出,此时仍然可以完全正确地检测出水印序列来,CN= 0.6052。

图10 (a) 高斯噪声攻击图像

图10(b) 检测器结果

4.5实验5 滤波实验

对含水印图像进行窗口尺寸为7×7的中值滤波攻击实验,如图11(a)所示,PSNR= 28.9242,水印检测器输出如图11(b)所示,CN= 0.6228。

图11 (a) 中值滤波攻击图像

图11(b) 检测器结果

4.6实验6剪切实验

对含水印图像进行任意剪切后测试其鲁棒性。把剪切后的待检图像作为检测器的输入,进行水印检测和解码。如图12(a)(c)所示,PSNR= 10.7517和11.3606,水印检测器输出如图12(b)(d)所示,CN= 0.6145和0.7081。

图12 (a) 剪切攻击图像

图12(b) 检测器结果

图12 (c) 剪切噪声攻击图像

图12(d) 检测器结果

5 图像水印实验

实验中仍采用512×512×8的Lena512灰度图像作为测试图像,水印图像是大小为24×150的二值图像。对原始图像进行4级小波正变换,嵌入水印后的图像如图13所示 (PSNR=36.6087),在没有任何攻击的情况下提取的水印如图14所示(CN=1)。相关实验结果如图16、表1、表2、表3所示。

图13 原始图像

图14 含水印图像

图15 图像水印

5.1实验一 质量可扩展性实验

仿真实验时首先将含水印图像输入图像小波编解码器,这个编解码器与伪随机水印实验中使用的编解码器相同。实验中的码率控制为每位用0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1、1.5比特解码时,用上节介绍的水印提取算法提取水印,水印信号能较好地被提取出来,图16是在码率控制为每位比特Q=0.3、0.5、0.7、0.9、1、1.5(压缩比从80:3到16:3)下渐进式重建的含水印图像和从中提取的水印图像。

图16 渐进式恢复的部分水印图像

5.2实验二 JPEG2000编码实验

在JPEG2000编码的实验中,仍采用LuraTech的LuraWaveSmartCompress来对含水印图像(如图14)进行JPEG2000编码,本文对含水印图像在每位比特0.2、0.4、0.6、0.8、1、1.2(压缩比最高为1:40,最低为1:7)的码率控制下进行JPEG2000编码并解码,结果如表1所示。

表1 JPEG2000实验结果

5.3实验三 其它攻击实验

实验结果表明:算法对JPEG有损压缩、中值滤波、剪接、噪声等攻击有较强的抵抗性。对原始含水印图像进行强度较大的攻击比如品质因子为10的JPEG有损压缩,75%的剪切等后,虽图像质量严重下降,但还是可以检测到质量较好的水印图像,尤其对高斯噪声的攻击表现出优秀的性能,即使噪声强度达到0.1时,恢复的水印与原始水印的相似度也达到0.55,部分仿真实验结果如表2所示,恢复的部分水印图像如表3所示。

表2 部分攻击实验结果

表3 部分攻击下提取的水印图像

6 结论

本文首先研究了图像嵌入式小波编码算法(EZW、SPIHT、JPEG2000),然后在此基础上从实际应用出发,提出了一种与这些编码技术相结合的水印算法,该算法把水印比特的嵌入与这些编码过程中的比特平面编码有机地相结合,从而水印信号的检测或提取具有渐进式特征,算法具有一定的灵活性,能实现水印渐进式的提取以适应网络带宽的不稳定性,提取或检测的水印信号具有质量可扩展性。

参考文献

1Shapiro JM.Embedded Image Coding Using Zero Trees of Wavelet Coefficients.IEEE Tran on Signal Processing.1993.41 (12):3445-3462

2A said and WA Pearlman.A new,fast,and efficient image code based on set partitioning in hierarchical trees,IEEE Transactions on Circuits and Systems for Video Technology,1996,6(3):243-250

3魏江力,柏正尧,等.JPEG2000图像压缩基础、标准和实践.DavidS.Taubman MichaelW.Marcellin著.人民邮电出版社.2004,pp:172-216

4向华,曹汉强,等.一种基于混沌调制的零水印法.中国图像图形学报.2006,11(5)

5Watson a B YANG GLORIA Y, SODOM ON J a et al Visibility of wavelet quantization noise.IEEE Transactions on Image Processing 1997. 6(8):1165-1175

DOI:10.3969/j.issn.1006-6403.2016.04.014

收稿日期:(2016-03-10)

猜你喜欢

数字水印小波变换
基于遗传优化的自然语言文本数字水印方法
基于网屏编码的数字水印技术
基于双树四元数小波变换的图像降噪增强
MATLAB在《数字图像处理》课程中的辅助教学
基于FPGA的数字水印提取系统设计研究
基于互信息和小波变换的图像配准的研究
心电信号压缩方法研究
基于数字水印的人脸与声纹融合识别算法
多重加密的数字水印生成方法
基于矩阵分解和混沌置乱的数字水印算法