一种基于宏块复杂度的视频隐写算法

2022-05-28 04:20杨晓元唐洪琼张英男
西安电子科技大学学报 2022年2期
关键词:复杂度矢量像素

杨晓元,唐洪琼,钮 可,张英男

(1.中国人民武装警察部队工程大学 密码工程学院,陕西 西安 710086;2.中国人民武装警察部队网络与信息安全重点实验室,陕西 西安 710086)

随着网络和编码技术的飞速发展,视频已经成为主流的网络媒体之一。基于视频的信息隐藏技术也受到国内外研究机构和学者的重视。目前视频信息隐藏技术主要有3个方向:前置嵌入、后置嵌入和内置嵌入。通过前置嵌入的方法隐藏到图像序列的信息经压缩后容易丢失,因此通常对待嵌信息进行纠错编码后,再嵌入;后置嵌入存在隐蔽通道有限的问题,不能实现较大容量的信息嵌入;目前主流的研究大多基于内置嵌入,嵌入方法包括基于帧内预测、运动估计、运动矢量和量化残差等。

将运动矢量作为隐写载体的思想由KUTTER等[1]首次提出,目前研究最为广泛。XU等[2]基于对较大运动矢量修改可以减少失真这一假设,通过对具有较大幅值运动矢量的最低有效位进行信息嵌入;FANG等[3]通过对具有较大幅值运动矢量的相位进行修改完成信息嵌入。ALY[4]研究发现,基于运动矢量幅值的选择策略并不能保证更小的失真,因此提出一种与宏块预测误差相关的选择策略,选择预测误差大的宏块运动矢量的最低有效位进行隐写。CAO等[5]使用湿纸编码对运动估计进行扰动,算法安全性有所提高,但实际的嵌入步骤复杂,且需要传输额外的辅助信息,因此嵌入容量有限。2015年,CAO等[6]指出,运动矢量在编码器端被修改后,在解码器端仍能以较高的概率保持局部最优性,并在此基础上,引入校验子格编码[7]和湿纸编码对运动矢量进行隐写。钮可等[8]结合博弈模型提出了一种策略自适应隐写方法,根据纳什均衡得到的载体修改概率对载体进行隐写。YAO等[9]结合运动矢量的时空域统计分布变化和预测误差变化设计失真代价函数,利用校验子格编码进行信息嵌入;文献[10]将运动矢量特性、局部最优性和统计分布三个因素引入到失真代价函数的设计,在最小化失真框架下使用校验子格编码对载体进行隐写,但在以较高码率进行视频压缩时,该算法抗隐写检测能力快速下降,且复杂度高。2017年,王丽娜等[11]通过对运动矢量局部最优性和相邻相关性的研究,提出了一种基于宏块复杂度的自适应视频运动矢量隐写算法,隐写视频比特率增长小,同时具有一定抗隐写分析能力,但是,算法对宏块复杂度的测度相对简单,仅包含了空域两个方向上的相邻像素差异。2019年,ZHAI等[12]提出了一种基于多域嵌入的视频隐写算法,有效地提高了嵌入容量和隐写安全性。

随着隐写技术的发展,近年来研究者基于运动矢量的统计特性异常,提出了许多隐写检测特征[14]。2014年,王丽娜等[13]通过计算运动矢量空域4个方向上的相邻差值共生矩阵,构建了相邻相关性隐写检测特征。2020年,ZHAI等[15]针对多域隐写特征的构造进行了尝试,提出了一种针对多域隐写的运动矢量一致性的检测特征。文献[16]通过对运动矢量进行加一减一操作,提出一种运动矢量局部最优性隐写检测特征。目前,相关性隐写检测特征和局部最优性隐写检测特征最具代表性和有效性,尤其是局部最优性隐写检测特征[16]。此外,基于校准技术的隐写分析方法也常被用于隐写视频的检测[17]。

