APP下载

一种低比特率变化的高容量HEVC视频数据隐藏方法

2022-05-10何军辉

小型微型计算机系统 2022年5期
关键词:残差编码容量

赵 扬,何军辉

(华南理工大学 计算机科学与工程学院,广州 510006)

1 引 言

近年来随着移动互联网的飞速发展和智能终端的日益普及,视频应用和需求也在不断增长[1].随之而来的视频版权保护、访问控制、完整性校验以及隐私保护等越来越受到研究者们的关注.数据隐藏技术可不可察觉地将辅助数据嵌入载体视频之中,通过所嵌入的数据解决与载体视频相关的安全问题[2].HEVC是由ITU-T视频编码专家组(Video Coding Experts Group,VCEG)和ISO/IEC运动图像专家组(Moving Picture Experts Group,MPEG)标准化组织发布的联合视频编码标准[3].HEVC可提供两倍于H.264/AVC高规格的编码效率,即以一半的比特率提供相同的视频质量[4].由于HEVC编码的高效,越来越多的视频以HEVC格式进行编码、存储和传输.因此,有必要进一步研究如何在HEVC视频中嵌入数据以解决视频流服务面临的一些安全问题.

已经有许多方法可以在H.264/AVC视频中嵌入数据,但针对HEVC视频的研究相对较少.HEVC视频数据隐藏可以根据嵌入域进行分类[5],也可以根据嵌入对象的不同分为两类:基于帧内预测块的数据隐藏和基于帧间预测块的数据隐藏.Li等人[6]针对H.264/AVC视频提出一种方法,通过修改N个整数DCT系数实现2N+1进制数在I帧的嵌入,Yang等人[7]用 Tent 映射选出宏块并修改I帧中4×4亮度宏块的帧内预测模式来嵌入秘密信息.但基于帧内预测块不加限制的进行数据隐藏存在帧内失真漂移的问题.针对此问题,You等人[8]以视频压缩域的离散余弦变换(Discrete Cosine Transform,DCT)系数作为隐写载体,通过将失真漂移控制在本宏块内使得误差不会向四周宏块传播.类似地,Ma等人[9]提出了一种利用H.264/AVC视频帧内预测帧量化后的DCT系数实现数据隐藏的方案,结合不同的帧内预测模式避免因数据嵌入而带来的帧内失真漂移.Lin等人[10]通过使用更多的亮度块显著提高了数据嵌入容量,随后他们又将此方法扩展应用于HEVC视频,实现帧内帧隐藏数据的同时避免错误传播[11].Liu等人[12]提出的方法使用BCH码提高了隐藏数据的鲁棒性,并设计了三组预测方向以限制帧内帧的失真漂移,但该方法需要禁用符号比特隐藏(Sign Bit Hiding,SBH)以实现将数据嵌入到多个系数块之中,导致载密视频文件大小显著增加.Wang等人[13]提出了一种在HEVC中基于帧内预测模式(Intra-Prediction Mode,IPM)的新型视频隐写方案.但是,由于符合该方案要求的4×4 IPM块数量有限,并且在数据嵌入过程中可能被修改为次优的IPM,因此存在嵌入容量不高和载密视频文件大小增加等问题.

基于帧间预测块的数据隐藏方案相对较少,主要是因为与帧间预测相关的编码元素的修改受到更多的限制,并且因数据嵌入所带来的错误传播的影响更大.Xu等人[14]提出了一种基于码字替换的在密文H.264/AVC视频流中进行数据隐藏的方案.最近,Xu等人又提出了一种通过修改量化变换系数(Quantized Transform Coefficient,QTC)在密文HEVC视频中隐藏数据的方案[15],该方案仅使用P帧,嵌入容量有限,并且需要禁用SBH,会导致载密视频文件大小增加.此外,Wang等人[16]提出的方法在第一次视频压缩后通过自适应阈值选择低复杂度的宏块,然后在第二次视频压缩时对其运动矢量使用最低有效位(Lest Significant Bit,LSB)匹配嵌入数据.Yang等人[17]通过修改N个运动矢量分量中最多一个元素来实现在HEVC视频中嵌入N个秘密比特位.Tew等人[18,19]通过选择不同的编码块(Coding Block,CB)大小来编码额外信息.类似地,Yang等人[20]通过修改P帧预测单元(Prediction Unit,PU)的分割模式实现数据隐藏.Long等人[21]提出了一种同时在帧内预测块和帧间预测块中进行数据隐藏的方案,该方案通过直方图移位将数据嵌入到HEVC视频的交流(Alternating Current,AC)系数之中,但会对视频质量和文件大小产生较大的负面影响.

