一种基于FFMPEG系统的视频水印算法

2014-09-23 03:16施惠娟
电子设计工程 2014年2期
关键词:关键帧二进制鲁棒性

施惠娟,吴 岳

(河海大学 计算机与信息学院,江苏 南京 211100)

一种基于FFMPEG系统的视频水印算法

施惠娟,吴 岳

(河海大学 计算机与信息学院,江苏 南京 211100)

提出一种基于FFMPEG系统的MPEG-2视频水印算法,解决了视频水印中不可避免的视频编解码问题。将水印图像和水印属性转成二进制比特流,作为嵌入视频的水印信息,提取时不需预知水印的尺寸信息就能恢复。同时在每个嵌入帧的起始部位嵌入标志序列,识别已嵌入水印的帧提取水印,而无需重新进入编码过程。实验结果表明,这种方案实现便捷,省时高效,且具有较好的不可见性和鲁棒性。

视频水印;FFMPEG;MPEG-2码流;二进制水印

视频水印在多媒体领域受到越来越多的重视,如节目版权保护,防盗版拷贝,追踪非法传播等,这些应用场景驱使视频水印愈加成熟。视频由于其数据量庞大,存储和传播都受到限制,所有的视频都需经过各种编码标准压缩。因此研究视频水印算法,实现水印嵌入提取不可避免地需要借助不同的视频编解码平台。水印算法必须跟视频标准结合,盲目地嵌入和提取,导致水印在编码,解码过程中丢失。视频水印跟图像水印相比,还有一个区别是必须考虑算法的效率。图像水印算法一般几秒都能实现,但视频一秒的播放率达到25帧,加上编码解码过程,时间消耗就比较可观,因此视频水印算法的时效性也是一个重要的考虑因素。

1 研究现状

视频以两种方式存在:原始视频和压缩编码后的视频,视频水印通常也嵌在原始数据和压缩域上。根据水印嵌入和提取之前是否对视频帧进行变换,水印方案分为空域算法和变换域算法。空域是指通过修改视频帧的像素信息嵌入水印,变换域是指将视频帧先经过DCT,DWT或DFT变换后,通过修改变换系数嵌入水印信息[1]。

Lancini[2]提出一种在空域中嵌入水印的算法,构建亮度掩蔽,纹理信息掩蔽和空间维度信息掩蔽对视频帧过滤提取,水印经过误差校正编码后嵌入到该过滤信息图;S.H Liu[3]提出基于相邻宏块间亮度值的强相关性嵌入水印,选取I帧和P帧中相邻宏块的AC系数嵌入置乱后的水印;Ceddillo[4]通过计算视频的纹理分布,选取运动矢量值大,相位角度超过一定阈值的矢量作为嵌入载体,重新计算匹配块的预测误差补偿运动矢量值的改变。研究发现,一般水印算法都以二值图像作为水印,提取时需预知水印图像的尺寸恢复出提取的水印。但一个真正合格的盲水印算法,在提取水印时需要给出的先验信息应越少越好,只需给出嵌入水印的视频以及随机密钥就能提取出水印信息。而且不同格式视频的水印都构建不同的仿真平台,调用相应编解码库,操作不便。因此本文提出一种基于FFMPEG的视频水印算法,通过嵌入水印的属性信息,使提取水印无需预知水印的尺寸,能满足多种格式的视频水印。

2 算法设计

2.1 FFMPEG仿真系统