基于运动矢量的隐写被广泛研究,但修改运动矢量会破坏其局部最优性,降低算法的安全性。通过选择低复杂度宏块的运动矢量作为隐写载体,笔者引入希尔伯特填充曲线对宏块像素扫描并定义复杂度,提出一种基于宏块复杂度的视频隐写算法,对低于嵌入阈值的宏块运动矢量进行随机匹配隐写,算法的嵌入和提取过程简单高效。通过实验对比,文中算法虽然未使用任何隐写编码,但算法在抗隐写检测中仍表现良好,特别是抗局部最优性特征检测方面,同时隐写视频比特率增长小,视觉失真小。

1 视频编码与视频隐写

1.1 视频编码相关知识

常见的视频编码标准有H.26x和MPEGx,其编码框架相似,都包含帧内预测、帧间预测、变换与量化以及熵编码等模块。不同编码器细节处理有所差异,基本原理都是为了减少时间、空间以及统计上的冗余,以达到视频压缩的目的。运动矢量作为压缩视频流的主要句法元素之一,由帧间预测编码产生,帧间预测编码框图如图1所示,下面给出相关符号说明。

(1) 当前块。在编码压缩时,视频帧被划分成特定大小的宏块,记作Bm×n,是一个大小为m×n的像素矩阵,m和n为当前块的像素宽和高。

(1)

其中,Q(·)为量化函数,IQ(·)为反量化函数,DCT(·)和IDCT(·)分别表示DCT变换和DCT逆变换。由于量化是有损压缩过程,得到的重建块和当前块并不完全一致,重构块相对于当前块产生压缩失真,通常失真大小与量化参数和运动估计算法的精度直接相关。

图1 帧间预测编码框图

1.2 基于运动矢量的隐写算法

(2)

其中,(h±δ,v±δ)为(h,v)邻域的运动矢量集合。类似地,在解码器端,运动矢量的最优概率为

(3)

基于运动矢量的隐写使得携密运动矢量对应的代价增大,(h′,v′)在其邻域(h′±δ,v′±δ)并不能完全保持局部最优性,导致隐写算法的安全性降低。但在隐写检测特征提取时,由于并不具备编码器端的局部最优性的先验信息,所以当发生如下两种情况时,携密运动矢量(h′,v′)仍满足局部最优性[11]。

如果宏块复杂度高(纹理复杂),其残差块经过变换和量化后仍然具有一定的能量,不满足情况2,对其运动矢量进行隐写容易改变运动矢量的局部最优性。相反地,如果当前块和参考块都相对平滑(复杂度低),则有利于量化残差为零。此外,在视频帧的平滑区域,携密运动矢量和原始运动矢量对应的参考块也会以较大的概率保持一致,使得重建块和当前块基本一致。

通过以上分析,基于运动矢量的隐写算法应该选择复杂度低的宏块作为隐写载体,因为低复杂度的宏块量化残差接近零,经过编码后的量化系数占用较少的比特,视频比特率不会明显增大。此外,后续视频帧压缩编码时会参考先前的隐写帧,如果隐写帧存在明显失真,则会导致明显的失真累积效应;反之,如果对平滑的宏块进行隐写,隐写帧的失真累积效应会削弱,隐写视频质量更好。

1.3 统计特性保持

对运动矢量进行大幅度的修改会引起明显的失真累积效应,因此,基于运动矢量的隐写算法通常仅对运动矢量的最低有效位进行修改。传统的最低有效位匹配算法已经被证明是不安全的,最低有效位随机匹配隐写是一种基于传统最低有效位匹配算法的改进,克服了传统最低有效位匹配算法的主要缺陷。设运动矢量构成的隐写载体为C,ck∈C为运动矢量分量,Φ为待嵌秘密信息,φk∈Φ是需要被嵌入到ck的信息比特,ζ为01随机序列,L(·)为最低有效位函数,携密运动矢量分量c′k由下式决定:

(4)

2 算法实现

2.1 宏块复杂度

通过节1.2的分析,选择复杂度低的宏块运动矢量作为隐写载体,可以较好地保持局部最优性,同时能够控制比特增长和保持隐写视频质量。为了更好地衡量宏块复杂度,引入希尔伯特填充曲线。希尔伯特曲线是由德国数学家David Hilbert提出的连续分形空间填充曲线,具有很好的局部保持特性,图2给出了4×4、8×8和16×16的希尔伯特空间填充曲线。

