张维纬,张茹,刘建毅,钮心忻,杨义先
(1. 北京邮电大学 信息安全中心,北京 100876;2. 北京邮电大学 灾备技术国家工程实验室,北京100876;3. 信息网络安全公安部重点实验室(公安部第三研究所),上海 201204)
近年来随着大量的视频消费产品的出现,使得视频水印作为数字产品版权保护和内容认证的市场需求更为迫切。数字视频水印技术由于其自身的研究价值和潜在的经济利益而倍受关注[1]。
数字视频水印算法很多,可以分为2大类:基于原始视频的水印算法和基于压缩域的视频水印算法[2,3]。由于视频数据量大,通常要以压缩的形式存储和传输。近年来基于压缩域的视频水印算法是研究的热点,特别是针对基于MPEG-2和MPEG-4的视频水印算法[4~6]研究较多。
作为视频编解码领域的最新标准,H.264的编码效率比以往的标准有了很大的提高[7]。由于其优异的压缩性能将在数字电视广播、视频实时通信、网络视频流媒体传递以及多媒体短信等各个方面发挥重要作用[8]。因此,研究基于H.264为压缩编码标准的视频水印技术显得十分迫切[9]。近年有不少学者在基于 H.264的视频水印算法方面做了研究。在已提出的基于H.264的视频水印算法中,针对不同的应用场合,通常选择在H.264压缩后的码流、运动矢量或I帧的DCT域中嵌入水印。
Zou等[10]提出通过修改压缩后CAVLC码流中的句法元素嵌入水印的算法。Nguyen等[11]提出一种在编码后的码流中MVD(motion vector difference)字段嵌入水印的算法。这类算法可以省去全部解码和编码的过程,从而大大减少计算量,但是这类算法稳健性较差。针对视频点播等实时性要求高的场合,在码流里嵌入水印是一种比较好的解决方案。
Qiu等[12]提出了一种基于 H.264的双水印方案。为了实现版权保护和内容完整性认证的双重目的,该方案在视频中同时嵌入顽健水印和脆弱水印,顽健水印嵌在I帧DCT变换域的系数上,脆弱水印嵌在P帧运动矢量上。
在已存在的基于H.264的视频顽健算法中大多将顽健水印嵌在采用帧内预测方式的I宏块残余数据的 DCT系数上。Zhang等[13]提出了基于 H.264的视频顽健水印算法,该算法将灰度水印图像进行压缩,然后对压缩后的二值序列进行扩频处理,最后将扩频后的水印信息嵌在 DCT域的某个对角线系数上。该方案在低比特率情况下(不高于1Mbit/s)嵌入水印,水印具有一定的顽健性,但算法较复杂,水印扩频的程度和其他一些参数需要根据实验来确定。Noorkami等[14]提出将水印嵌在采用 4×4帧内预测模式的I宏块的AC系数上。其首先根据I宏块的16个DC系数的特征产生一个公钥,再与一个嵌入者提供的私钥相结合决定该I宏块中水印嵌入的位置。该方案具有一定的安全性,可以抵抗共谋攻击,但算法的顽健性较差,并且根据密钥选择嵌入位置,也对水印的不可见性产生影响。他们提出的另一个算法[15]通过公式推导,把 Watson[16]感知模型应用于4×4的DCT系数块中。并把得到的4×4DCT 系数的 JND(just noticeable difference)作为嵌入水印的 DCT系数的量化参数。该算法具有较好的顽健性,但缺陷是在解码端提取水印时需要编码端发送的水印位置表,不易于实际应用。Mansouri等[17]提出的算法充分考虑人眼的视觉特性,在空间上,选择H.264编码过程中帧内预测编码的4×4亮度子块嵌入水印,这是由于4×4亮度子块预测模式对应的是纹理块,而16×16亮度块预测模式对应的是平坦区域;在时间上,对当前的4×4亮度子块根据先前对应子块的运动矢量定义活性因子,根据这个因子判断当前4×4亮度子块是否是时间上运动的块。再通过定义一个优先矩阵用3个参数控制嵌入水印对码率、视频质量的影响及增加水印的安全性。该算法从时间、空间上充分考虑水印的嵌入位置,水印的不可见性和顽健性达到较好地折中。但算法复杂,且一旦受到攻击造成编码模式的改变,例如帧内预测模式由4×4变成16×16,则可能导致嵌入水印与提取水印的不同步。Kim等[9]通过实验说明了即使在同样条件下,重编码也会使H.264的编码模式和残余DCT系数产生改变。
上述提出的基于 H.264/AVC的视频顽健水印算法的不足之处如下。1)没有充分考虑人眼的视觉特性,水印的顽健性较差。文献[12~14]的算法是在宏块中通过改变一个量化后的 DCT系数来达到嵌入水印的目的,虽然嵌入水印后,对视频质量的影响较小,但其水印顽健性较差,其原因是由于H.264采用许多先进的编码技术,压缩性能大大提高。如图1所示为一个H.264/AVC编码过程中产生的残差帧。从图1中可以看出,残差帧大部分的像素值很小,经过DCT变换和量化后,大部分的DCT系数为零。算法也未充分考虑人眼的视觉特性,在不同的块中嵌入相同强度的水印信息。2)采用人眼感知模型,但计算代价高,不易于实际应用。文献[15,17]水印顽健性较好,但算法复杂,且提取水印时需要编码端发送水印的位置信息,否则经攻击后可能使嵌入的水印和提取的水印不同步,导致水印失效。针对以上算法的不足,本文提出一种基于H.264压缩编码标准的低复杂度视频顽健水印算法,针对水印的顽健性较差的问题,提出在视频数据压缩编码过程中利用计算复杂低的能量差将顽健水印嵌在 I帧的DCT域中,由于构造能量差的过程中有的DCT系数幅值增加,有的系数幅值减少,则对码率的影响较小;针对由于编码模式的改变而使提取的水印和嵌入的水印不同步的问题,提出利用人眼的视觉特性,对编码的4×4块进行纹理块划分,划分后对每个块嵌入不同强度的水印信息,从而实现水印的不可见性和经过攻击后编码模式的改变依旧能较准确地提取水印。
图1 残差帧
Langelaar, G C.等[18]提出了一种基于MPEG或JPEG的差分能量水印(DEW, difference energy watermarking)方案。该方案提出在DCT域中有选择性地丢弃部分高频 DCT系数。水印信息位用相邻 2个区域的 DCT系数的高频系数能量之间的差值来编码,通过迫使嵌入水印的某些8×8 DCT系数块中的高频系数的值为 0, 使 I帧中嵌入水印的某些DCT系数块中的系数产生能量差,从而达到嵌入水印的目的。该方案算法简单,水印的顽健性较好。本文根据 H.264/AVC编码过程中残差帧经过 DCT变换和量化后,大部分的 DCT系数为零的特点,采用能量差的方式嵌入水印信息。
数字水印一般需要满足透明性、顽健性和安全性的要求。但透明性和顽健性是一对矛盾,数字水印的难点就在于如何解决此矛盾,合理地嵌入秘密信息。人眼是图像信息的最终接受者,而人类的视觉系统并不是理想的,对某些噪声不敏感,难以察觉,即存在着视觉冗余。本文利用人眼的视觉特性,对编码中宏块的4×4子块进行纹理块划分,划分后对每个块嵌入不同强度的水印信息。
水印的嵌入和提取过程如图2和图3所示。
水印嵌到图像载体相当于在一个强信号上添加一个弱信号。根据人眼的视觉特性[15],单独的一个纹理很容易被发现,但是当这个纹理被加到一幅纹理复杂的图像时它就有可能很难被发现。根据人眼的这个特性,算法中把水印嵌入到视频图像的纹理区域。
根据Weber定律,在不同照度背景下,眼睛所能分辨出的照度差是不同的。设在均匀照度背景I上有一照度为I I+Δ的光斑,则眼睛刚能分辨出的照度差IΔ是I的函数。即在均匀背景I下,物体的可见性检测门限为
式(1)表明,背景越亮,可见性检测门限越高。
图2 水印信息的嵌入
图3 水印信息的提取
图像块经过DCT变化后,其直流分量反映了图像的概貌,也可以认为是图像的平均灰度,所以可将直流分量看成背景照度,而将交流分量看作是在这个背景照度下变化的照度差[19]。利用这个思想将图像块分为纹理块和非纹理块。分类的准则如下:
根据这个分类原则,将Foreman序列的第一帧的亮度分量(如图4所示)进行4×4分块,将这些块进行纹理块和非纹理块的分类。分类结果如图 5所示,图中背景及脸部的纹理块能被准确定位,从图中可以看出,大部分平坦的区域都被判定为非纹理块。
图4 Foreman序列第一帧亮度分量
图5 分类结果
顽健水印的嵌入步骤如下。
step 1 将左右相邻的2个宏块(16×16)分成2部分(如图6所示的A、B部分),每个部分包含16个4×4的DCT系数块。2个宏块嵌入1bit水印信息。
step 2 本文提出的纹理块与非纹理块的确定。由于H.264是对当前块与预测块的残差进行4×4的整数离散余弦变换变换,因此不能直接利用残差块的 DCT系数来判断该块是否是纹理块,而是对当前每个输入的4×4图像块进行纹理块的判断。由于通用的离散余弦变换和整数离散余弦变换的精度差别不大[8],但整数离散余弦变换的变换运算都是整数运算,核心运算部分只是用到加法和移位,不需要乘除运算,易于硬件实现,因此算法中采用整数离散余弦变换的技术对4×4的输入图像块进行整数离散余弦变换,利用式(2)对当前块的类别进行判别,即判别当前块是否是纹理块。
图6 能量差水印
step 3 结合H.264/AVC的编码特点,调制A、B 2部分量化后的 DCT系数(假设当嵌入的水印w= 1时,迫使A部分的局部能量大于B部分的局部能量,反之,迫使B部分的局部能量大于A部分的局部能量)。
调制B部分量化后的DCT系数(把B部分的某些系数置零):根据人眼的视觉特性,人眼对高频分量的改变比较不敏感,而图像经 DCT变换后,高频分量集中在DCT系数块经Zigzag扫描后的后几个系数上。但是如果只把水印信息嵌在高频分量上,则水印的顽健性能较差。
为了尽量避免引起视频质量的明显失真,先判断输入编码的块是否是纹理块,如果是纹理块,则把DCT系数块的一个中频系数(本文算法选择DCT系数块经Zigzag扫描后的第5个系数)置零以及经 Zigzag扫描后的最后一个系数置零;如果是非纹理块,则把DCT系数块经Zigzag扫描后的最后一个系数置零。如图 5中没有被定位的平坦块所示。
但预测残差经 DCT变换和量化后,大部分的AC系数为0,但如果不改变A部分的局部能量,2部分之间产生的能量差也较小,因此必须再增加A部分系数的局部能量,使得局部能量差增加,从而提高水印信息的顽健性。
调制A部分量化后的DCT系数:先判断当前块是否是纹理块,如果是纹理块,则把 DCT系数块的一个中频系数(本文算法选择 DCT系数块经Zigzag扫描后的第5个系数)的幅值增“1”,并把一个量化后的高频系数的幅值也增“1”;如果是非纹理块,则把DCT系数块经Zigzag扫描后的最后一个量化后的系数幅值增“1”。
step 4 使A、B 2部分量化后的DCT系数产生局部能量差。
4×4量化后的嵌入水印的DCT系数的局部能量为
式(3)中 x( u, v)为量化后的4×4DCT系数, u, v为系数在块中的位置(u=0,1,2,3; v=0,1,2,3)。
式(6)中D为量化后宏块上下部分嵌入水印的DCT系数的局部能量差。
与嵌入算法类似,计算量化后嵌入水印宏块A、B部分的 DCT系数的局部能量差D。若D≥ 0 ,w =1;若 D < 0 ,则 w = 0 。
本实验基于H.264参考软件模型JM12.4,实验所用的序列为CIF(352288×)格式的Foreman, Stefan, Coastguard, Flower Garden, Container Ship, Silent,每种序列都是在帧率为15帧/s,帧数为30帧,比特率分别为768kbit/s, 512kbit/s, 396kbit/s,并按IPPPPPP…的顺序进行编码,每隔15帧编码一个I帧,在每个I帧中嵌入水印,QP值设为28。在2个I帧中嵌入的水印比特数为396bit。
图7和图8分别为Foreman和Container序列在嵌入水印前后第 30帧视频质量的对比。从图中可以看出,无论是Foreman序列还是Container序列,嵌入水印之后,从主观上判断,图像质量都几乎没有下降。这主要有2方面的原因。
图7 Foreman测试序列嵌入水印前后的比较(码率为768kbit/s)
图8 Container测试序列嵌入水印前后的比较(码率为768kbit/s)
其一是根据本文的算法,水印是根据人眼的视觉特性实现自适应嵌入的,即在图像纹理块嵌入水印的强度大一些,而在非纹理块,嵌入的强度较小,这在一定程度上保证了水印的不可见性。
其二是因为嵌入1bit水印信息是分别通过把一个宏块的有关系数置零(纹理块为中高频的 2个系数置零,非纹理块为一个高频系数置零),另一个宏块的有关系数幅值增“1”(纹理块为中高频的2个系数幅值各增“1”,非纹理块为一个高频系数幅值增“1”)来实现的。通过大量的实验发现,残差块经DCT变换及量化后,大部分的中高频系数为零,所以嵌入 1bit水印信息对其中的一个块几乎没影响,而另一个幅值增“1”的块,也是在人眼较不敏感的高频系数和纹理块的中频系数上增加的,也在一定程度上保证了水印不可见。
图9的实验结果也从客观上证明了算法的有效性,图9为6种测试序列在不同低码率下PSNR值下降的平均幅度。图9表明,嵌入水印之后,对视频整体质量的影响很小。本实验中,在嵌入水印后,6种测试序列视频亮度分量PSNR值的下降平均约为0.42dB。
图9 6种测试序列分别在码率为768kbit/s、512kbit/s、396kbit/s时PSNR值平均下降幅度
图10为Foreman序列在码率为768kbit/s时,嵌入水印对每帧图像质量的影响,从图中可以看出,除了在水印嵌入的第1帧对图像PSNR值的影响约为2dB、对第16帧的影响约为1dB,对其他帧的影响很小。
图10 Foreman序列嵌入水印前后每帧PSNR值比较
以往基于H.264的顽健视频水印算法[12~14]一般都是把水印信息嵌在 DCT域的某个系数上,本文算法在分析以往算法不足的基础上把水印信息分配到多个系数上,这大大提高了水印的顽健性。
表 1为本文算法与文献[12,13]的水印性能比较。实验条件:测试序列采用CIF(352×288)格式的Foreman序列,在帧率为15帧/s,帧数为30帧,比特率为768kbit/s,QP=28,按IPPPPPP…顺序的参数条件下进行编码,每隔15帧编码一个I帧,序列里共有2个I帧,在每个I帧的亮度分量中嵌入水印。
表1 本文算法和文献[12,13]水印性能的比较
表1中的ρ为正确提取的水印比特数与所嵌入总比特数的比值,即
式(7)中,Nd表示从视频序列中正确提取水印的比特数,Ne表示嵌入水印的总比特数,Nd≤Ne。ρ=1代表嵌入的水印信息全部被正确检测出来。对于顽健水印,要求水印视频受到各种攻击后,仍然能较完整地提取出嵌入的水印信息,因此ρ的值越大代表水印的顽健性越强。
表1中,高斯噪声的方差为0.001;高斯低通滤波器的窗口宽度为5×5。
从表1可知,在嵌入相同水印容量的情况下,本文算法嵌入水印后对视频PSNR值的影响比文献[12]高0.02dB、码率增加0.12kbit/s、压缩后数据量增加34bit,但本文算法水印的顽健性优于文献[12]。其原因在于,文献[12]只是在一个宏块中的子块中的一个对角线的高频系数上嵌入水印,而本文算法在非纹理块上的高频系数嵌入水印,在纹理块中除了在高频系数上嵌入水印,在中频系数上也进行嵌入。从表1还可以看出,嵌入相同水印容量后,本文算法嵌入水印后对视频PSNR值的影响比文献[13]低0.47dB、码率减少0.96kbit/s、压缩后数据量减少61bit,同时本文算法水印的顽健性优于文献[13]。其原因在于,文献[13]通过扩频技术增加水印的顽健性,即首先对水印进行扩频,再把扩频后的水印信息嵌在残差块DCT域的某个对角线的中频系数上,不论是纹理块还是非纹理块,嵌入水印的强度是一样的,从实验中发现,在平坦区域的中频系数上嵌入水印会使视频质量有较明显降质,且该算法通过改变系数的正负值嵌入水印,所以对码率的影响较大。本文算法充分考虑人眼的视觉特性,利用能量差嵌入水印,在保证水印不可见性的基础上提高其顽健性。从表1中可以看出,在嵌入同样数量的水印信息条件下,本文算法中当没有受任何攻击时,提取的水印信息与原始嵌入的水印信息是完全一样的,当受到一些常见的视频攻击后,除了循环平均滤波,在其他形式的攻击下,水印的顽健性均优于文献[12,13]。
针对已有算法的不足,本文根据人眼的视觉特性,结合H.264编码标准的特性,通过判别当前编码的块是否为纹理块,自适应修改I帧每个宏块亮度分量量化后的交流系数,使2个宏块部分量化后的DCT系数产生局部能量差,达到嵌入顽健水印的目的。算法充分考虑人眼视觉特性,增加水印的不可见性,利用复杂度低的能量差嵌入水印,增加其顽健性,而且在提取端不需要水印的位置信息。实验结果表明,嵌入顽健水印对视频质量的影响较小,而且能有效抵抗常见的视频攻击。
进一步的研究工作主要是:1)寻找视频时域上水印的可嵌入位置,增加水印的嵌入量;2)对由于嵌入水印引起的误差漂移进行补偿,减少嵌入水印对视频质量的影响。
[1] DOERR G, DUGELAY J L. A guide tour of video watermarking[J].Signal Processing: Image Communication, 2003, 18(4): 263-282.
[2] HARTUNG F, GIROD B. Watermarking of uncompressed and compressed video[J]. Signal Process, 1998, 66 (3): 283-301.
[3] KOZ A, ALATAN A A. Oblivious spatio-temporal watermarking of digital video by exploiting the human visual system[J]. IEEE Trans Circuits Syst Video Technol, 2008, 18(3): 326-337.
[4] HARTUNG F, GIROD B. Digital watermarking of MPEG-2 coded video in the bitstream domain[A]. IEEE International Conference on Acoustic, Speech , and Signal Processing[C]. Munich, Germany, 1997.2621-2624.
[5] CHOI D, DO H, CHOI H, et al. A blind MPEG-2 video watermarking robust to camcorder recording[J]. Signal Processing, 2010,90(4):1327-1332.
[6] BIAN XB, ZHU QX. Video protection for MPEG-4 FGS with watermarking[J]. Multimedia Tools and Applications, 2008, 40(1):61-87.
[7] KWON SK, TAMHANKAR A, RAO KR. An overview of H.264/MPEG-4 part 10[J]. Journal of Visual Communication and Image Representation, 2003, 17(2):186-216.
[8] 毕厚杰. 新一代视频压缩编码标准—H.264/AVC[M]. 北京.人民邮电出版社, 2006.BI H J. A New Generation of Video Compression Coding Standard-H.264/AVC[M]. Beijing: Post Telecom Press, 2006.
[9] KIM DW, CHOI YG, KIM HS, et al. The problems in digital watermarking into intra-frames of H.264/AVC[J]. Image and Vision Computing, 2010, 28(8): 1220-1228.
[10] ZOU D, JEFFREY A BLOOM. H.264 stream replacement watermarking with CABAC encoding[A]. IEEE International Conference on Multimedia and Expo [C]. Singapore, 2010.117-121.
[11] NGUYEN C, TAY D.B.H, GUANG DENG. A fast watermarking system for H.264/AVC video[A]. IEEE Asia Pacific Conference on Circuits and Systems[C]. 2006.81-84.
[12] QIU G, MARZILIANO P, HO A T S, et al. A hybrid watermarking scheme for H.264/AVC video[A]. Proceedings of the 17th International Conference on Pattern Recognition[C]. Cambridge, UK, 2004.865-868.
[13] ZHANG J, HO ATS, QIU G, et al. Robust video watermarking of H.264/AVC[J]. IEEE Transactions on Circuits and Systems, 2007.205-209.
[14] NOORKAMI M, MERSEREAU R M. Compressed-domain video watermarking for H.264[A]. 2005 International Conference on Image Processing(ICIP)[C]. 2005.1229-1232.
[15] NOORKAMI M, MERSEREAU R M. A framework for robust watermarking of H.264-encoded video with controllable detection performance[J]. IEEE Transactions on Information Forensics and Security, 2007, 2(1):14-23.
[16] WATSON A B. DCT quantization matrices visually optimized for individual images[A]. Proceedings of the SPIE: Human Vision,Visual Processing and Digital Display IV[C]. San Jose, 1993.202-216.
[17] MANSOURI A, AZNAVEH A M, TORKAMANI-AZAR F, et al. A low complexity video watermarking in H.264 compressed domain[J]. IEEE Transactions on Information Forensics and Security, 2010, 5(4):649-657.
[18] LANGELAARG C, LAGENDIJK R R. Optimal differential energy watermarking of DCT encoded images and video[J]. IEEE Transactions on Image Processing, 2001, 10(1): 148 -158.
[19] 冯林, 李彦君, 邵刚等. 利用人眼视觉系统理论实现 DCT域快速分形编码[J]. 计算机辅助设计与图形学学报, 2005, 17(1): 67-73.FENG L, LI Y J, SHAO G, et al. A fast fractal image coding method using the characteristics of human vision system in DCT domain[J]. Journal of Computer-aided Design & Computer Graphics, 2005, 17(1): 67-73.