首页>论文>正文
日期
06/24
2008
咨询
  • QQ扫一扫

  • Vision小助手
    (CMVU)

一种压缩视频中的隐写算法
收藏
2008-06-24 12:04:29来源:

摘  要: 提出了一种压缩视频中的隐写算法。按照GOP的顺序,在I帧内嵌入控制信息,在P帧和B帧的幅度较大的运动矢量中重复嵌入要传输的秘密消息,以对抗视频处理。消息的提取也是在压缩视频中进行的,且不需要原始视频。首先从I帧中提取出控制信息,然后根据控制信息从P帧和B帧中提取出秘密消息。实验结果表明,该算法具有较好的视觉不可见性,较大的嵌入容量,并且能够抵抗诸如帧丢失与帧添加等简单视频处理。

关键词: 信息隐藏;隐写术;压缩视频;运动矢量;视频处理


1  引 言
计算机与网络技术的迅速发展,使得网络环境下的通信安全日益成为人们考虑的重要问题。隐写术(steganography)为这一问题提供了解决途径。隐写术是信息隐藏技术的重要分支[1]。作为一种新的隐蔽通信方式,其主要目的是通过将秘密消息嵌入到载体中传输,从而隐藏了通信的存在来进行秘密通信。所嵌入的消息必须是不可见的甚至是统计不可检测的,潜在的攻击者不知道通信的存在,仅通信双方能够检测到秘密消息,而且对嵌入容量的要求较高。隐写的载体可以是图像、文本、音频或视频等,其中以图像最为常见。但是随着多媒体技术以及网络流媒体业务的迅速发展,网络上的视频传输越来越常见,在网络上传输视频不会引起怀疑。此外,仅靠肉眼难以观察出由于秘密消息嵌入而导致的视频质量的退化,因为这可能是低质量的视频压缩造成的。这些原因使得以视频作为载体来传输秘密消息成为可能,而且由于视频具有更大的载体空间,在其中将可以隐藏更多的秘密消息。
视频中的隐写主要可分为两类:一是在未压缩的
原始视频中嵌入消息,然后再进行压缩[2,3]。另一种是利用压缩视频流的特点,直接在压缩域中嵌入消息[4,5,6]。对于在未压缩的原始视频中嵌入消息,由于嵌入消息后还要对视频进行压缩,该方法还要考虑如何使得嵌入的消息抵抗视频压缩处理,以防止嵌入的消息在视频压缩时即被去除。本文则是以压缩视频中的隐写术为研究对象,在I帧内采用静止图像中的隐写方法嵌入控制信息,在P帧和B帧的运动矢量中重复嵌入要传输的数据,以对抗视频处理。

2   数据嵌入方法
MPEG数据流主要由头信息、DCT编码数据流和运动矢量数据流三部分组成。DCT编码数据流是对I帧进行帧内编码产生的,而运动矢量数据流是由对P帧和B帧用运动补偿预测技术进行编码产生的。因此应该根据压缩视频流所具有的特点来设计合适的隐写算法。
除了场景变化和快速运动的时候以外,视频中的连续帧看起来都是相似的。因此,有可能增加或丢失一些帧,或者改变相邻帧的顺序,而不会引起太大的失真。由于在一般的视频处理时都可能产生这些操作,因此在设计隐写算法时必须考虑这些问题。通过增加冗余,也就是在一个视频段内重复嵌入消息可以解决这一问题。把该方法称为冗余嵌入,其目的是通过重复嵌入消息来抵抗视频处理,本文即采用了这一方法。
MPEG视频序列中的大部分帧都是采用运动补偿预测技术进行编码的,因此在运动矢量中嵌入消息可以充分利用压缩视频流中的信息,获得较高的嵌入容量。由于采用了冗余嵌入的方法来对抗视频处理,在接收方必须知道冗余嵌入是如何实现的。因此把关于冗余嵌入的信息作为控制信息的一部分嵌入到I帧中。所以具体的算法流程是这样的,在一个视频序列中,按照GOP的顺序,把控制信息嵌入到I帧中,把实际要传输的数据嵌入到P帧和B帧的运动矢量中。

2.1   I帧中的控制信息嵌入

