摘要
在当今的视频传输与广播网络中,版权的保护问题已经变得越来越紧迫。这是因为视频拷贝的出现并没有降低原始视频文件的品质。一种保护版权的方法是在视频序列中嵌入一段数字密码,这段数字密码的学术名称叫做水印。
因此,这篇课题的目的就是研究低复杂度的压缩域H.264视频水印算法。视频编码标准决定了H.264/MPEG-4 AVC的压缩标准。这种算法充分使用了H.264压缩标准了明确性,原始视频的水印也是被随机嵌入的。这些都建立在水印算法安全的基础上。
在这种基于压缩域的H.264视频水印算法方案中,水印可以在没有原始视频序列存在的条件下被检测出来。水印可以在所选的编码器修正系数
的帮助下提取出来。
被提议的视频水印方案
导言
在这项方案中,使用的是被提议的基于压缩域的H.264视频水印算法,它工作在I帧的宏块层上。在这一层上,一个宏块中包含视频帧的一个16×16的采样区域。从这个包含于一个宏块上的16×16采样区域中,我们取出一个8×8的分块。从这个8×8的分块中,我们进一步提取一个4×4的分块,用
,
,
和
表示一个宏块中的4种不同的4×4分块。这个4×4分块将帮助我们在FDCT(快速离散余弦变换)之前构建4×4 DCT系数的输入分块。
对于水印的嵌入过程,选择I帧可以归结于两个主要的理由。首先,仅仅是因为它们的存在对视频序列来说是非常基本的。其次,P帧和B帧被运动补偿高度压缩,它们中只有较少的空间再嵌入水印。一个I帧中的宏块是被内部编码好的,这就意味着在同样的片段里,先前被编码的采样中,每个16×16或者4×4亮度区域和8×8色度区域是可以被预测的。正如表格3.1所示,两种亮度预测模式被赋予了不同的职责。第一,4×4亮度预测模式适用于帧的详细区域选择的;第二,16×16亮度预测模式适用于帧的平滑区域选择的。内部预测之后,残余数据的每个4×4分块被变换为一种整数形式。整数形式,意味着所有工作可以用避免降低解码精确度的整数算法来完成。如果宏块在16×16内部预测模式中编码,所有4×4分块的DC系数就被改变了。这种变换是一种在经过4×4整形变换之后的4×4哈德玛变换而形成的,为了使这些系数能够更加关联。
用被提议的视频水印算法,将水印嵌入到宏块中的一个量化系数中。水印嵌入过程中的量化系数
,是随机选择的,这就保证了方案中水印算法的安全性。即使将水印嵌入宏块的唯一一个量化系数中,也不会导致可见性。这样,攻击者也就不能确定究竟选择的是哪个量化系数。如果他想要使水印检测不能发生,他就必须改变至少一半的量化系数。如果一半量化系数被改变,视频也就无法使用了。
方案中所选的
是宏块中的AC量化系数,它利用
的几个比特来进行水印的嵌入。
控制了第i个宏块的AC量化系数
的选择。这项方案中的用到的视频水印算法,可以在自我联结攻击的情况下防止同样的
被每个视频帧使用,即使这样将会成为传输一个短
的有利条件。为了解决这个问题,我们需要对每个视频帧利用一些不同的
。这能解决一个问题,但是也产生了另一个问题。产生的问题是这样的,在这种情况下,我们需要传送一个很长的密钥
。传送一个很长的密钥
所带来的问题是,我们所用的基于压缩域的H.264视频水印算法根本无法实施。这个问题通过生成一个普通的密钥
来解决。
是来自一个公钥
和一个私钥
的结合,
是从宏块中提取的,它具有鲁棒性,
是被版权拥有者所拥有的,如图3.1所示。从每个宏块中提取
,用一种明文形式将
和
输入到一个密码系统中。密码系统产生一段密文,这就是第i个宏块详细的密钥。在这种情况下,利用一种又快又简单的视频水印方案比密码系统的安全性要高。
在这一过程中,我们利用了明文
和
的模二运算作为转换密码。密钥
的两个比特决定了宏块中8×8分块的选择,另两个比特决定了8×8分块中的4×4分块。在水印嵌入过程中,所选的4×4分块中的AC系数
是由4个比特的和所决定的。
宏块的一些特征系数很敏感,它们决定了一旦有些细微的扰乱,视频序列的品质就会降低。
应该被提取出来,以防攻击者想要细微的改变这些特征系数,然后视频序列的品质就降低了。这些特征系数在宏块中是确实存在的,因此应该切实得考虑它们。在这篇文章中,我们使用宏块中
分块的水平差分直流DC系数作为一种特征系数来提取
。第二种方法是利用宏块中的垂直差分系数
.
在水印嵌入过程中,我们只是利用了4×4内部预测编码的宏块。不用
预测编码宏块的理由是这样的,
内部预测模式已经被帧的平滑区域使用,同时水印的嵌入导致了
内部预测模式的可见性。另一个理由是,
内部预测编码的哈德玛变换增加了DC系数的去相关性,而且,许多去相关DC系数的值是零。所以,懂得怎样从宏块中提取
是很重要的。
公钥
的提取
应该用一种具有鲁棒性的方法提取,这样就能防止对视频序列的有害影响。这意味着
的提取不仅具有随机性,而且具有鲁棒性。为了完成目标,一种特性是利用了人类视觉的敏感性,还有一种是利用
分块的DC系数。虽然现在有两种特性我们可以使用,但是我们必须找出一种最好的方法来防止攻击者的攻击。
我们可以用DC系数本身来提取公钥
。但是在这种方法中存在一种威胁,攻击者已经有能力用精确的方法改变每个宏块的DC系数,而不影响宏块的总数。这样做的后果是,水印的检测会被完全阻碍,也就是说水印将不可能被提取。对这种行为的后果是可以预见的,尽管这种后果不会造成视频帧品质的改变。
另一方面,也可以用图3.1所表示的
分块的差分DC系数来提取
。使用这种方法后,攻击者将很难让版权拥有者对水印的检测不能发生。这是因为,他必须完成一个或多个宏块中DC系数的增加或减少,使
的提取完全不可能。一旦攻击者完成这项操作,将会造成可见性被辨认出的后果。用
表示
分块中的差分DC系数来提取
,如图3.1所示,1≤α≤M,1≤β≤N ,M × N是视频帧的总共大小。
另一个提取
的特征系数是垂直差分系数,
当
时,变化为
公钥
的决定
首先,我们提取第i个宏块中的
分块的
系数;第二,我们希望所有这些提取的
系数将呈现一种混乱形式。为了达到这个目的,所有提取的
系数将呈现为DC系数的矢量形式
。矢量形式的量化DC系数
是在第i个宏块中的,它是由24个块构成的。亮度分量Y提供了16个块给
,而色度分量
和
各提供了4个块给
,如下图3.3所示。
用第i个比特位表示出构成公钥的
所在第i个宏块中的位置。公钥在宏块中的位置,是从矢量形式的量化DC系数
中获得的。下面的式子就是获得的方法:
水印的嵌入过程
在压缩域的水印嵌入过程进行之前,首先要进行压缩视频比特流的解码,这是为了更接近熵编码标准。一旦熵编码标准与水印嵌入过程更接近以后,计算量将更少,因此也更适合于实时应用。此外,水印嵌入过程越接近DCT变换过程,对压缩视频比特流的品质影响就越小。在量化之后进行水印的嵌入过程是非常值得的,这是为了确保水印没有被消除,量化过程也没有产生损耗。因此,在这篇文章中,我们准备在重新排序的量化AC系数中嵌入水印。这是因为这样将避免量化过程产生损耗,熵编码与解码是一个快速的过程,水印的嵌入与提取也可以在实时的状态下完成。
我们可以发现,
实际上是由24个比特构成的,这些比特没有完全被利用。只有其中的几个比特,在系数
中被选择出来用作水印嵌入。从第i个宏块中选取的系数
是被修正过了,为了在宏块中嵌入水印信息
。如下所示的表格3.2揭示了所选系数
的修改方法。
V是原始视频序列,
是水印嵌入后的视频序列,S是比例系数,
是嵌入第i个宏块中的水印信号,
是第i个宏块中随机选取的用作水印嵌入的修正系数。从下面的式子中,我们可以得到嵌入水印的视频序列。
(8)
当
时
(8)式变化为
这只是最大限度改变水印嵌入的量化系数的一步,因此,一个宏块修正的量化步长值和同一个宏块的非量化DCT系数一样大。最终,水印嵌入导致的量化误差造成了视频的品质降低了。