为了在保持载密视频流比特率增加不大的前提下,进一步提高载密视频的视觉质量和数据嵌入容量,本文提出了一种基于SAO补偿值和残差系数的HEVC视频数据隐藏方法.该方法充分利用了HEVC视频新的编码元素以及满足一定条件的残差系数,可同时在所有类型视频帧中进行数据隐藏.本文第2节对数据嵌入对象的选择进行了分析和讨论,第3节给出了我们提出的HEVC视频数据隐藏方法的详细描述,第4节是实验结果和分析,最后总结全文.

2 数据嵌入对象选择

数据嵌入对象的选择必须考虑与HEVC视频标准的兼容性,否则可能导致载密视频无法正确解码或者嵌入数据不能无错误地提取.同时,数据嵌入尽可能给载体视频带来较小的更改,包括较小的视觉质量下降和载密视频文件大小的增加,在此基础上,尽可能地提高嵌入容量.通过对HEVC视频编码元素的分析,本文选择了3种HEVC编码元素,可在保持较高的视觉质量和对视频流比特率产生较小的影响的前提下获得较高的嵌入容量.

2.1 样值自适应补偿(SAO)

SAO和去块滤波器都属于在变换和量化后应用的环路滤波器.SAO应用于去块滤波器的输出,通过衰减振铃伪影和修改图像某些区域的采样强度来进一步提高解码图像的质量.SAO可以平均节约2%的比特率,最高节约6%的比特率,但由此带来的编码器和解码器运行时间仅增加2%[22].

HEVC的SAO有2种类型:边缘补偿(Edge Offset,EO)和频带补偿(Band Offset,BO).由于SAO滤波器是根据视频区域特性实现的,因此可以根据编码树单元(Coding Tree Unit,CTU)自适应地调整其参数.此外,修改SAO补偿值对视频质量的影响微乎其微,对比特率的影响也非常小.在EO模式中,样本的分类基于其邻域,即当前样本与其相邻样本之间的比较.而在BO模式下,分类基于频带内的像素数.EO根据像素的边缘形状为每个像素添加偏移量,BO根据像素值添加偏移量[23].

2.2 变换跳过(Transform Skip)块

在编码视频图像时,会遇到局部图像内容包含尖锐边缘的情况,此时跳过变换直接对量化后的残差系数编码可以达到更好的压缩效果.因此可以使用跳过变换的系数进行数据嵌入,对视频图像的视觉质量影响很小.

此外,由于系数符号位在熵编码中都是以旁路模式编码的,所以调整符号位的奇偶性对比特流也不会产生影响,可以用于数据嵌入.但在HEVC视频标准中,采用SBH为每个选定的系数组(Coefficient Group,CG)隐藏一个符号位,编码器对CG中的系数进行量化,使得它们的绝对幅度值之和为偶数或奇数,相应要被隐藏的符号位分别为0或1,因此CG的最后一个系数符号位会被省略不能用于数据嵌入.

2.3 残差系数的选择

在HEVC视频标准中,残差系数的编码使用块大小可变的树结构,包括4×4、8×8、16×16和32×32.经过变换和量化后的残差系数最终通过基于上下文的自适应二进制算术编码(Context-Adaptive Binary Arithmetic Coding,CABAC)编码输出为视频比特流.

