1. 引言
互联网的发展与普及,使得信息传递更加便捷。但在公开信道上传输的信息极易遭到拦截、窃取、破坏、篡改,不仅个人、企业不堪其扰,国家安全也受到了威胁,因此,确保信息安全变得尤为重要。保证信息安全最基本的方法是加密,它通过置乱消息的内容使攻击者无法读懂消息。但加密的内容更容易引起攻击者的好奇和注意,并有被破译的可能。而信息隐藏技术作为保证信息安全的另一手段,通过隐藏通信的存在很好的解决了加密的缺陷,从而受到广泛关注 [1] [2] 。
信息隐藏技术是将秘密信息嵌入公开载体(文本、图像、音频、视频)中,在不引起第三方注意的情况下完成隐蔽通信的一种手段。具有安全性、大容量两个重要特性。安全性要求对载体的修改在人类可感知范围之外,以此降低隐蔽通信被发现的可能性;大容量性则要求载体有尽可能多的冗余用于隐藏信息。相对于文本、图像、音频等信息隐藏载体,数字视频具有信号空间大的特点,能够满足信息隐藏大容量嵌入信息的需求。
在以往的基于MPEG1和MPEG2视频编码标准的信息隐藏技术中,通过直接调制量化后的DCT系数来隐藏信息,而H.264/AVC标准引入了帧内预测编码、可变块大小运动补偿及基于上下文自适应熵编码等新特性 [3] [4] ,预测残差在经过4 × 4DCT变换、量化之后,系数大部分为0或±1,这使得轻微的变动足以影响视频比特率及质量,所以以往的图片和视频编码标准中的DCT域隐藏方法不能直接应用到H.264/AVC标准中,必须深入研究H.264/AVC标准的特性并探讨新的信息隐藏方法。
2. 相关工作
目前,很多学者对基于H.264/AVC标准的视频隐藏做了研究,主要通过调制帧内、帧间预测模式 [5] [6] [7] [8] [9] ,修改帧间预测中运动矢量的大小 [11] ,调制熵编码过程中QDCT系数及码字 [12] [13] 等来实现秘密信息的嵌入。
文献 [5] 根据10个视频序列的统计数据在帧内4 × 4亮度块与秘密信息之间建立映射,并通过修改帧内4 × 4块的预测模式隐藏1比特信息。信息嵌入容量由一个能量参数 控制。该算法的映射规则建立在测试序列分析之上,对于其他视频序列,该规则未必是最优的。
文献 [6] 在帧内和帧间预测编码中,基于分块大小与秘密信息间建立映射。此算法在比特率增加很小及视频质量无主观恶化的情况下能够有效的隐藏秘密信息。
文献 [7] 利用帧内4 × 4块预测模式的奇偶性与待嵌信息间建立映射,并引入矩阵编码技术,调制一个块的预测模式能够嵌入2比特秘密信息。该算法具有较高的数据嵌入率。
文献 [8] 利用LSB嵌入思想,将4 × 4帧内预测模式调制为与秘密信息奇偶性不同的次优模式。算法没有对用于隐藏的块进行筛选,如果最优模式与次优模式差值较大时,模式的修改对视频质量影响较大。文献 [9] 对 [8] 做了改进,选择参考亮度值接近的帧内4 × 4亮度块进行嵌入。改进的算法具有良好的不可见性。
文献 [11] 基于运动矢量进行隐藏,通过对不同宏块类型赋予不同的阈值来进行信息隐藏点的选择,并引入菱形编码,减少运动矢量修改率,提高了嵌入容量。但以上基于预测过程和运动矢量的隐藏方法或多或少都改变了视频的比特率。
文献 [12] 通过修改CAVLC最高频拖尾系数的符号嵌入1比特信息,该方法保持信息嵌入前后比特率不变,但用于嵌入信息的数据块的位置不可控,调制所有最高频拖尾系数符号嵌入信息时,视频有较大失真。文献 [13] 和文献 [12] 相同,通过调制拖尾系数符号嵌入秘密信息。其首先使用随机数生成器生成随机嵌入位置,然后调制所有拖尾系数符号的校验和并随机调制一个符号位来嵌入1比特信息。该方法在保持比特率不变及视频质量的同时保证了嵌入信息的安全性,但其信息嵌入容量十分有限。且在调制3个拖尾系数符号中的1个时只能嵌入1比特秘密信息,嵌入效率较低,没有充分利用H.264/AVC拖尾系数符号的冗余特性。在保证隐藏信息安全性及视频质量的同时,为提升信息嵌入效率及容量,本文提出了一种基于H.264/AVC基本档次CAVLC过程的信息隐藏方案,根据拖尾系数个数来调整秘密信息嵌入数目。信息的提取过程中只需解码4 × 4亮度DCT块的CAVLC过程即可。
本文其余部分安排如下,第三部分简要介绍H.264/AVC的CAVLC基本原理及编码过程。第四部分,将详细描述提出的信息隐藏算法的原理及算法实现主要步骤。第五部分是仿真结果及分析。第六部分给出结论。
3. H.264/AVC中的CAVLC
H.264/AVC熵编码方法有两种,其一是基于上下文的自适应可变长编码(CAVLC),另一种是基于上下文的自适应二进制算术编码(CABAC)。两种算法各有优劣,CABAC以低比特率的特征应用于H.264的主要档次。而CAVLC则以低计算复杂度、低耗时的特点应用于H.264的基本档次。
3.1. CAVLC基本原理
H.264的CAVLC用于对亮度和色度残差数据进行编码。经过预测、变换、量化之后的4 × 4系数块多半都是稀疏的(大部分为0)。这些数据块经zig-zag扫描重排序后,得到一维数组。图1是某一4 × 4亮度残差块zig-zag扫描示例,可以看出,幅值大的位于数组前端,而后端大部分是±1和0。CAVLC使用游程编码来紧凑表示零串以达到压缩冗余的目的。由于相邻块的非零系数个数通常是相关的,对系数个数的编码使用码表,而表的选择依赖于相邻块非零系数的个数,这体现了基于上下文的思想。CAVLC充分利用残差数据的特性进行编码,在减少数据冗余的同时,提升了H.264的编码效率。
3.2. CAVLC的编码过程
CAVLC的编码过程主要有以下5个步骤:
Figure 1. Zig-zag scanning of 4 × 4 blocks
图1. 4 × 4块zig-zag扫描
1) 对非零系数的数目(Total Coeffs, TC)和拖尾系数数目(Trailing Ones, T1)进行编码。其中TC {0, 1,…16},T1 {0, 1, 2, 3}。以逆zig-zag扫描的顺序,如果±1的个数大于3,则只取前3个为拖尾系数。编码基于左邻及上邻块的非零系数个数得到NC值,并通过查表的方式获得编码比特流。共有4个变长表格和1个定长表格可供选择。
2) 对拖尾系数的符号(Trailingones sign flag, T1s)以逆zig-zag扫描顺序进行编码。其中“−”用比特1表示,“+”用比特0表示。
3) 对除拖尾系数之外的非零系数的幅值(level)进行编码。幅值由两部分组成:前缀(level_prefix)和后缀(level_suffix)。通过计算level_prefix和level_suffix的值并查表得到编码比特流。
4) 对最后一个非零系数前零的数目(TotalZeros)进行编码。其中TotalZeros是指按照正向扫描的最后一个非零系数前零的总数,同样通过查表编码。
5) 对每个非零系数前零的个数(Runbefore)查表编码。按照逆zig-zag扫描的顺序进行,其中最后一个非零系数前零的个数不需要进行Runbefore编码,如果没有剩余的零需要编码(Runbefore=TotalZeros)时也无需进行Runbefore编码。
4. 基于CAVLC拖尾系数的信息隐藏算法
分析3.2中CAVLC编码过程可知,只有第二步中拖尾系数符号编码时不使用码表,且修改拖尾系数符号不会影响其他编码步骤。这保证了信息嵌入前后码流总比特数不变。因此,本算法通过选择I帧、P帧中合适的4 × 4亮度DCT块,在其CAVLC编码过程第二步的拖尾系数符号与秘密信息间建立映射来嵌入信息。
4.1. 待嵌信息预处理
Logistic混沌序列是源于人口统计的非线性动力学系统,是一个已经被证明安全性的完全成熟的映射 [10] ,对初始值和参数及其敏感。为了提升信息隐藏方法的安全性,本算法首先利用logistic混沌序列对待嵌信息进行加密预处理。其系统方程如下:
(1)
其中,u是控制参数,
。当满足
,且
时可以认为此系统是混沌系统。
具体预处理过程为,设待嵌秘密信息序列
,则
。设定
及控制参数u的值,并带入式(1)迭代
次,可得到logistic混沌序列。为实现对待嵌信息的加密,需要把序列L的各个值映射为数值0或1。设置阈值
,映射关系如下所示,
(2)
则根据式(2)可得映射之后的序列为
。最后将序列
与待嵌信息序列S对应位置进行异或,得到加密后的信息序列
,
即为预处理后用于隐藏的信息序列。
4.2. 嵌入块的选择
4.2.1
. 候选块
H.264的帧内预测包含4 × 4和16 × 16两种亮度预测模式,对于16 × 16模式的块,在4 × 4DCT变换之后,还需要将其直流系数组成新的4 × 4矩阵,并进行Hadamard变换及量化。CAVLC过程中也需要对这些直流系数块编码。由于直流系数在低频域,更改系数将对视频主观质量造成较大影响,因此,本算法嵌入信息时不选用亮度直流系数块。另外,在拖尾系数数目为零的块无法嵌入信息。所以,基于人眼特性及以上原则,用于嵌入信息的候选块应满足以下三个条件:一、4 × 4DCT亮度块;二、非直流系数块;三、拖尾系数数目不为零。
4.2.2
. 宿主块
宿主块,即实际用于隐藏的候选块。当选取所有的候选块进行信息嵌入时,视频图像有较大失真,因此本算法设定参数E来限制用于隐藏信息的宿主块。例如,当E = 12时,则将每12个候选块分为一组,只在分组的第一个块隐藏信息。E取其他值时操作同上,通过调节E的大小能很好的保证视频质量。
4.3. 映射规则
为了充分利用CAVLC拖尾系数符号冗余且减少秘密信息嵌入带来的视频失真,本算法在拖尾系数个数为1-2的块中只修改最高频的符号位来嵌入1比特秘密信息。当拖尾系数数目为3时,引入矩阵编码技术,至多修改1比特数据嵌入2比特秘密信息。
已知待嵌秘密信息序列为
,以逆zig-zag顺序扫描的拖尾符号分别为
,
,
(如果存在),则对于不同拖尾系数数目的宿主块,分以下两种情况:
1) 当拖尾数目为1~2时,只调制最高频拖尾系数符号
来嵌入1比特信息,映射规则如下,
(3)
其中,
表示对
取反,
代表嵌秘之后的最高频拖尾系数,
表示将要嵌入的第i比特信息。
2) 当拖尾数目为3时,采用矩阵编码技术隐藏。其通用形式是
,即用n个原始数据比特负载k比特秘密信息,对数据的更改最多也只有1比特,用三元组表示为
。在这里,选取
,
,即用3个原始拖尾符号负载2比特秘密信息。具体映射规则如表1所示。
其中,符号“
”表示异或运算。若当前有2比特待嵌秘密信息
,3个原始拖尾符号
,
,
,则有以下等式:
(4)
根据表1的映射规则可知,调制,即可实现秘密信息的嵌入。
4.4. 信息隐藏步骤
算法的整体隐藏框架如图2所示,在编码端,首先利用logistic混沌序列对伪随机秘密信息进行加密,后根据4.2中嵌入条件确定宿主块位置,并通过判断拖尾系数的数目,选定映射规则将信息嵌入拖尾系数符号位中,得到隐藏信息后的比特流。
4.4.1
. 信息嵌入过程
具体的信息隐藏方案如下:
1) 对待嵌秘密信息进行logistic混沌加密,以增强算法的安全性;
Table 1. Secret information mapping rules
表1. 秘密信息映射规则
2) 设定嵌入参数E,并标记分组中宿主块位置;
3) 判断当前块是否为候选块,若否,则对当前块正常编码并继续执行当前步骤;
4) 根据参数E判断当前块是否为宿主块,若否,则对当前块正常编码并返回步骤3;
5) 判断当前宿主块拖尾系数数目是否为3,若是,则基于表1的映射规则进行信息嵌入,否则利用式(3)嵌入信息;
6) 判断秘密信息是否嵌入完毕,若是,则嵌入结束,否则返回步骤2。
4.4.2. 信息提取过程
信息提取过程不需要完全解码,只解码拖尾系数符号即可。具体提取过程如下:
1) 设定与编码端相同的参数E,并标记分组中E个宿主块位置,然后根据秘钥生成混沌序列L;
2) 判断当前块是否为宿主块,若否,则正常解码当前块并继续执行此步骤;
3) 判断当前宿主块拖尾系数数目是否为3,若是,则基于表1映射规则提取信息,否则直接提取最高频拖尾系数为秘密信息;
4) 判断是否所有秘密信息都已提取完毕,若否,则返回步骤2;
5) 将步骤1生成的混沌序列L与提取的秘密信息对应位置逐个进行异或,得到原始信息。
5. 实验结果
为了对提出的信息隐藏方案进行验证,基于H.264/AVC参考软件JM19.0 [14] 进行了仿真。实验中用到ice,city,soccer,foreman共4个标准QCIF测试序列。JM参考软件主要编码配置参数如表2所示,其余参数采用软件默认设置。
实验选取了4个视频序列的前50帧进行测试,并从以下几方面对算法进行评估。
A) 嵌入信息前后视频主观质量评价
图3是4个序列嵌入信息前后的第25帧图像,其中(a)是原始重建图像,(b)、(c)分别是E取16、20时的嵌秘图像。与原始视频重建帧对比分析可得,(b)、(c)中图像质量均无明显恶化。
B) 客观质量评价
为对提出的算法进一步评估,引入了4个客观质量评价指标,当嵌入控制参数E分别取12、16、20时,视频综合性能测试结果如表3所示。
表中,Capacity表示本算法在各个视频序列中的嵌入容量,Y-PSNR是嵌入信息后视频序列亮度平面的平均峰值信噪比。SSIM是结构相似度评价指标,该指标与人类视觉感知系统相符,取值为0-1,其值越接近1,表示失真图像与原图越相似。BRV表示嵌入信息前后视频比特率变化情况,定义如下:
(5)
Table 2. The main configuration parameters of the JM reference software
表2. JM参考软件的主要配置参数
Table 3. Video comprehensive performance test when E = 12, 16, 20
表3. E = 12, 16, 20时视频综合性能测试
其中,B'表示嵌入信息后视频序列的比特率,B表示未嵌入信息时的比特率。
由表3可知,随着嵌入间隔E的增大,用于嵌入信息的宿主块减少,相应的各个视频序列隐藏容量也减少了。对于视频序列的平均PSNR,应该随着E的增大而减小,但在city序列中,E = 12时视频序列的PSNR却小于E = 16的PSNR,分析原因,是由于E=16时修改过多位于低频的拖尾系数从而导致帧内误差累积,造成了PSNR的下降。在表中SSIM这一指标变化趋势较为统一,整体随着E的增加而逐渐接近原始解码帧的SSIM值。另外,本算法的视频比特率在嵌入信息前后严格保持不变。综合分析各个评价指标,当E取值为16、20时,本算法在隐藏容量与视频质量之间取得了较好的平衡。
表4是取10帧视频序列限定调制200个块的情况下,本文方法与文献 [13] 比较的实验结果。
Table 4. The experimental results compared with literature [13]
表4. 与文献 [13] 比较的实验结果
在隐藏容量方面,本文算法要明显高于文献 [13] 。这是因为文献 [13] 每调制1个块只能嵌入1比特信息,而本文算法在调制拖尾数目为3的块时,能够隐藏2比特信息。随着所调制拖尾数目为3的块的增多,本文方案将比文献 [13] 隐藏容量更大。
峰值信噪比与结构相似性方面,文献 [13] 算法ice和city序列的值要高于本算法。但在soccer和foreman序列中其值要低于本算法。
在比特率变化方面,本算法与文献 [13] 一致,嵌入信息前后视频比特率严格保持不变。
6. 结论
本文提出的视频信息隐藏方案基于H.264/AVC视频编码标准CAVLC过程的拖尾系数编码步骤。利用logistic混沌序列加密待嵌信息,提高了安全性,并用嵌入参数E控制嵌入间隔,在保证嵌秘前后视频的比特率保持不变及视频质量良好的情况下,本方案每调制一个拖尾数目为3的4 × 4块,将比文献 [13] 多隐藏1比特秘密信息,具有更高的嵌入效率,因此隐藏容量也有所提升。同时,算法复杂度低,隐藏与提取过程耗时较少,适于实时应用。但由于本算法在熵编码过程中嵌入信息时改变了残差系数值,在帧内预测过程将会导致失真累积,随着嵌入容量的增加,视频将越来越恶化。另外,嵌秘码流不能够抵抗重编码攻击。
资助信息
国家自然科学基金(61167006)。
NOTES
*通讯作者。