I帧是GOP内的第一帧,对GOP内其它帧的编码都是以I帧为基础进行的,因此在I帧中嵌入消息,以便于消息的提取。因为在P帧和B帧中嵌入的是实际要传输的秘密消息,数据的嵌入通过对符合条件的运动矢量进行修改来完成,因此每个GOP的嵌入容量是不一样的。此外采用冗余嵌入的方法来提高算法的安全性,这可以通过把一个GOP内的可嵌入容量分成几段,在各个段内重复嵌入数据来实现。因此,在I帧中嵌入的控制信息应该包括以下几个部分:该GOP内实际嵌入的消息数量;对GOP分段后,每个段在GOP内的起始位置和结束位置等等。
与P帧和B帧中嵌入的数据相比,控制信息的数量很小,但是很关键,需要被准确的提取出来。I帧是采用帧内编码的方式来进行压缩的,其压缩算法和JPEG类似,因此可以采用针对静止图像的方法来进行控制信息的嵌入。为了获得不可感知性和安全性的要求,选择在量化DCT系数的中频系数中进行嵌入。因此需要首先从视频流中抽取出量化DCT系数,这可以通过对视频流进行小幅度分解,然后进行变长解码(Variable Length Decoding)来实现。在得到量化DCT系数后,通过对其中频系数的最不重要位(Least Significant Bit, LSB)进行修改来嵌入控制信息。由于控制信息的数量很少,因此根据密钥随机选择部分中频系数来进行修改,依然能够满足嵌入容量的要求,而且对视频质量的影响较小。对修改后的系数进行变长编码(Variable Length Encoding),然后再放回到视频流中,形成嵌入了控制信息的I帧。

2.2   P帧和B帧中的数据嵌入
P帧和B帧是采用运动补偿预测技术进行编码的,其中的宏块都有运动矢量,所有的运动矢量都是半像素精度的,可以在运动矢量中嵌入消息。为了保持视频质量,不是在P帧和B帧的所有运动矢量中都嵌入消息,而是在各个幅度较大的运动矢量中嵌入一个比特。运动矢量的幅度较大,表示该宏块具有较快的运动速度。那么对这些宏块的运动矢量进行修改,因嵌入消息带来的视觉失真相对于对所有运动矢量,包括微小运动甚至静止的都进行相同修改来说是最小的。
消息的嵌入是按照GOP的顺序进行的,具体的
消息嵌入过程如下[6]:

4)对一个GOP内所有的P帧和B帧进行上述计算,得出每帧中符合条件的运动矢量数目。对于每个符合条件的运动矢量,可以嵌入一个比特,这样就可以得到整个GOP的嵌入容量。这些数值将被嵌入到I帧中,以便于消息的提取。为了保证数据传输的安全性,采用冗余嵌入来提高秘密消息抵抗视频处理的能力。为了计算简便,将GOP内的可嵌入容量分成四段,在划分时记录下每个段的起始和结束位置,包括该位置是处于P帧还是B帧中,该帧与I帧的距离以及该位置在P帧或B帧中的具体位置等。这些信息将作为控制信息的一部分被嵌入到I帧中;
5)在符合条件的运动矢量中嵌入消息:

6)在一个GOP内,根据计算出的嵌入容量以及每个段的起始位置和结束位置,在各个段内重复嵌入消息。最后在视频序列的每个GOP内都进行了消息的嵌入。

3    数据提取方法
消息的提取也是按照GOP的顺序进行的。对于一个GOP来说,首先需要从I帧中提取出控制信息。对视频流进行分解,并利用变长解码得到DCT系数,根据嵌入时的密钥得到嵌入了消息的中频系数,从中提取出LSB位,即为嵌入的控制信息。接着根据从I帧中得到的控制信息,把秘密消息从P帧和B帧提取出来。

对于一个GOP内所有的P帧和B帧进行上述运算,直至提取出嵌入到GOP内的所有消息。由于采用了冗余嵌入方法,从P帧和B帧中提取出的消息并不是实际要传输的数据。根据从I帧提取出的控制信息中所包含的GOP内各个段的起始位置和结束位置,可以计算得到用该GOP实际传输的消息。同时根据I帧内嵌入的控制信息,还可以对提取出的消息数量进行验证,这可以增加消息提取的准确性。
最后,对于一个视频序列中所有的GOP进行上述计算,直至提取出嵌入的全部数据。

4    实验结果
在实验中,选取两个视频序列“foreman”和“miss_am”作为测试视频,其具体参数见表1。

