1. 引言
到今天为止,影视盗版依然是危害娱乐产业可持续发展的一大问题,为了解决这个风险问题,常见的做法是使用加密算法等基于内容保护的条件接收系统(conditional access system, CAS)或者数字版权管理(digital right management, DRM)以确保传输途径的安全。然而这种保护措施下的视频文件最终还是需要将内容呈现给终端用户,对于盗版者直接使用一个摄像机在屏幕前记录显示画面的手段,原有保护措施无效。因此现在迫切需要一种能够直接针对于视频内容侵权检测的方法。
针对目前的实际检测需求,现有两种相对应的检测方案:
第一种是基于水印的检测方法,基于水印的检测方法属于一种隐式的鉴定策略,该方法是在视频呈现的内容里插入可用于司法鉴定的水印,水印本身不会伴随数字模拟信号的转化消失。当一个盗版视频出现在一个未经授权的销售平台时,可以通过水印追踪到上传用户或者制作盗版的设备信息。
第二种方法是基于视频内容失真的检测方法。该类方法针对不同的失真情况有分别不同的对应方法:Xavier Rolland-Neviere [1] 等人根据电影被投影时会引起屏幕空间上的亮度重分配,垂直投影在屏幕上的图像是稳定的,以及高频闪烁的显示屏与摄像机快门之间的相互作用三种效应提出了相对应的三种检测方法。Lee [2] 等人于2012年提出了利用隔行扫描显示设备具有的视频综合物体边界梳妆纹理效应对重拍摄视频进行检测的方法,它基于显示屏隔行扫描产生的综合效应,其算法首先寻找定位图片中的边缘区域,然后计算边缘区域的定向不平等性(directional inequality),以此做为特征,最后结合分类器判断分类判别待测图像是否经过重拍摄。Marco Visentini-Scarzanella [3] 等人于2012年提出了利用手持拍摄视频具有的全局运动特征对手持重拍摄视频进行检测的方法。该算法先跟踪视频中的运动轨迹,然后利用小波分解提取视频中的高频运动矢量,并对其建立关联矩阵,最后使用分类器提取矩阵的KL散度以判别视频是否为重拍摄。P. Bestagini [4] 等人提出了利用重拍摄的视频所具有的由于摄像机与显示屏之间缺少同步性而产生的块重影现象对重拍摄视频检测的方法,该算法先对视频使用滤波器去除周期性的效应,然后深入解析视频编解码中的去块重影滤波器步骤,通过阈值判断视频是否经过了去块重影步骤,并以此判断是否为重拍摄视频。Juan Jose Moreira-Perez [5] 等人提出了利用图片重拍摄色彩偏差和色彩饱和度的特征对图片进行重拍摄检测的方法。Thirapiroon Thongkamwitoon [6] 等人利用图片的每一次量化过程都会使得图像边缘进一步的失真的特性对图片进行重拍摄检验的方法,该算法首先通过线延伸轮廓提取图片中的边界特征,然后将该特征与原始图片和重拍摄图片的边界字典进行计算,最后使用SVM分类器将计算所得的稀疏表示误差与平均线延伸长度进行分类以得到最终检测结果。Babak Mahdian [7] 等人提出了利用被重拍摄视频在LCD显示屏的像素网格上会出现一定的周期性效应的对视频进行重拍摄检测的方法。Yuxing Wu [8] 等人提出了一种可以应用于视频图像的速度场计算公式,使速度场可以应用到视频领域。文献 [9] [10] [11] [12] [13] 提出了关于重拍摄检测的一个新领域——设备检测,通过对重拍摄视频内容的某些特征提取观测可以推断出二次拍摄设备的一些信息,并给出各类录像设备的实验参数比较。
本文提出了一种基于速度场的手持重拍摄检测算法,分析手持重拍摄视频帧间的速度变化,结合了手持视频的特点与速度场算法 [8] ,提取出一组能对手持重拍摄的视频进行准确检测的特征,并使用SVM对结果进行分类。
2. 手持特征概述
手持重拍摄的视频相对于静止拍摄的视频而言,该类视频会带入由于手持录像设备不稳定而使得重拍摄画面产生全局性无规律抖动的现象。本文尝试从视频时域的角度来分析该种现象,并结合速度场的相关知识,提出了一组基于速度场的二维手持视频特征。
2.1. 手持特征分析
如上所说,手持重拍摄会在视频中引入一个全局性无规律抖动的现象,如图1所示。对于一般的视频来说,视频帧内部的运动是有其内在的趋势的,这也是视频压缩的原理,而对于手持重拍摄而言,手部的抖动是如量子化一般无法人为进行控制的,没有方法可以预测到下一次手部抖动的运动趋势。
因此如果能够提取视频中的运动趋势,对其加以解析,就可以通过视频帧内运动趋势的无序性或有序性来判定视频是否经过手持重拍摄。
2.2. 速度场理论
速度场的概念来源于粒子图像测速技术(Particle Image Velocimetry, PIV),该技术被广泛用于表示物体的运动速度和方向。随着电脑和多媒体处理技术的发展,PIV技术逐渐演变成为数字粒子图像测速技术(Digital Particle Image Velocimetry, DPIV),DPI V的技术要点是精确计算相邻两张图片中的位移矢量。速度场凭借其度量精准,系统简单,不会对本身流场产生影响以及计算相对快速等特点被广受关注。
在速度场算法中将原有的图片以16 px × 16 px区域块为单位,将一张图片划分为多个速度场区域块,使用基于时域的互相关算法计算每一个区域块的位移矢量,具体算法由文献 [8] 给出,位移矢量由水平分量和垂直分量构成,通过对两个分量的计算可以得到区域块的位移矢量的运动方向和运动速度大小。
本文特征算法使用速度场工具,量化相邻两帧视频帧中的运动趋势为位移矢量,之后对位移矢量进行分析以提取所需的手持特征。
2.3. 基于速度场的二维手持特征
如上文所说,通过速度场可以获取视频中相邻两张帧的位移矢量,其中位移矢量包含运动方向和运动速度大小两个方面,对于手持重拍摄视频产生的全局性无规律抖动这一现象,本文算法选取位移矢量中的运动方向为主要考察点。
以25 fps帧率的视频为例,相邻两帧间隔为0.04 s,对于原始视频帧内宏观状态的大多数运动物体而言,在0.04 s的时间内物体的运动方向基本一致;而对于手持重拍摄视频内的物体而言,会出现前后运动方向可能一致,也有可能有很大的区别,甚至180度反向的可能。
本文算法针对手持重拍摄视频运动方向可能出现的各种情况,在运动方向所在的二维平面上根据x轴,y轴以及两轴之间的45度角平分线,将该平面划分为8个区域,如图2(a)所示,任意一个向量都可以划分到8个区域中的一个,然后将其所在区域与相邻区域都被划定为运动方向基本一致的区域,以红色为标注。以图2(b)中的位移矢量为例,该位移矢量属于1区域,将1,2,8区域标红。如果下一个相邻同位置的速度场区块所在方向属于红色区域则认定为两个运动方向基本一致;如果不在红色区域,而在3,4,5,6,7的黑色区域,则认定为该区块的两个运动方向不一致。
对于一个固定的视频,其速度场区块数目是确定的,假定为n块,假设其中有m个区块被划分为运动方向基本一致,m/n值越大则表示相邻速度场运动方向相似,m/n值越小则表示相邻速度场运动方向存在差异越大,m/n可以表示为量化后的速度场方向变化程度。
对于原始视频而言,因为不存在手持导致的全局性无规律抖动,得到的多组m/n值一般都比较大,且整体波动较小;而对于手持重拍摄视频而言,得到的多组m/n值一般都比较小,且整体波动较大,因此提取多组m/n值的平均值和方差作为最终的二维手持特征。
3. 基于速度场的手持重拍摄视频检测算法
3.1. 算法框架
基于速度场的手持重拍摄视频检测算法的具体框架如图3所示,对于一部视频而言,在本文算法中一共有以下5步进行处理:1) 对视频解码成帧;2) 提取视频相邻帧的速度场;3) 比对相邻速度场的方向并对其进行区域判定和速度场方向变化程度计算;4) 统计速度场方向变化程度值的平均值与方差;5) 使用SVM分类以得到最终结果。