FFMPEG[5]音视频编解码系统,提供了完整的免费开源跨平台音视频频编解码库,涵盖了几乎所有常见音视频格式的编解码器。FFMPEG在Linux系统下开发,在Windows系统下的编译和使用,需要一个仿Linux内核的编译环境——MinGW+MSYS。本文的实验仿真系统将MPEG-2视频的编解码过程构建在FFMPEG系统上,在MinGW+MSYS环境下编译FFMPEG,并在MPEG-2编码器中添加水印嵌入和提取算法,以MSYS操作环境下以命令行指令的形式执行视频水印的嵌入和提取。在原始系统的基础上,重新定义了几个与水印算法相关的命令行选项。水印嵌入系统中,定义“method”、“markstrength”、“markname”3 个新指令,method 确定当前指令是执行水印嵌入还是水印提取,1为嵌入,3为提取;markstrength设置水印嵌入的强度;markname指定二进制水印信息文件名。水印提取系统中,定义“method”、“markstrength”、 “watermarksavename”,watermarksavename 指提取出水印后,输出时保存的文件名。

2.2 水印图像预处理

本文设计了一种新颖的水印预处理方式,将水印的属性信息转换成水印的一部分,作为载体视频的嵌入信息,提取时通过恢复水印中的属性,就能恢复出水印图片。

原始水印为W*H*D大小的BMP格式图像,其中W为水印图像宽度,H为高度,D为位深度,即图像有W*H个像素点,每个像素点有D个可能取值,总的水印容量为W*H*D比特。水图像从一个水印库中选择,每个图还有一个编号ID信息。将一个水印图像的ID,宽度W,高度H和位深度D分别用 10bit,8bit,8bit,2bit大小的二进制值表示, 即一个水印的属性由28比特二进制表示出来。考虑嵌入视频后遭到攻击而使属性发生改变,因此将重复嵌入5遍属性信息,提取时按照概率最大的属性值恢复水印,则每个二进制水印文件的起始部分有140比特的属性,真正嵌入视频中的水印大小为W*H*D+140。

水印图像置乱有多个优势:避免分块效应;加入提取密钥,保证安全性;增强抗攻击能力[6]。本文同样将水印的5遍属性和图像信息都依次经过置乱依次保存,再以二进制文件输出,提取时以相同的置乱密钥恢复水印。二进制水印文件的组成形式如图1所示。

图1 水印文件的组成结构Fig.1 Structure of watermark file

2.3 标志位嵌入

定义两个长度为80的一维数组,flag_start=[0 1 0 1 0 1…],flag_continue=[1 0 1 0 1 0…]。一个完整的水印通常要在N个关键帧中嵌完,那么在第一帧的前80个块中依次嵌入flag_start中标志,在后N-1个帧的前80个块中嵌入flag_continue中的标志。即对于每一个即将嵌入水印信息的帧,都先判断是否第一个帧,再选择相应标志数组,在水印嵌入前先嵌入标志信息。重复嵌入水印时,则按同样的规则先嵌入标志数组。

2.4 基于余数定理的嵌入规则

余数定理又称中国剩余定理,Chinese Remainder Theorem,简称CRT,分为正向CRT运算和逆向CRT运算[7]。

正向CRT运算在已知除数和余数的情况下求最大整数。设m,n是一对互质的正整数,最大公约数为1,N为m,n之积,称为动态范围,对于给定的 p,q,令 p<m,q<n,存在唯一的整数Z,且 Z<N。 首先确定r1和r2:r1=N/m=n;

根据下面公式确定s1,s2的取值:(mod为取余数运算符)

于是确定了唯一的Z取值为:

逆向CRT运算是在已知除数和最大整数的情况下求余数。设Z是介于0到N-1之间的整数,已知一对互质的整数对m,n,N是m,n之积,则Z可以唯一地用一对整数对 p,q来表示,其中 p<m,q<n,由下式确定其值:

本文水印嵌入算法中,首先将载体视频解码成YUV,进入MPEG-2编码器,当帧类型参数pic_type=1和关键帧标志key_frame=1时,开始嵌入水印。将当前帧划分成8*8的块,取关键帧的亮度分量Y,进行离散余弦变换获得DCT系数矩阵,通过对直流系数dct_0运用余数定理,实现水印嵌入。

令p=30,q=10,将水印系统中的markstrength作为除数,实验中markstrength取值为40,调整dct_0的值,满足如下嵌入规则:

