文档库 最新最全的文档下载
当前位置:文档库 › 基于H_264_AVC视频流的双水印算法

基于H_264_AVC视频流的双水印算法

基于H_264_AVC视频流的双水印算法
基于H_264_AVC视频流的双水印算法

—123—

基于H.264/A VC 视频流的双水印算法

张维纬,冯 桂,杨艺敏

(华侨大学信息科学与工程学院,泉州 362021)

摘 要:针对H.264/A VC 编码标准的新特性,提出一种基于H.264/A VC 低比特率视频流的双水印算法,将鲁棒水印嵌入DCT 域中,把脆弱水印嵌入运动矢量残差中,达到对视频版权保护和视频内容完整性认证的双重目的。实验结果表明,该算法对视频质量和码率的影响较小,鲁棒水印能有效抵抗高斯噪声、低通滤波、重编码以及轻微的抖动失真等常见的视频攻击,脆弱水印对视频内容的轻微修改具有较强的敏感性。

关键词:鲁棒水印;脆弱水印;H.264标准

Bi-watermark Algorithm Based on H.264/A VC Video Stream

ZHANG Wei-wei, FENG Gui, YANG Yi-min

(College of Information Science and Engineering, Huaqiao University, Quanzhou 362021)

【Abstract 】Aiming at new features of the H.264/A VC video coding standard, a bi-watermark algorithm for H.264/A VC low bit-rate video stream is proposed. By embedding the robust watermark into DCT domain and fragile watermark into prediction error motion vectors respectively, the method can jointly achieve both copyright protection and authentication. Experimental results demonstrate that the video watermark scheme can achieve high robustness and good visual quality without increasing the overall bit-rate. The robust watermark can robustly survive some attacks such as Gaussian-noise, low-pass filter, re-encoder and rotation and so on, and the fragile watermark is sensitive to various attacks. 【Key words 】robust watermark; fragile watermark; H.264 standard

计 算 机 工 程Computer Engineering 第35卷 第16期

Vol.35 No.16 2009年8月

August 2009

·安全技术·

文章编号:1000—3428(2009)16—0123—02

文献标识码:A

中图分类号:TP309

在基于H.264/AVC 的实时视频水印算法中,往往将鲁棒水印嵌在DCT 域的某个系数上,将脆弱水印嵌在运动矢量 中[1-3]。但根据H.264/AVC 编码标准的特性[4],由于其采用了一些先进的编码技术,其预测残差块经过DCT 变换和量化后,大部分的交流系数为0,因此传统的通过调制一个DCT 系数嵌入水印算法的鲁棒性较差。本文在分析现有算法的基

础上结合H.264/AVC 编码特性,

提出基于H.264/AVC 视频流的双水印算法,在H.264编码过程中,在I 帧的预测残差的DCT 系数中利用能量差嵌入鲁棒水印信息,并在亮度分量为1/4像素的运动矢量预测残差中嵌入脆弱水印。

1 水印的嵌入与提取

1.1 I 帧中鲁棒水印的嵌入与提取

本文的鲁棒水印算法考虑了H.264编码标准的特性,利用鲁棒性较好的能量差分[5]算法,实现在H.264的DCT 域中嵌入鲁棒水印,算法示意图如图1所示。

4×4 DCT blocks

图1 鲁棒水印算法示意图

1.1.1 鲁棒水印的嵌入

鲁棒水印的嵌入步骤如下:

(1)将宏块(16×16)分成上下2个部分,每个部分包含8个

4×4的DCT 系数块,如图1所示。

(2)调制上下2个部分量化后的DCT 系数(假设当嵌入的水印1w =时,迫使上半部分的能量大于下半部分的能量,反之,迫使下半部分的能量大于上半部分的能量)。假设当嵌入的水印1w =时,具体的调制算法如下:

1)调制下半部分量化后的DCT 系数:为尽量避免引起视频质量的明显失真,本文算法只将下半部分4×4量化后的DCT 块的中高频系数置零(算法中把4×4量化后的DCT 系数经Zigzag 扫描后的后10个系数定位为中高频系数)。