(a) (b)
Figure 2. Move direction area divide. (a) Area partition; (b) Vector example
图2. 运动方向区域划分图。(a) 区域划分图;(b) 某向量示例图
3.2. 算法流程
如上文所说,本文以视频的运动趋势差异为主要分析点,综合运动强度与运动频率特性,使用相关的算法提取特征从而达到手持重拍摄视频检测的目的。
本文算法流程如图4所示,算法流程的详细步骤会在之后的章节给出。
3.3. 速度场计算
对测试视频进行解码操作,以得到多张视频帧,使用速度场算法计算相邻(或相邻几帧)视频帧的速度场,可以得到多个速度场矩阵。
速度场公式由文献 [8] 给出,对于一个分辨率为M*N的视频,对其进行s*s分块,令
表示为t帧在
位置的图像分块,其速度向量
计算公式如下:
(1)
其中F是傅里叶变换,
是傅里叶反变换,*为复数共轭,
表示的是t帧在
图像块的速度向量,那么t帧的速度场可以被记为
。
速度场矩阵由水平速度场矩阵和垂直速度长矩阵构成,通过对速度场某一区块的水平速度和垂直速度提取计算,可以获得该区块的速度大小与方向。
需要注意的是,在实验中使用矢量图观测速度场发现:
1) 对于静止的视频,只需计算相邻帧速度场就能得到比较清晰一致的运动轨迹;
2) 对于动态的视频而言,使用矢量图观测运动轨迹不是很清晰,很难鉴定该运动轨迹是由帧内运动造成还是由手持抖动造成。
这是因为动态视频中相邻单帧的手持抖动运动轨迹与视频内部本身的运动轨迹差别较小,以25 fps的视频为例,相邻两帧间的时长仅为0.04 s,视频在0.04 s的时间内帧内运动的轨迹长度与手持抖动造成的视频全局性轨迹长度难以明确区分。
因此这里引入了手持特征的运动频率特性的考虑,使用了减采样的方法。取待检测视频,每次分别间隔视频相邻
帧做速度场计算,即第1次为全部采样,第2次取
帧进行采样,第3次取
帧进行采样,以此类推,共做5次。用减采样的原因是通过增加采样间隔能使帧间差异在时域上变长,由于帧内运动是低频且有序的,时间跨度的增加会使运动轨迹长度增加,而手持抖动特征的高频与无序性不会使手持抖动轨迹长度增加,从而达到分离两者的目的。
3.4. 速度场变化程度提取
在上一步操作中,我们获得了一个视频中的多个速度场矩阵,下面将对速度场的矩阵进行处理:
首先提取速度场中的每一区块的速度方向,并对其判定所属区域。区域划分如图5所示。
所属区域共分8格,以x轴,y轴以及45度角平分线划分速度方向区域,对比相邻两个速度场在同一区块速度场的方向,并统计属于同一方向或相邻区域方向的位置数量。
以图5为例,如(a)中前速度场中某区块指向了1区域,则对1以及其相邻的区域(2,8)标红,如果后一个速度场对应该区块的方向落在标红的区域内,则认为该速度场区块方向变化小,如图(b),将该块归类为速度场变化程度小;如果后一个速度场对应该区块的方向,没有落在标红的区域内,则认为该速度场区块方向变化小,如图(c),将该块归类为速度场变化程度大。
设速度场中所有区块的数量为n,统计该速度场中所有速度场变化程度小的区块数量为m,然后计算速度场方向变化程度(velocity change, VC),公式如下:
(2)
(a) (b) (c)
Figure 5. Area divide. (a) Pre-velocity field move direction; (b) Post-velocity field move direction 1; (c) Post-velocity field move direction 2
图5. 区域划分图。(a) 前速度场中某个区块的方向;(b)后速度场中对应某个区块可能的方向1;(c) 后速度场中对应某个区块可能的方向2
速度场的变化程度(VC)体现了这个速度场中的运动趋势特性,VC值越高表示在该速度场中,运动方向变化小的区块数量越多,变化大的区块数量越少,体现了前后两帧之间的有序性;与之相反,VC值越低表示在该速度场中,运动方向变化小的区块数量越少,变化大的区块数量越多,体现了前后两帧之间的无序性。
同样需要注意的是,在实验过程中发现:
背景静止的视频在静止背景上同样出现细微速度场区块,但是速度场强度很小,根据经验判断为背景噪点,噪点的出现也是属于无序的运动,在实验中是很难区分该速度场方向的变化由噪点引起的还是由手持抖动引起的。
视频的背景噪点是由于录像设备所决定基本都会存在,产生细微速度场的原因是由于速度场本身非常敏感,细微的噪点运动也会引起速度场的强度的变化。
因此这里引入了手持特征的运动强度特性的考虑,使用了设定阈值的方法。在实验数据分析时发现,速度场中会出现区块强度小于最大强度0.1%的数据,这部分的数据通常都出现于背景上并且强度非常小,根据经验判断为噪声因素,但是由于速度场非常敏感,在之前的实验统计中由噪声带来的速度场强度变化也全部计入总数,导致实验结果误差偏大。因此这里设定阈值为速度场计算所得最大区块强度的0.1%,如果速度场区块强度如果低于设定的阈值,则不计入之后的区块统计。
3.5. 手持二维特征提取
在上一步操作中,我们获得了视频对应的一组速度场的速度场变化程度,即一组VC值,如图6所示:
观测对比手持重拍摄视频与原始视频两组VC值发现:1) 手持重拍摄视频的VC值的平均值明显低于原始视频。2) 手持重拍摄视频的VC值的波动程度明显大于原始视频。
因此本文提取VC值的平均值与方差作为二维特征,计算公式如下:
(3)
(4)
(a)
(b)
Figure 6. VC value. (a) VC value of origin video; (b) VC value of recapture video
图6. VC值。(a) 原始视频VC值;(b) 对应原始视频的手持重拍摄视频VC值
3.6. SVM分类
SVM即支持向量机,属于机器学习领域中一个有监督的学习模型,通常用于模式识别与分类。
SVM的主要思想概括来讲为以下两点:
1) 针对线性可分情况直接进行分析;
2) 针对线性不可分情况,通过非线性算法将低维输入空间的不可份样本转化至高维空间,使其线性可分。
在本文算法中使用matlab自带的SVM工具完成最后的训练和测试步骤。因为本文算法特征已经高度总结了手持重拍摄对视频的影响,最终的手持特征只有两维,只需要在两维平面上就可以完成,而不需要高维的线性算法,因此直接使用matlab中自带的SVM工具进行训练测试即可。
4. 实验与分析
4.1. 数据集
本文使用了从YUV序列挑选的10部视频(Waterfall, Paris, Hall monitor, Container, City, Bridge, Akiyo, Salesman, Station, Old town crossing)如图7所示,以及对应的10部重拍摄视频,以每30张帧提取为一个视频,共提取了正负样本共700段,其中包括由原始视频截取的正样本350段,由重拍摄视频截取的负样本350段,然后从正、负样本中各选取一半共350段样本用作训练集加以训练,正、负样本中剩下的350段视频用作测试集加以测试。之所以选取以上10部视频是因为需要与对比论文 [3] 中的数据集保持一致。
4.2. 实验结果与分析
用作测试的350段视频中,由原始视频截取的175段正样本里有169段视频被判断为原始视频,有6段被判断为重拍摄视频,由重拍摄视频截取的175段负样本则被全部判断为重拍摄视频,实验结果如表1所示。
纵观表1,我们可以得出以下结论。
1) 从表中数据可以看出本文算法在正样本的检测上准确率达到了96.6%,在负样本的检测上达到了100%,平均准确率达到了98.3%,实验表明了本文算法中的二维手持特征能很好的区分手持重拍摄视频与原始视频。
2) 本文算法还与Marco Visentini-Scarzanella’s [3] 的算法进行了对比,Marco Visentini-Scarzanella’算法的准确率有文献 [3] 给出,本文算法在TPR上提高了6.6%,在TNR上提高了30%,在平均准确率上提高了18.3%。实验表明了本文算法对于手持重拍摄视频而言有着更好的检测准确率。
4.3. 误差分析
本文算法实验的所有测试样本中,175段正样本内有6段被误判,而在175段负样本内没有漏判的情况,对误判的6段正样本视频进行误差分析,观察原始视频时发现都来源于同一部YUV序列,如图8所示。
从图中可以发现原始视频中有很明显的不规则的彩色条纹,彩色条纹的实质是拍摄原始视频时的背景噪声,这严重影响了视频的质量,导致在实验中难以区分速度场的变化是由噪声引起的还是手持特征引起的,也因此导致了误判的发生。
4.4. 算法效率统计
本文算法统计了检测视频在各个阶段的耗时比较,默认svm已经在测试前训练完成本文算法模型,对10段长度为300帧,分辨率为352 × 288的视频进行检测,统计各阶段耗时,结果如表2所示。
从表中我们可以看出,检测10部长度为300帧,分辨率为352 × 288的视频,步骤中涉及到的本文算法的总用时是3.44 s秒,平均每部用时0.34 s,这说明本文算法的检测效率非常高,可以适用于平台性的大规模视频检测。
5. 总结
本文提出了一种基于速度场的手持重拍摄视频检测算法,该算法有效的利用了手持拍摄视频在时域上的无序性从而与原始视频进行区分。算法具体流程中通过提取视频相邻帧建的速度场,利用速度场改变方向区块的比例来量化该种特性,并通过减采样的方法将无序性放大,还利用了阈值进行去噪,使得
TPR:true positive rate,在本文算法中表示原始视频被判断为原始视频的概率;TNR:true negative rate,在本文算法中表示重拍摄视频被判断为重拍摄视频的概率。
手持抖动特征在无序性特征上能够更精确。实验结果表明,手持抖动的无序性特征能够有效的对手持重拍摄视频与原始视频进行区分,该算法针对手持重拍摄视频有非常好的检测效果,并且检测的效率非常高。但是,如果视频中的噪声过大会影响最终的实验结果,因此下一步的工作目标是对视频噪声和手持抖动特征进行更好的分离。
致谢
在此感谢国家自然科学基金项目的支持,感谢研究生导师孙锬锋先生与蒋兴浩先生的指导和帮助,也要向所有文献作者与研究相同领域的前辈们表示由衷的感谢。