表1  视频序列参数
 

(a)消息嵌入前                         (b)消息嵌入前

(c)消息嵌入后                         (d)消息嵌入后

图1  秘密消息嵌入前后帧的变化情况

用一个文本文件作为秘密消息嵌入到视频序列中。分别截取序列“foreman”的第274帧和“miss_am”的第25帧,其消息嵌入前后的变化情况如图1(为了便于显示,图像被转换成了灰度格式的)。此外,使用峰值信噪比(PSNR)来定量的衡量消息嵌入对视频质量的影响,如表2。

表2  峰值信噪比

以下分析嵌入容量,每个GOP由1个I帧,3个P帧和8个B帧组成,帧大小为352×288,宏块大小为16×16,则每帧中有396个宏块。表3列出了一个GOP内所有P帧和B帧中的宏块数,以及选择相同的运动矢量幅度阈值时计算得到的嵌入数据量。由于在每个符合条件的运动矢量中都嵌入了1个比特,B帧中的运动矢量数量多于P帧的,且B帧的数量也是多于P帧的,因此B帧的嵌入容量远大于P帧的。此外由于视频序列“foreman”的运动较明显,而“miss_am”中的背景是保持不变的,因此前一个视频序列中符合条件的运动矢量较多,获得的嵌入容量也更大。实验还发现,虽然在整个视频中获得的嵌入容量较大,但是相对于图像中的隐写术来说,单个帧中的嵌入比率较小,这也是视频中的隐写算法所具有的显著特点之一。

表3  一个GOP内的嵌入数据量

实验中,选取不同的运动矢量幅度阈值,得到的结果也是不同的。阈值越小,嵌入容量越大,但是对视频质量的影响也越大。这是可以理解的,因为阈值选取的小,符合条件的运动矢量就多,从而可以嵌入更多的数据,对视频的修改就大,因嵌入而导致的失真也就更大。所以,应该选取适当的阈值,以在获得一定的嵌入容量的同时,尽量减小对视频质量的影响。对算法抵抗简单视频处理的能力也进行了实验,结果表明,由于采用了控制信息嵌入和冗余嵌入相结合的方法,对于丢失或添加少量帧的情况,仍能从中准确提取出秘密消息,但是如果丢失或添加的帧太多,嵌入的消息将无法准确的提取。

5     结 论
本文提出了一种压缩视频中的隐写算法。在一个GOP的范围内,在I帧中嵌入控制信息,同时采用冗余嵌入的方法在P帧和B帧中重复嵌入要传输的数据,提高了抵抗视频处理的能力,但是牺牲了部分嵌入容量。因此,需要研究更有效的方法来进一步增强嵌入容量和算法的安全性。由于只是对幅度较大的运动矢量进行轻微修改,这相当于仅对纹理区域和边缘进行修改,对平滑区域不作修改或仅进行较小的修改,因此这与人眼的视觉特性相适应,可获得较好的不可见性。
此外,实际应用时,应选择具有较快场景变化的视频文件作为秘密消息的载体,这样可以获得更高的嵌入容量,同时可以保证对视频质量的影响较小。

参 考 文 献

[1] Fabien A. P. Petitcolas, Ross J. Anderson, Markus G. Kuhn. Information hiding-A survey [J]. Proceeding of the IEEE, vol. 87, no. 7, June 1999: 1062-1078.
[2] J. J. Chae, B. S. Manjunath. Data hiding in video [A]. In: Proceedings of the 6th IEEE International Conference on Image Processing [C], 1999: 311-315.
[3] Melih Pazarci, Vadi Dipcin. Data embedding in scrambled digital video [A]. In: Proceedings of the 8th IEEE International Symposium on Computers and Communication [C], 2003:498-503.
 [4] A. Giannoula, D. Hatzinakos. Compressive data hiding for video signals[A]. Proceedings of International Conference on Image Processing [C], 2003:I529- I532.
[5] Giuseppe Caccia, Rosa Lancini. Data hiding in MPEG2 bit stream domain [A]. In: Proceedings of International Conference on Trends in Communications [C], 2001:363-364.
[6] Jun Zhang, Jiegu Li, Ling Zhang. Video watermark technique in motion vector [A]. In: Proceedings of XIV Brazilian Symposium on Computer Graphics and Image Processing [C], 2001:179-182.