图2 希尔伯特空间填充曲线

对于宏块Bm×n,不失一般性,设m≥n且m,n∈{4k|k=1,2,4}。定义宏块复杂度ρ(Bm×n)为相邻像素的差值绝对值之和的归一化值,数学表达式如下:

(5)

其中,k=min(m,n),N=max(m,n)/min(m,n),表示将m×n大小的宏块划分成N个k×k大小的像素块,Hi为第i个像素块使用k×k的希尔伯特填充曲线进行扫描得到的像素序列,max(·)和min(·)为最大值和最小值取值函数。当宏块大小为16×8、8×16、8×4、4×8时,不存在合适的希尔伯特曲线对像素块进行完整的扫描,需要将宏块继续划分成更小的像素块,例如将16×8宏块被划分成2个8×8大小的像素块,然后对每个像素块用8×8的希尔伯特曲线进行像素扫描,得到像素序列H1、H2。文献[11]的宏块复杂度定义仅包含了空域两个方向上的相邻像素之间的差异,而本文的宏块复杂度定义从空域四个方向上对相邻像素之间的差异进行衡量,相对更加合理。

2.2 嵌入算法

首先对视频帧进行正常压缩,计算所有重建块的复杂度ρ,从小到大排序后统计复杂度ρ为i出现的频次ni,根据待嵌消息长度K动态选择嵌入阈值T,对低于嵌入阈值的宏块的运动矢量的最低有效位按式(4)进行匹配隐写。对低于嵌入阈值的重建块的运动矢量嵌入消息后,在解码器端(信息提取时),新的重构块复杂度并不一定仍满足复杂度小于阈值T,因此引入一个冗余参数λ(实验中取值为1.1),然后,文中算法对符合条件的宏块运动矢量的两个分量分别嵌入1比特信息,嵌入阈值为

(6)

嵌入阈值T确定后,进行秘密信息嵌入操作,如算法1伪代码所示,给出了单帧的嵌入算法。对于当前帧的所有宏块都进行正常运动估计和补偿得到重建块,如果重建块的复杂度低于阈值T,则对其水平和垂直分量进行随机匹配修改。如果携密运动矢量对应的重建块复杂度仍低于嵌入阈值,则成功嵌入2比特秘密信息;反之,如果携密运动矢量对应的重建块复杂度高于嵌入阈值,则嵌入失败。无论嵌入成功与否,都将携密运动矢量对应的重建块写入隐写帧。

算法1嵌入算法(单帧)。

输入:参考帧Fr,当前帧Fc,嵌入阈值T,秘密信息Φ,随机序列ζ

输出:隐写帧Fc′

① FORBm×nINFcDO:

④h′=E(h,φk,ζk) ∥水平分量嵌入1比特信息

⑤v′=E(v,φk+1,ζk+1) ∥垂直分量嵌入1比特信息

⑨k=k+2 ∥成功嵌入2比特

⑩ END IF

2.3 提取算法

3 实验结果与分析

3.1 实验设置

笔者提出的算法和对比算法都基于Xvid-1.3.2 MPEG-4开源编解码框架实现,对比算法包括文献[2]、文献[4]、文献[5]和文献[11]。实验使用34段分辨率为352×288的未压缩的视频序列(stefan序列90帧、bus序列150帧,其余为240帧)。为了对比实验的有效性,所有算法的宏块大小统一设置为16×16,第一帧为关键帧,其余为预测帧,默认压缩比特率为1 000 kb/s,以1/2像素精度进行运动估计。隐写分析实验中,采用两种隐写检测特征分别进行隐写检测模型训练,包括运动矢量局部最优性特征16]和相邻相关性特征[13]。所有隐写算法的嵌入率以运动矢量损坏比率表示。

3.2 不可感知性对比分析