但是根据H.264的特点,其在预测残差经DCT 变换和量化后,大部分的AC 系数为0,因此,上述做法产生的能量差较小,必须再增加上半部分系数的能量,使得能量差增加,从而提高水印信息的鲁棒性。

2)调制上半部分量化后的DCT 系数:将上半部分的其中1个4×4量化后的DCT 系数的中高频系数分别增加1个量化电平。

(3)使上下2个部分量化后的DCT 系数产生能量差。 4×4量化后的中高频DCT 系数的能量为

2222222222

6789101112131415i E x x x x x x x x x x =+++++++++ (1)

其中,x 为嵌入水印后的DCT 系数。

12345678A E E E E E E E E E =+++++++ (2) 910111213141516B E E E E E E E E E =+++++++ (3)

基金项目:福建省自然科学基金资助项目(A0610022)

作者简介:张维纬(1982-),男,硕士研究生,主研方向:图像与视频处理;冯 桂,教授、博士;杨艺敏,硕士研究生 收稿日期:2008-12-28 E-mail :weiweizh@https://www.wendangku.net/doc/1d2038821.html,

—124

—A B D E E =? (4)

其中,D 为量化后宏块上下部分嵌入水印的DCT 系数的能量差。

1.1.2 鲁棒水印的提取

与嵌入算法类似,计算量化后嵌入水印宏块上下部分的DCT 系数的能量差D ,如果0D >,则1w =;如果0D <,则0w =。

1.2 帧间预测及脆弱水印的嵌入与提取

H.264的帧间预测算法与以往标准相比,增加了很多新的选项,如树状结构运动补偿、亚像素级运动估计算法等。

以亚像素级运动估计为例,在H.264中,通过运动估计得到每一个子块的运动矢量,在运动搜索过程中,寻找最佳的整数点像素,然后围绕这个最佳整数点像素寻找最佳的半像素点,围绕这个半像素位置寻找8个1/4像素点的最佳位置,如图2所示,其中,大写字母表示整像素点,小写字母表示1/2像素点,数字表示1/4像素点。

图2 1/4像素的全搜索

在上述搜索过程中,寻找最佳运动矢量的准则是最小化拉各朗日函数:

min{()()}MODE p MV distortion rate λ=+??mv mv mvp (5) 其中,mv 表示当前子块的运动矢量;mvp 表示预测的运动矢量;p λ是运动估计中在比特率和失真度之间寻找最佳平衡的拉各朗日因子;()distortion mv 表示当前运动补偿块与当前块的残差之间的失真度;()rate ?mv mvp 表示对运动矢量预测残差进行编码所需的比特数。

令:

T [,]x y d d =?= mvd mv mvp (6)

其中,x d 为预测残差的水平分量;y d 为垂直分量。

1.2.1 脆弱水印的嵌入

脆弱水印要求对宿主载体内容的变化有较高的敏感度,因此,脆弱水印往往嵌在P 帧中1/4像素的运动矢量参差 中[1-3]。假设把水印信息嵌在运动矢量参差mvd 的水平分量x d 中,嵌入水印信息0w =时,使x d 为偶数;1w =时,使x d 为奇数。具体做法如下:

(1)当水印信息0w =时,如果最佳的半像素点c (见图2)的水平分量与预测运动矢量的水平分量的差值为偶数,则使搜索1/4像素点的最佳位置在{2, 7}范围内;如果最佳的半像素点c 的水平分量与预测运动矢量的水平分量的差值为奇数,则使搜索1/4像素点的最佳位置在{1, 3, 4, 5, 6, 8}范围内,上述做法是为了迫使x d 为偶数。

(2)当水印信息1w =时,同理,可以迫使x d 为奇数。 为增加脆弱水印对载体内容修改的敏感性,在一个宏块内嵌入1 bit 的水印信息,即不管宏块以哪种模式进行编码,使该宏块所有子宏块的运动矢量预测残差水平分量的奇偶性都与水印信息的奇偶性一致。 1.2.2 脆弱水印的提取