修改公式如下:

2.5 水印提取

水印提取过程分三部分组成:标志位检测,属性恢复和水印提取。

嵌入水印的视频解码成YUV后,提出每一帧的前80个8*8DCT系数块中的直流系数dct_0,根据余数定理,若dct_0 mod markstrength=10, 则flag=0, 若dct_0 mod markstrength=30,则flag=1。将80个flag平均分成5个数组,每个长度为16,将这5个数组按下标相加,若和大于等于3,则当前位为1,否则为0,以此形成一个1*16的标志数组。

将flag_bit与1*16的标志数组flag_start=[0 1 0 1 0 1…],flag_continue=[1 0 1 0 1 0…]比较,若 flag_bit=flag_start,说明是当前帧是水印嵌入的第一帧,若flag_bit=flag_continue,说明当前帧中嵌入了水印,但不是第一帧,若都不相等,则说明当前帧中没有嵌入水印,不再提取。

标志位的嵌入使得水印提取不需重新进入编码器,不需按嵌入时的逻辑查找关键帧识别嵌入水印的帧,跳过了重新编码过程则节省了水印提取的时间,提高了工作效率。

对于判断出存在水印的帧,继续提取水印的属性信息。按同样的提取规则,在当前帧的第81至220个8*8dct系数块中提取水印信息,将提取出的5*28个二进制比特进行恢复,根据嵌入时的置乱密钥,反置乱后得出水印的尺寸信息,宽度W,高度H和位深度D,若值有效,则继续提取真正的水印,若无效,则说明标志检测发生错误,重新进行下一帧的判断。

从标志位检测出的水印嵌入第一帧,且恢复出有效属性信息的帧中开始提取真正的水印。当提取到的水印信息数等于水印容量时,即W*H*D,则水印全部提取出来,根据原始水印图像的尺寸,将二进制水印信息还原成图像。

3 实验结果及分析

本文实验将300帧352*288的标准测试视频foreman.yuv用FFMPEG系统编码成mpeg-2标准的foreman.mpg进行水印嵌入和提取,以100帧为周期重复嵌入水印,嵌入的水印为128*128大小的二值图像转换成的二进制文件以及它的140个属性信息。

载体视频嵌入水印后,需要保证视觉上的不可感知性,不能影响画质的清晰度。以峰值信噪比PSNR来衡量水印的不可见性,公式如下:

其中,MSE是均方差,MSE值越小,PSNR值越大,图像质量改变越小,水印不可见性越好。MSE的计算公式如下:

其中I是原始视频帧,I’是嵌入水印后的视频帧,M,N分别为该帧视频的高度和宽度。

视频帧嵌入水印前后的视觉效果对比如图2所示,嵌入前后视频帧的PSNR=39.62 dB,因为本文的算法是通过修改YUV色彩空间的亮度分量嵌入水印,后将色彩空间转换到RGB输出显示,所以在RGB值上的改变很微小,有很高的PSNR值,完全不影响视觉效果。原始水印图像和未攻击时提取的水印图像如图3所示。

图2 嵌入水印前后的视频Fig.2 Video before and after embedding watermark

为了验证算法的鲁棒性,对于嵌入水印后的视频进行多种攻击,通过计算提取出水印的归一化相关系数NC来衡量,公式如下:

其中W是原始水印,W’是攻击后提取的水印,N是水印长度,NC值越接近1,说明水印算法的鲁棒性越好。不同攻击后提取的水印如图4所示,相应的NC值分别为0.999 7,0.999 7,0.999 7,0.999 7,0.999 9,0.837 2。

图4 攻击后提取的水印Fig.4 Extracted watermark after attacks