隐写算法的不可感知性一般从主观和客观不可感知性进行评价。对于主观不可感知性的测试,选择4段复杂度不同的视频序列在嵌入率0.5下进行隐写。如图3所示,给出了4段视频(依次为highway、bridge、walk、husky)第90帧图像隐写前后的对比,隐写前后视频图像难以区分,对于复杂度较高的序列husky而言,也能保持视觉上的不可区分。整体来看,隐写算法满足主观上的不可感知性。

除了主观评价外,客观评价指标峰值信噪比(Peak Signal to Noise Ratio,PSNR)的物理量RPSNR和结构相似性(Structural SIMilarity,SSIM)的物理量MSSIM通常被用于衡量受损图像与原始图像的差异,定义如下:

(7)

(8)

其中,fc、fs分别为原始视频帧和受损(携密)视频帧,分辨率为W×H;μc、μs为原始视频帧和受损视频帧的均值;σc、σs、σcs为原始视频帧和受损视频帧的方差以及两者的协方差,c1=(k1M)2与c2=(k2M)2为常数,k1=0.001,k2=0.003,M=255。

图3 视频隐写前后对比

如图4(a)~(b)所示,所有正常压缩(非隐写)视频帧的平均PSNR和SSIM分别为37.63 dB和0.952。

(a) 压缩率1 000 kb/s下PSNR对比

从图4中可见,文中算法的平均PSNR和SSIM指标优于所有对比算法。在嵌入率为0.1时,文中算法隐写视频的PSNR相比于正常压缩的视频反而提高0.05 dB,SSIM保持不变。在嵌入率为0.2~0.3时,文中算法的PSNR和SSIM指标明显优于文献[2]和文献[4]的,相比于文献[11]分别提高了约0.07~0.1 dB和0.001~0.002,PSNR相比于文献[5]提高了约0.12~0.16 dB;在以高嵌入率0.4进行隐写时,文中的隐写视频的平均PSNR和SSIM分别约为37.33 dB和0.948,文中算法相比于文献[5],在PSNR和SSIM指标仅下降0.01 dB和0.001,文献[5]的平均PSNR和SSIM的小幅提升得益于湿纸编码对隐写算法的性能提升,但湿纸编码的引入会明显增加算法的复杂度。由于文献[11]的复杂度定义仅衡量了空域两个方向上的相邻像素差值,而笔者引入希尔伯特填充曲线对像素块进行扫描后,可以衡量空域4个方向上的相邻像素差值,因此实验结果表明,文中算法的PSNR和SSIM指标都优于文献[11]的。综合实验结果来看,文中算法的隐写视频具有较高的视觉不可感知性,隐写视频质量不存在明显失真,满足隐写算法的不可感知性要求。

3.3 比特率变化对比分析

改变运动矢量会间接地增大残差块的能量,需要更多比特来存储残差块信息。考虑到视频编码器对残差进行量化存在两种方式:第1种是根据目标压缩比特率动态调整量化参数(保证以目标比特率进行压缩编码),第2种以固定量化参数对残差进行量化(保证对所有残差块进行同等强度的量化,实验统一设置量化参数为4)。如表1所示,给出了两种压缩方式下,隐写对视频比特率的影响对比。实验表明,在嵌入率为0.1时,文中算法的比特率没有增加;在嵌入率为0.2~0.3时,文中算法在两种压缩方式下都能保持最低的比特率增长。在以高嵌入率0.4进行隐写时,文中算法的隐写视频比特率相比于文献[5]有轻微的增加,但仍优于其他对比算法。以1 000 kb/s比特率压缩并隐写时,文中算法比特增长不超过0.97 %,黑体数字表示最优指标。因此,文中算法的隐写视频具有较低的比特率增长,隐写视频文件相比于正常压缩视频文件没有明显增大。

表1 所有测试视频平均比特率对比 kb/s

3.4 安全性对比分析