判断P 帧中的每个嵌入水印的宏块各个子块的运动矢量残差mvd 水平分量的奇偶性。如果全部为奇数,则提取的水印为1w =;如果全部为偶数,则提取的水印为0w =;如果不是全为奇数或偶数,则说明载体内容受到修改,则提取的水印信息就不是原始嵌入的水印信息,既不是0,也不是1,此时令提取的水印信息为2w =。

在上述做法中,只要宏块的1个子块的运动矢量残差mvd 水平分量的奇偶性受到改变,则提取的水印信息就是错误的,从而提高了脆弱水印对于载体内容受到轻微修改的敏感性。

2 实验结果及分析

本实验基于H.264参考软件模型

JM12.4

来实现水印的嵌入和提取,实验所用的序列为QCIF(176×144)的news, coastguard, carphone, mother ,帧率为30 Hz ,帧数为30帧。由于QCIF 格式每帧共有99个16×16大小的宏块,因此选择嵌入在I 帧中嵌入的鲁棒水印和在P 帧中嵌入的脆弱水印的比特数均为99 bit 。

4种测试序列news, coastguard, carphone, mother 总体上在嵌入鲁棒水印和脆弱水印后,视频亮度分量质量的下降平均大概为0.62 dB ,对于码率的影响平均约为5.35 Kb ,说明嵌入水印对视频编码的质量和输出码率的影响较小。

图3为测试序列在量化参数QP =28时嵌入水印后所截得的视频帧(第10帧),显然从视觉上看几乎没有明显的质量下降。

(a)mother 序列 (b)carphone 序列

图3 嵌入水印后的视频截图(第10帧)

图4

为测试序列mother 嵌入水印前后在不同比特率下对

PSNR 值影响的比较。可以看出在不同比特率下嵌入水印对)

图4 不同输出比特率下的PSNR 值的比较

鲁棒水印和脆弱水印的常见视频攻击测试sim 值(正确提取的水印比特数与所嵌入总比特数的比例)如表1所示。高斯噪声的均值为0,方差为0.000 5;椒盐噪声的均值为0,方差为0.001;高斯滤波器的窗口宽度为5×5。(下转第127页)

—127—

送的T a 。图4描述了经1轮交换后,A 向B 发送的T ab 。图5描述了经1轮交换后,A 收到B 发送的T ab 并成功验证B 。

图3 模拟结果界面

1

图4 模拟结果界面

2

图5 模拟结果界面3

从实验结果可以看出,B 收到T ab 并利用1

ab b T ?×得到a T ,与第1轮收到的a T 对比,结果相等,从而完成对A 的认证。

5 结束语

双线性对可以由椭圆曲线构造,非奇异椭圆曲线的Weil 对

被引入密码学后,基于双线性对的密码体制被广泛研究。基于TinyECC ,文献[5]实现了Tate 对在传感器节点上的运算,这是基于对的密码学在传感器网络上的首次应用。下一步工作将继续研究椭圆曲线密码学和基于双线性配对密码学在传感器网络上的应用。

参考文献

[1] Gura N, Patel A, Wander A. Comparing Elliptic Curve Cryptography

and RSA on 8-bit CPUs[C]//Proceedings of the 2004 Workshop on Cryptographic Hardware and Embedded Systems. Boston, USA: [s. n.], 2004.

[2] Watro R. TinyPK: Securing Sensor Networks with Public Key

Technology[C]//Proceedings of the 2nd ACM Workshop on Security of Ad Hoc and Sensor Networks. New York, USA: [s. n.], 2005:

135-142.

[3] Ning Peng, Liu An, Du Wenliang. Mitigating DoS Attacks Against

Broadcast Authentication in Wireless Sensor Networks[R]. Carolina, USA: North Carolina State University, Technical Report: TR-2005- 39, 2006.

[4] Liu An, Ning Peng. TinyECC: A Configurable Library for Elliptic