由上面实验结果可知,本文算法对于一般视频编辑软件的攻击,饱和度和亮度调节等有着很好的鲁棒性,NC值接近1,只有少数几个像素误判。而对于视频特有的帧删除,视频截取等攻击,分两种情况:1)若丢失的帧中没有嵌入水印信息,或者剩下的视频中还能提取至少一个完整的水印,那么水印仍然能完整提取;2)若删除的帧为嵌入水印的关键帧,且每个水印所在的关键帧都遭到破坏,那么水印就无法提取。因此本文设计的周期性重复嵌入同一个水印,只要有一个水印能被提取,那么其他被破坏的水印信息也无法影响整体的效果,大大提高了水印的鲁棒性。

4 结 论

本文设计了一种基于FFMPEG的视频水印算法,将水印图像的属性和内容转换成二进制文件作为嵌入信息,使得水印提取时不需预知原始水印的尺寸,实现了真正的盲水印。在每个需要嵌入水印的关键帧中,嵌入标志位,提取时通过标志信息的存在判断水印的存在,避免了视频重新编码的过程,提高了工作效率。重复嵌入水印保证了算法的鲁棒性。实验结果表明本文的算法有较强的鲁棒性和不可见性,为视频水印的研究提供一个参考。

[1]李煌.基于MPEG-2的鲁棒视频水印方案[D].广州:中山大学,2010.

[2]Lancini R,Mapelli F,Tubaro S.A robust video watermarking technique in the spatial domain[C]//Video/Image Processing and Multimedia Communicatio,2002:251-256.

[3]LIU Shao-hui,CHEN Tian-hang,YAO Hong-xun,et al.A Real-Time video watermarking using adjacent luminance blocks correlation based on compressed domain[C]//Intelligent Information Hiding and Multimedia Sign,2008:833-836.

[4]Cedillo-hernandez A,Nakano-miyatake M,Rojas-cardenas L,et al. Robust video watermarking using perceptual information and motion vector[C]//Circuits and Systems,2007:811-814.

[5]张国庆.基于Ffmpeg的视频转码与保护系统的设计与实现[D].武汉:华中师范大学,2011.

[6]胡睿,徐正光.一种基于分块DCT变换和水印置乱的嵌入算法[J].微计算机信息,2005(7):29-31.

HU Rui,XU Zheng-guang.An watermarking algorithm based on DCT and scramble[J].Control&Automation,2005 (7):29-31.

[7]Patraj J C,Karthik A,Meher P K,et al.Robust CRT-based watermarking technique for authentication of image and document[C]//Systems, Man and Cybernetics,2008:3250-3255.

A video watermarking algorithm based on the FFMPEG system

SHI Hui-juan,WU Yue
(Department of Computer and Information,Hohai University,Nanjing211100,China)

This paper proposes a video watermarking algorithm of MPEG-2 based on the FFMPEG system,solving the inevitable problem of video coding and decoding during video watermarking.It transforms the watermark image and its attributes into binary bit stream working as the actual watermark embedded into the video.So that it doesn't need to provide size information of original watermark during extracting.Embed a flag sequence at the beginning of every frame that needs embedding to recognize the embedded frames,and need not to code the video again.Experimental results indicate that this watermark algorithm is convenient and sufficient,and has excellent invisibility and robustness.

video watermarking;FFMPEG;MPEG-2 stream;binary watermark

TN919

A

1674-6236(2014)02-0161-04

2013-05-27 稿件编号:201305273

国家自然科学基金(61170297)

施惠娟(1989—),女,江苏南通人,硕士研究生。研究方向:信号与信息处理、视频水印。

猜你喜欢
关键帧二进制鲁棒性
用二进制解一道高中数学联赛数论题
自适应无监督聚类算法的运动图像关键帧跟踪
荒漠绿洲区潜在生态网络增边优化鲁棒性分析
有趣的进度
二进制在竞赛题中的应用
基于确定性指标的弦支结构鲁棒性评价
基于改进关键帧选择的RGB-D SLAM算法
基于非支配解集的多模式装备项目群调度鲁棒性优化
基于相关系数的道路监控视频关键帧提取算法
非接触移动供电系统不同补偿拓扑下的鲁棒性分析