变换块(Transform Block,TB)中的每个系数按照反向扫描得到CG后,首先用语法元素CSBF(coded_sub_block_flag)表示系数是否全为0,然后对存在非零系数的CG使用SIG(sig_coeff_flag)标记每个系数位置,最后进行系数值的熵编码.对残差系数幅度值的信息逐子块进行编码,每一个子块最多使用5个分段.除上述的SIG外,coeff_abs_level_greater1(CALG1)和CALG2分别表示系数的绝对幅度值大于1和2.但是,每个子块最多只能传输8个CALG1标志和1个CALG2标志,剩下的绝对值在非零幅度值的符号位之后使用coeff_abs_level_remain传递.关于残差系数的绝对值,大部分元素都采用常规模式进行熵编码,因此直接使用它们进行数据隐藏会影响编码的上下文.可以利用绝对值较小且相邻的残差系数的交换进行数据隐藏,能够限制对上下文的影响.

3 数据隐藏方案

数据隐藏者或内容所有者在对视频进行HEVC压缩编码的过程中嵌入经过流密码加密的信息,接收方可以在解码视频流的同时提取所隐藏的数据.所提出的数据隐藏方案框图如图1所示,主要包括虚线框范围内的SAO补偿值嵌入、残差系数嵌入和变换跳过块嵌入.

图1 基于HEVC压缩编码的数据嵌入框图

3.1 基于SAO补偿值的数据嵌入

首先,根据HEVC标准压缩过程,原始视频经过递归分割为CU块,通过遍历各种分割模式及其编码代价后,选择出最优的CTU和SAO.再利用得到的SAO补偿值进行数据嵌入.

算法1.SAO补偿值数据嵌入算法

输入:嵌入数据比特流b,SAO补偿值O(i)(i∈(0,32)),BO模式中起始带的索引值Bidx,嵌入数据带来的补偿值增加量d

输出:设置好SAO的CTU

Step1.选择I、P或B帧的Y分量和Cb分量进行数据嵌入,遍历每一帧中SAO模式不是sao_mode_off的CTU.

Step2.如果当前CTU的右邻CTU的SAO 是共享模式并且选择使用与左邻块相同的SAO信息,或当前CTU的下邻CTU的SAO是共享模式并且选择使用与上邻块相同的SAO信息,则跳过当前CTU不进行数据嵌入,否则执行Step 3.

Step3.如果当前CTU的SAO不是共享模式且SAO类型为BO,根据公式(1)进行嵌入;如果当前CTU的SAO不是共享模式且SAO类型为EO,根据公式(2)进行嵌入.

O(i)=O(i+Bidx)+d(i∈[0,3])

(1)

O(i)=O(i)+d(i∈[0,3])

(2)

Step4.保存当前调整的SAO的参数,继续进行后续的编码过程.

其中Bidx是在BO模式下进行补偿的4个连续频带的初始频带的位置,补偿值增量d的定义如公式(3)所示(其中f是O(i)的符号):

(3)

3.2 基于残差系数的数据嵌入

为了在保持较好的数据嵌入不可感知性的前提下进一步提高嵌入容量,我们同时对P帧和B帧应用了基于残差系数交换的数据嵌入算法,具体步骤如算法2所示.

算法2.残差系数交换数据嵌入算法

输入:嵌入数据比特流b,残差系数的绝对值ci(i∈(0,15)),记录的非零系数p,当前非零系数前的连续0的个数N0

输出:嵌入数据并完成编码的CTU

Step1.选择P或B帧的Y分量进行数据嵌入,使用大小为16×16,8×8或4×4的TB进行残差系数交换.

Step2.每块第一次记录的是反向对角扫描遇到的第一个非零系数p,即变换块的最后一个非零系数.若在一组CG扫描的过程中多次进入Step 2,每次都会将p更改为遇到可交换系数前的第一个非零系数.