Curve Cryptography in Wireless Sensor Networks[C]//Proceedings of the 7th International Conference on Information Processing in Sensor Networks. Louis, Missouri, USA: [s. n.], 2008.

[5] Oliveira L B. Aranha D, Morais E, et al. TinyTate: Identity-based

Encryption for Sensor Networks[D]. Campinas, Brazil: University of Campinas, 2007.

编辑 陈 晖

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(上接第124页)

表1 各种常见视频水印攻击测试的sim 值 (%)

Coastguard 序列 的sim 值 News 序列 的sim 值 Carphone 序列 的sim 值 Mother 序列 的sim 值 攻击 类型

I 帧

P 帧

I 帧

P 帧

I 帧

P 帧

I 帧

P 帧 无攻击 100.00 100.00 100.00 100.00100.00 100.00 100.00100.00高斯噪声 84.85 2.02 68.69 9.0976.77 4.04 75.76 1.01 椒盐噪声 92.93 6.06 89.90 18.1894.95 13.13 93.947.07 高斯滤波 92.9 10.10 84.85 11.1184.85 3.03 88.8912.12旋转1o 69.70 8.08 64.65 9.0973.74 5.05 74.7512.12旋转2o

65.66 6.06 60.00 12.12

66.67 7.07 63.64

8.08

可以看出,当没有受任何攻击时,提取的水印信息与原始嵌入的水印信息是完全一样的,当受到一些常见的视频攻击后,鲁棒水印的sim 值较高,这说明鲁棒水印能抵抗各种常见的视频编辑;脆弱水印的sim 值较小,说明脆弱水印对于视频内容受到修改则有较强的敏感性。 表2为在量化参数QP =28的视频水印序列经重量化编码(重新设置QP 值)后提取水印的sim 值。其中,I/0表示 第0帧为I 帧;P/2表示第2帧为P 帧。 表2 foreman 序列经重编码后提取水印的sim 值 (%)

foreman 序列的sim 值

算法名称

QP =24 QP =28QP =32 QP =36 QP =40

I/0 — —

100.00 100.00 93.00 文献[2]的算法

P/2 — —

15.00 13.00 9.00 I/0 98.99 100.0092.93 — —

文献[3]的算法

P/2 9.87 98.70 10.52 — — I/0 100.00 100.00100.00 100.00 100.00

本文算法

P/2 6.06 100.0011.11 9.09 7.07 从表2中可以看出,本文算法在重编码后,水印的鲁棒

性和脆弱性比文献[2]和文献[3]的算法都有所提高。

3 结束语

本文结合H.264编码标准的特性,提出通过修改每个宏块亮度分量上下2个部分量化后的交流系数,使每个嵌入水印的宏块上下2个部分量化后的DCT 系数产生能量差,达到嵌入鲁棒水印的目的,在P 帧亮度分量为1/4像素的运动矢量残差中嵌入脆弱水印。实验数据表明,该算法对编码后的视频码率和亮度分量的PSNR 值影响较小,鲁棒水印能有效抵抗各种常见的视频水印攻击,脆弱水印对视频内容的修改敏感性较强。

参考文献 [1] Qiu Gang, Marziliano P, Ho A T S, et al. A Hybrid Watermarking Scheme for H.264/A VC Video[C]//Proc. of the 17th International Conference on Pattern Recognition. Washington D. C., USA: IEEE

Computer Society, 2004. [2] 曹 华, 周敬利, 余胜生, 等. 基于H.264低比特率视频流的半脆弱盲水印算法实现[J]. 电子学报, 2006, 34(1): 40-44.

[3] 单承赣, 孙德辉. 基于H.264/A VC 低比特率视频流的双水印算

法[J]. 计算机应用, 2007, 27(8): 1922-1925.

[4] Wiegand T, Sullivan G J, Bj?ntegaard G , et al. Overview of the

H.264/A VC Video Coding Standard[J]. IEEE Trans. on Circuit and System for Video Technology, 2003, 13(7): 560-576.

[5] Langelaar G, Lagendijk R. Optimal Differential Energy Water-