隐写视频可能被已知或潜在的隐写分析所检测,导致隐蔽通信这一事实被敌手检测并制止。因此隐写算法应具备一定的抗隐写检测能力,保证算法的安全性。本节对算法的抗隐写检测能力进行了实验对比,首先在不同比特率{500 kb/s、1 000 kb/s}和不同嵌入率{0.1、0.2}下对视频进行隐写,然后对非隐写视频和隐写视频提取隐写特征,最后将提取的特征用于隐写检测模型的训练,其中提取特征包括运动矢量局部最优性特征[16]和相邻相关性特征[13]。检测模型使用高斯核LibSVM工具箱[18]对提取的特征进行模型训练。每种比特率和嵌入率进行单独训练,随机选取17段非隐写视频和对应隐写视频的特征进行训练,余下17段非隐写视频和隐写视频的特征用于模型的评估,以验证算法的抗隐写检测能力。

如图5所示,给出了在嵌入率为{0.1、0.2}、比特率为1 000 kb/s下,根据两种检测特征训练的检测模型的接收者操作特征曲线,横坐标为伪阳率(False Positive Rate,FPR),纵坐标为真阳率(True Positive Rate,TPR)。接收者操作特征曲线偏离灰色(对角)虚线程度越大,隐写算法越容易被检测,算法抗隐写检测能力和安全性就越弱;反之则算法安全性更高。从接收者操作特征曲线可以看出,固定比特率下对于同一检测特征,嵌入率越高,隐写检测效果越好,即嵌入信息越多,越容易被检测,因此在实际隐蔽通信中,隐写算法都以较低的嵌入率进行隐写。对于抗局部最优性特征检测,如图5(c)~(d)所示,文中算法的表现最好。在比特率为1 000 kb/s和嵌入率为0.1时,如图5(c)所示,接收者操作特征曲线接近灰色曲线,相比于文献[11],文中算法的抗局部最优性检测能力有所提升,具有更好的抗隐写检测效果。对于相关性特征[13],如图5(a)~(b)文中算法和文献[11]不相上下,略次于文献[5],这是由于文献[5]使用了湿纸编码,提高了其抗相邻相关性隐写检测能力,但其抗局部最优性隐写检测能力不及本文算法,而文中算法未采取隐写编码。

除此之外,使用检测模型的检测准确率来定量衡量算法的安全性,其定义为

(9)

其中,TP、TN分别表示检测模型正确检测出隐写视频和正常视频的个数,FP、FN分别表示模型错误检测为隐写视频和正常视频的个数。分母表示样本的总数,分子表示模型正确分类的个数。模型的检测准确率越高,隐写算法的抗隐写检测能力越弱,安全性越低;反之则抗隐写检测能力越强,安全性越高。

(a) 相关性检测(0.1,1 000 kb/s)

不同隐写算法被检测的准确率如表2所示,其中黑体数字表示最优的指标。可以看出,对比算法中,文献[2]和文献[4]被检测的准确率高,安全性差。文中算法抗局部最优性隐写检测能力优于所有对比算法。文献[5]抵抗相邻相关性隐写检测的能力最好,文中算法略次于文献[5],与文献[11]持平,但在实际的隐蔽通信中,隐写算法为降低被潜在的隐写检测特征所检测的风险,通常会以较低的嵌入率进行信息嵌入。另外,文中算法相比于文献[5]的信息的嵌入和提取简单,而安全性却相比同类算法更高,因此笔者提出的算法具有良好的实用性。

表2 隐写算法被检测的准确率对比

4 结束语

笔者分析了基于运动矢量的隐写算法对于视频的影响,通过选择低复杂度的宏块作为隐写载体可以有效保持运动矢量局部最优性,同时有利于控制隐写视频的比特率增长,而后采用希尔伯特曲线对宏块像素进行扫描并定义宏块复杂度,使用随机匹配方法修改宏块复杂度低于嵌入阈值的运动矢量,尽量保持其统计特性。对比实验表明,笔者提出的算法在视觉质量、比特率控制以及抗隐写检测能力上都具有一定优势。

猜你喜欢
复杂度矢量像素
全球大地震破裂空间复杂度特征研究
一种矢量信息重构的最优双矢量定姿算法
像素前线之“幻影”2000
数字经济对中国出口技术复杂度的影响研究
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
Kerr-AdS黑洞的复杂度
“像素”仙人掌
非线性电动力学黑洞的复杂度
高像素不是全部