Step3.继续反向对角扫描直到系数的绝对值为1,即ci=1,记录ci前连续0的个数N0.

Step4.若ci是最后一个系数且N0为0,则当前系数组不可用于数据嵌入,N0不为0则执行Step 5.如果ci不是扫描过程的最后一个系数,则判断下一个系数的绝对值ci+1,若ci+1非零并且不为1,而N0为0,则跳过ci,p为ci+1并继续执行Step 3;若ci+1为1且N0为0,则跳过ci和ci+1,p设定为ci和ci+1的组合并继续执行Step 3;否则,ci和N0满足条件可用于嵌入,继续执行Step 5.

Step5.如果当前嵌入比特为1,N0需要为奇数,通过交换来满足,即交换[ci-1,ci] (0

Step6.完成残差系数交换的数据嵌入,继续进行后续的熵编码.

算法2只将数据嵌入到亮度分量,且系数交换只适用于大小为4×4的TB.残差系数的交换具体来说就是在系数组扫描后,在非零系数p后出现连续两个系数“01”或“10”时进行系数交换,利用“1”前0的个数实现数据嵌入.若存在p之后紧跟“110”的情况,当嵌入比特为1时,系数交换操作会得到“101”,此时解码端会解码出嵌入比特为0的错误信息,因此这种情况下,2个绝对值为1的连续系数会被设为一个非零系数p,继续后面的系数扫描来选择符合要求的系数进行数据嵌入.

3.3 基于变换跳过块的数据嵌入

变换跳过块可用于进一步提高嵌入容量,但为了避免系数符号位取反而引起块内的错误传播,数据嵌入不使用TB块的最右列和最下行的系数.此外,由于每个TB的CG中最后一个系数的符号位使用了SBH而不需要被编码,因此CG中最后一个系数也不能用于数据嵌入.

用于数据嵌入的TB大小为4×4,并且其中的系数需要符合公式(4)括号内的条件.设定bj是嵌入比特流的第j比特位,Fi是可用于嵌入数据的第i个系数的符号位,基于变换跳过块的数据嵌入操作如公式(4)所示.

Fi=bj(i∈{0,1,2,4,5,6,8,9,10})

(4)

4 实验结果与分析

本文基于HEVC标准参考软件HM-16.17(1)https://hevc.hhi.fraunhofer.de/实现所提出的数据隐藏方案,并对多个不同分辨率及不同视频内容的常见测试视频序列进行了实验.实验使用了4个不同分辨率的视频序列,包括416×240分辨率的视频(Keiba)、832×480分辨率的视频(PartyScene)、1024×768分辨率的视频(ChinaSpeed)和1280×720分辨率的视频(SlideShow).所有视频都用相同的GOP(Group of Pictures)结构“IPPP…”进行压缩和编码,帧速率为“30”,GOP大小为8,量化参数(QP)分别设为27和32,其他配置选项均设为默认.

实验结果与Yang等人[17]和Yang等人[20]最近所提出的两种HEVC视频数据隐藏方案进行了对比.实验中两个对比方案的实验配置与我们方案基本一致.其他参数选择具体为:方案[17]使用了所有可用的PU块,以达到基于MV进行嵌入的最大容量;方案[20]选择了第3层,PU块大小分别为8×8、16×16和32×32.

4.1 载密视频的视觉质量

载密视频的视觉质量评估包括主观评价和客观评价两个方面.在主观评价方面,按照本文方案的最大嵌入量(具体的嵌入容量见表1)进行数据嵌入后得到部分原始视频和对应的载密视频,如图2所示.难以从图2的载密视频观察到视频内容的混叠、偏差和失真,也就是数据嵌入并没有造成原始视频视觉质量的明显下降.

图2 原始视频帧和载密视频帧(第10帧)

在客观评价方面,我们使用普遍应用的 (峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)指标,结果图如图3和图4所示,其中Max是指3种方法在某视频中可嵌入的最大数据比特数,横坐标是当前嵌入量占Max的百分比,每个视频在不同QP值下的最大嵌入量如表1中加粗的数值所示.由于U、V分量的变化基本相同,为了节省篇幅,我们只给出了Y分量和U分量的结果.具体来说,图3是Y分量的PSNR结果图,而图4是U分量的PSNR结果.每幅图包括上下两部分信息,其中上半部分对应QP为27的结果,下半部分对应QP为32的结果.从图3和图4可以看出,本文所提出的数据隐藏方法所产生的载密视频解码后与原始视频的PSNR非常接近.Y分量的结果稍低于方案[20],但高于方案[17],主要是方案[20]只更改了PU的分割方式,对视频质量的影响较小,但多数情况下嵌入容量低于本文的方案(曲线长度较短).U分量的结果优于两种所对比的方案.

图 3 Y分量PSNR比较

图4 U分量PSNR比较

4.2 数据隐藏容量

最大数据嵌入量与视频分辨率、视频内容以及QP等密切相关.为了公平对比,在表1中给出两种不同QP值下每一个视频3种方案的最大嵌入容量.从表1中看出,本文所提出的数据隐藏方法相较于所对比的其他两种方案拥有更大的嵌入容量,具体来看,本文方案的嵌入量平均比方案[17]和方案[20]分别高出41016比特和28467比特.甚至在嵌入视频序列PartyScene且QP值为27时,本文方案的嵌入量约是方案[17]的5倍及方案[20]的2.4倍.

表1 视频序列的最大嵌入容量(比特)

4.3 载密视频比特率变化

在编码过程中进行数据嵌入一般会造成视频流比特率的变化,变化的大小可以反应数据嵌入效率的高低,即比特率变化小,数据嵌入效率高,反之亦然.一般使用视频嵌入数据前后比特率的变化(BRV)来进行衡量,BRV的定义如公式(5)所示.

(5)

其中BRemb是数据嵌入编码器输出视频流的比特率,BRori是原始HEVC编码器生成视频流的比特率.

3种不同方案在不同QP值下的9段测试视频BRV如图5和图6所示.可以看出,所有数据嵌入方案都对视频流比特率造成了一定的影响,但影响的程度不同.本文所提出的方法和方案[17]的方法具有相似的BRV,都对视频比特率的影响极小,但方案[17]的嵌入容量在3种方案中最低.本文方案包括3种基于不同对象的数据嵌入,其中基于SAO补偿值和残差系数交换的数据嵌入会影响视频比特流码率,而基于变换跳过块的数据嵌入只更改系数符号,不会引起比特率的增加.方案[17]仅更改了所需的MV,对比特流码率的影响也较小.而方案[20]通过更改PU的分割方式来进行数据嵌入,尽管对视频质量的影响较小,但编码比特流的码率增加较明显,这与视频压缩的原始目的背道而驰.

图5 QP为27时不同方案的BRV

图6 QP为32时不同方案的BRV

5 结束语

基于HEVC标准的视频应用越来越多,如何使用信息隐藏技术在HEVC视频中嵌入与版权、完整性和其他控制信息非常有意义.本文基于HEVC视频标准的特性,提出了一种新的视频数据隐藏方法,可同时在I、P和B帧中进行数据嵌入.该方法与已有相关方案相比,具有较高的嵌入容量,并且对视频质量和文件大小影响较小.为了更好地保护视频安全和隐私,下一步工作将重点关注在密文HEVC视频中的数据隐藏.

猜你喜欢

残差编码容量
多级计分测验中基于残差统计量的被试拟合研究*
住院病案首页ICD编码质量在DRG付费中的应用
用于处理不努力作答的标准化残差系列方法和混合多层模型法的比较*
水瓶的容量
高效视频编码帧内快速深度决策算法
小桶装水
测量数据的残差分析法
连续型过程的二元残差T2控制图
不断修缮 建立完善的企业编码管理体系
鼹鼠牌游乐场