marking of DCT Encoded Images and Video[J]. IEEE Trans. on Image Processing, 2001, 10(1): 148-158.

编辑 顾姣健

图像水印算法源代码

M=256; %原图像长度 N=32; %水印图像长度 K=8; I=zeros(M,M); II=zeros(K,K); B=zeros(M,M); Idct=zeros(K,K); D=zeros(M,M); %读取原图像 I=imread('33.png'); subplot(2,2,1); %显示原图像 imshow(I); title('原图像'); %产生水印序列 randn('seed',10); mark=randn(1024,1); subplot(2,2,2); plot(mark); title('水印序列'); %嵌入水印 T=1; for m=1:N for n=1:N x=(m-1)*K+1; y=(n-1)*K+1; II=I(x:x+K-1,y:y+K-1);%将原图分成8*8的子块 Idct=dct2(II);%对子块进行DCT变换 if x==1&y==1 alfa=0.002; else alfa=0; end B=Idct*(1+alfa*mark(T));%嵌入水印 Bidct=idct2(B);%进行DCT反变换 I(x:x+K-1,y:y+K-1)=Bidct; T=T+1; end end subplot(2,2,3); imshow(I);%显示嵌入水印后的图像

title('tu');imwrite(I,'嵌入后的图像.bmp'); %进行相关性比较 figure; for i=1:50 if i==10; mark2=mark1'; else mark2=randn(1024,1); end %计算相关值 c=(mark2'*mark)/sqrt(mark2'*mark2); stem(i,c); hold on; end

数字水印算法介绍

数字水印算法列举 湖南科技大学计算机科学与工程学院 ①基于LSB 的数字水印方案(空间域、不可逆、不可见和盲检测) 嵌入步骤: (1)先把水印信息转化为二进制比特流I。 (2)根据I的长度生成密钥K,并且严格保存。密钥K是对图像载体像素位置的一个映射。 (3)把I中的每一位依次根据密钥K,置换掉原始载体图像中相应位置的像素最后一位。提取步骤: (1)根据严格保存的密钥K遍历嵌入了水印的图像中的相应像素,提取出最后一位。 (2)将提取出来的每一位重新组合成水印信息。 ②基于差分扩展的数字水印方案(变换域、可逆、不可见和盲检测) 嵌入步骤: (1)将图像M分成像素点对(x,y),将水印信息转化为二进制比特流,比特流的每一位用m 表示。 (2)根据水印信息比特流的长度随机生成信息的嵌入位置k作为密钥信息严格保存。(3)对图像M计算均值l和差值h:?????-=+=y x h y x floor l 2((floor表示向下取整) (4)将水印比特信息m以差值扩展的方法嵌入到差值h中:m h h +?='2(5)将得到的h '代入(3)中,得到新的图像像素对,形成嵌入秘密信息后的图像C。提取步骤: (1)将图像C分成像素点对(x,y),读入密钥信息K。 (2)将图像C依旧按照嵌入步骤中的(3)式计算均值l和差值h。 (3)根据密钥k找到相应位置,提取差值h的最后一位比特信息m,再将差值h进行变换得到1>>='h h 。 (4)将提取到的比特信息m进行组合可以恢复水印信息,将得到的h '代入嵌入步骤的(3)中计算新的图像像素对可以恢复原始图像载体M。 ③基于直方图修改的数字水印算法(空间域、可逆、不可见和盲检测) 嵌入步骤:(1)找到直方图的零点z和峰值点p,将z v p <<的像素值v自加1。 (2)漂移后的直方图v=p处即为嵌入水印的位置,将水印信息转化为二进制流并记为k,按顺序嵌入,即k v v +=';(3)得到的由像素值v '组成的图像就是嵌入秘密信息后的图像。同时p、z以密钥的形式保存。 提取步骤: (1)读取密钥,得到p、z的值。 (2)遍历图像的每个像素,当像素v=p时,提取信息0并保持数据不变;当v=p+1时,提取信息1并将数据减1。 (3)当vz时,数据保持不变;当p-1