一种带约束条件的多目标优化H.264视频隐写方法与流程

文档序号:18471718发布日期:2019-08-20 20:22阅读:147来源:国知局
一种带约束条件的多目标优化H.264视频隐写方法与流程

本发明涉及信息加密领域,更具体的,涉及一种带约束条件的多目标优化h.264视频隐写方法。



背景技术:

多媒体信息隐写是一种通过对多媒体文件中的某些数据进行少量的修改,从而往多媒体文件中嵌入秘密信息,并隐藏信息传输事实的信息安全技术。目前已有许多应用于图像的隐写算法,并取得了很好的效果。然而,由于对隐藏容量的需求不对提升和针对行为的隐写分析方法的发展,图像隐写算法渐渐不能满足不断变化的需求,对新的隐写载体的研究也越发迫切。在此情况下,视频由于其数据量巨大,日益成为多媒体信息隐写研究的焦点。目前已经有一些研究者提出了一些基于视频的隐写方法,这些隐写方法的载体包含了视频中的各种不同类型的数据,如运动矢量,宏块模式,量化dct(离散余弦变换)系数等。本发明是一种以运动矢量为载体的多媒体信息隐写技术。与本发明创造相似的,基于运动矢量的视频隐写算法主要有以下几个:

(1)由aly提出的基于预测误差的视频信息隐藏算法。该方法在视频的宏块层级上对运动矢量进行修改,通过判断宏块所对应的预测是否超过一个预先设定好的阈值来决定对应的运动矢量是否需要被修改。如果预测误差超过阈值,则在运动矢量的水平分量和垂直分量的最低位比特(lsb)上进行信息的嵌入。在信息嵌入之后,由于对应的预测误差会发生改变,因此需要再次计算修改后的运动矢量所对应的预测误差。无论预测误差是否大于既定阈值,运动矢量都不会再次进行修改。但是如果修改后的运动矢量对应的预测误差小于既定阈值,则认为嵌入信息失败(因为在解码时无法通过预测误差正确识别出这是带有秘密信息的运动矢量),嵌入的信息作废,此时需要在后续的编码过程中寻找合适的运动矢量再次尝试秘密信息的嵌入。而提取秘密信息时,只需要判断运动矢量对应的预测误差是否超过阈值,如果超过阈值就把运动矢量的水平分量和垂直分量的lsb提取出来,最后把提取出来的信息组合起来即得到所隐藏的秘密信息。更具体的内容参考论文【1】。

(2)由yao所提出的基于运动矢量的视频隐写方法。该方法是在图像组(gop)的层级上进行隐写的,应用于视频编码的过程之中。隐写算法采用了ternarystc(三元校正子编码)对秘密信息进行编码,并限制了在同一个运动矢量中,最多只有一个运动矢量能被进行修改。因此,如果运动矢量被修改,最多有四种可能的情况。对于第t帧中位于(i,j)块上的运动矢量,记为mvi,j,t=(mvxi,j,t,mvyi,j,t),其中mvxi,j,t和mvyi,j,t分别为运动矢量的水平分量和垂直分量,则该运动矢量所有可能的修改方案有(mvxi,j,t-1,mvyi,j,t),(mvxi,j,t+1,mvyi,j,t),(mvxi,j,t,mvyi,j,t-1)和(mvxi,j,t,mvyi,j,t+1)这四种。这四种对应的修改方案记为运动矢量mvi,j,t的候选运动矢量,即cmvi,j,t。在实际隐写时,先对一段视频进行编码,在编码过程中获取每个宏块的运动矢量,将其按照空间和时间位置组成运动矢量场(mvfield)mvt(其中t为当前编码视频帧在时间顺序上的位置),并获取每个候选运动矢量所对应的预测误差,组成一个预测误差矩阵et以用于修改代价的计算。在编码完一个p帧之后,利用mvt和et对每个运动矢量的修改代价进行计算,修改代价的计算公式为

其中sdci,j,t和peci,j,t的定义分别为:

peci,j,t=|ei,j,t(mvi,j,t)-ei,j,t(mvi,j,t′)|。

上面两式中的变量均由运动矢量场mvt和预测误差矩阵et计算得到。在对一个图像组完成了编码,并按照上面的步骤计算对图像组中的每一个运算矢量的修改代价进行计算之后,就开始对运动矢量进行修改,以进行信息的隐藏。在修改前,先对编码过程中获得的运动矢量的水平分量和垂直分量按顺序分离,分别获得水平分量向量和垂直分量向量,然后根据上面计算出来的误差利用ternarystc对水平分量向量进行修改。之后根据水平分量向量的修改情况对垂直分量向量的修改代价进行修正,如果一个运动矢量的水平分量已经被修改,则对应的垂直分量则不能再被修改,此时该垂直分量的修改代价应该修改为无穷大。在对垂直分量的修改代价进行修改后,同样利用ternarystc对垂直分量进行修改,然后再重新构建修改后的运动矢量场,并利用修改后的运动矢量场进行二次编码,得到携带了秘密信息的压缩视频文件。在提取秘密信息时,只需要对压缩视频进行解码,然后从中提取出运动矢量,并分成水平分量向量和垂直分量向量,再利用ternarystc的解码方法分别从水平分量向量和垂直分量向量中提取出秘密信息,最后再把提取出的秘密信息按序组合起来即可。更具体详细的内容参考论文【2】。

(3)由zhang所提出的mvmplo(motionvectormodificationwithpreservedlocaloptimality,保持局部最优特性的运动矢量修改方法)。该方法所使用的秘密信息载体依然是运动矢量,是一种在帧层级上进行信息嵌入的视频隐写方法。该方法也是在编码过程中进行。在编码器进行编码时,如果编码的是p帧或者b帧,则会收集这一帧内的运动矢量。在获得运动矢量之后,先通过一个既定的奇偶校验函数p(mv)=lsb(mvx+mvy),将运动矢量转化为一个只包含0和1的二元序列。然后在一个划定的范围内进行运动搜索,选择一个合适的运动矢量作为最终修改的运动矢量,该最合适的运动矢量应该符合三个条件:1.奇偶校验值和原运动矢量不同;2.该运动矢量对应的率失真值与原运动矢量对应的率失真值最接近;3.该运动矢量在sad(误差绝对值之和)的标准下符合局部最优准则。然后将该最合适的运动矢量所对应的率失真值与原运动矢量对应的率失真值的差值的绝对值作为运动矢量的修改代价,并使用stc进行信息嵌入。在嵌入信息之后,查找被修改的运动矢量,并将被修改的运动矢量替换成所对应的最合适的运动矢量,最后再对当前帧进行重编码,以获得新的编码帧。重复以上步骤直到完成一个视频的编码,即可完成信息的嵌入过程。在进行信息提取时,只需要在解码完一个p帧或b帧之后,将运动矢量提取出来并用奇偶校验函数进行处理,得到含密的二元序列,再使用stc进行解码即可获得秘密信息。具体内容参考论文【3】。

上述现有技术的缺点分别如下:

1)第一种由aly所提出的信息隐藏方法提出的时间比较早,基本只考虑了信息隐藏方法对压缩视频的编码质量(如解码后视频的psnr(峰值信噪比)和压缩视频的码率)的影响,而没有考虑到信息隐藏方法的安全性,基于宏块的运动矢量修改对运动矢量的相关性的影响较大,在对抗基于运动矢量相关性和基于运动矢量局部最优性的视频隐写分析方法时性能都比较差,很容易被检测出来,安全性较差。

2)第二种由yao提出的方法的缺点在于只考虑了保留运动矢量之间的相关性和保持压缩视频的编码质量(包括解码视频的psnr(峰值信噪比)和压缩视频的码率),但是没有考虑保持运动矢量的局部最优性,因此虽然能较好地抵抗基于运动矢量相关性的隐写分析方法和保持压缩视频的质量,但是其在对抗基于运动矢量局部最优性的隐写分析方法时性能较差,比较容易被识别出来。

3)第三个由zhang提出来的mvmplo考虑了保留了运动矢量的局部最优特性,使得修改后的运动矢量在sad(误差绝对值之和)的准则下依然能保持局部最优的特性,能较好地抵抗基于运动矢量局部最优特性的隐写分析方法。但是,该方法并没有考虑保持运动矢量的相关性,因此,在对抗基于运动矢量相关性的隐写分析方法时性能会有所下降,特别是运动矢量之间的相关性较强(例如压缩视频的码率较高或者运动搜索范围较大)时。并且由于视频编码是一种预测编码,后续的帧的编码可能依赖于前面帧的编码结果,在采用mvmplo后,后续帧编码得到的运动矢量可能会与原始编码结果有较大区别,这增大了被基于运动矢量相关性的隐写分析方法识别出来的风险。并且该方法只是考虑了sad准则下的局部最优性,并没有考虑到基于率失真函数的局部最优性,因此在对抗一些基于运动矢量率失真函数局部最优性的隐写方法时,mvmplo的安全性能也会相应地有所下降。



技术实现要素:

为了解决现有技术中在对抗基于运动矢量相关性和基于运动矢量局部最优性的视频隐写分析方法时性能比较差,并没有考虑到基于率失真函数的局部最优性的不足,本发明提供了一种带约束条件的多目标优化h.264视频隐写方法。

为实现以上发明目的,采用的技术方案是:

一种带约束条件的多目标优化h.264视频隐写方法,包括以下步骤:

步骤s1:按照运动矢量在一个视频中的时间和空间上的位置,建立运动矢量的三维集合,在运动矢量的三维集合上确定运动矢量相关性衡量因子;

步骤s2:确认视频中局部最优运动矢量集合ωs和ωt,并修正局部最优运动矢量集合ωs和ωt;

步骤s3:确认视频中每一个运动矢量的水平分量禁止模式集合fh和垂直分量的禁止模式集合fv;

步骤s4:根据ωs、ωt、fh以及fv这四个集合求解运动矢量的三维集合中任意一个运动矢量的局部最优约束条件;

步骤s5:对运动矢量进行分类并建立集合,根据运动矢量分类的集合重建帧误差约束条件;

步骤s6:对于一个运动矢量,根据运动矢量相关性衡量因子、运动矢量的局部最优约束条件以及重建帧误差约束条件构建多目标优化修改代价函数;

步骤s7:在多目标优化修改代价函数的基础上设立负载动态分配技术;根据负载动态分配技术对参考帧和非参考帧中的前向和后向运动矢量的水平分量和垂直分量进行复合stc编码。

优选的,步骤s1中建立运动矢量的三维集合的具体步骤如下:

首先判断一个运动矢量所对应的像素块在一个视频帧中对应的范围,并将其划分为若干个4x4像素块;

在每个4x4像素块的对应位置上使用当前块的运动矢量填充,即可把一个像素块的运动矢量投射到某一帧的运动矢量平面上;

重复以上步骤,把一帧所有分块的运动矢量都投射到运动矢量平面上,最后得到一个帧的运动矢量平面;

把运动矢量平面按照帧的自然播放顺序集合起来,即得到运动矢量三维集合。

优选的,在运动矢量的三维集合上确定运动矢量相关性衡量因子的具体步骤如下:

运动矢量相关性衡量因子可分为运动矢量水平分量的时空域运动矢量相关性因子以及运动矢量的垂直分量的时空域运动矢量相关性因子;

设运动矢量三维集合中的一个运动矢量其中d代表了运动矢量的预测方向,指明运动矢量是属于前向运动矢量三维集合还是后向运动矢量三维集合,i,j,t为运动矢量在运动矢量三维集合中的水平坐标,垂直坐标和时间坐标;时空域运动矢量相关性因子主要与相邻的运动矢量的差分值有关。运动矢量水平分量的时空域运动矢量相关性因子定义为:

相似地,运动矢量的垂直分量的时空域运动矢量相关性因子定义为:

其中δh和δv为运动矢量的水平分量和垂直分量的修改方式,且

δh,δv∈{0,±1}。sn为相邻运动矢量坐标的集合,且定义为

其中n为正整数,s={-1,0,+1}。当p所指定的位置在运动矢量三维集合中没有运动矢量或所指定位置超出运动矢量三维集合的范围时,该项的计算结果设置为0。

优选的,所述的步骤s2中确认视频中局部最优运动矢量集合ωs和ωt的具体步骤如下:

对于任意一个运动矢量v,如果对于所有的δh,δv∈{0,±1},δh,δv不同时为0,都有c1(v)<c1(vδh,δv),则该运动矢量在sad的意义上具有局部最优特性,记为v∈ωs,其中vδh,δv=v+(δh,δv),ωs为在sad意义上具有局部最优特性的运动矢量的集合,c1(v)为以sad为基础的r-dcost函数,定义为

c1(v)=sad(pr(v),pp(v))+λr(v),(4)

其中sad(x,y)为尺寸相同的两个像素块x,y的sad计算函数,pr(v)为根据运动矢量v得到的重建块,pp(v)为根据运动矢量v得到的预测块,λ为进行运动搜索时编码器所使用的拉格朗日因子,r(v)为对运动矢量进行熵编码时所需要的比特数;

判断每个原始运动矢量v及所有可能的修改后的运动矢量vδh,δv在sad意义上的局部最优特性,以确定其是否属于集合ωs;

对于任意一个运动矢量v,如果对于所有的δh,δv∈{0,±1},δh,δv不同时为0,都有c2(v)<c2(vδh,δv),则该运动矢量在sad的意义上具有局部最优特性,记为v∈ωt,其中vδh,δv=v+(δh,δv),ωt为在satd意义上具有局部最优特性的运动矢量的集合,c2(v)为以satd为基础的r-dcost函数,定义为

c2(v)=satd(pr(v),pp(v))+λr(v),(5)

其中satd(x,y)为尺寸相同的两个像素块x,y的satd计算函数,pr(v)为根据运动矢量v得到的重建块,pp(v)为根据运动矢量v得到的预测块,λ为进行运动搜索时编码器所使用的拉格朗日因子,r(v)为对运动矢量进行熵编码时所需要的比特数;

判断每个原始运动矢量v及所有可能的修改后的运动矢量vδh,δv在satd意义上的局部最优特性,以确定其是否属于集合ωt。

通过以上的方法,即可判断一个视频中的每个原始运动矢量及其在修改后所有可能的候选运动矢量是否属于集合ωs和ωt。

优选的,所述的步骤s2中修正局部最优运动矢量集合ωs和ωt的具体步骤如下:

对于一个经过了修改,并具有某种局部最优特性的运动矢量vδh,δv,由编码器获取其预测运动矢量,并对其预测运动矢量的水平分量和垂直分量进行加1或减1的修改,如果存在一种对预测运动矢量的修改方式,使得运动矢量vδh,δv失去了局部最优特性,则判定该修改后的运动矢量的局部最优特性不具有鲁棒性,将其从失去的局部最优特性的类型所对应的局部最优运动矢量集合ωs或ωt中剔除;

对载体视频中每个候选的修改运动矢量进行上述操作,即可完成局部最优运动矢量集合ωs和ωt的修正。

优选的,步骤s3中确认视频中每一个运动矢量的水平分量禁止模式集合fh和垂直分量的禁止模式集合fv的具体步骤如下:

步骤s301:找出所有令原始运动矢量失去局部最优特性的修改方式,将其设为集合f,并令fh=fv=f,且标记预测运动矢量是来自同一个运动矢量;

步骤s302:寻找预测运动矢量水平分量和垂直分量中未确定来源的分量的来源,并获取其来源的运动矢量所属的分块的预测模式;

步骤s303:如果预测运动矢量水平分量和垂直分量的来源都没有确定,且被标记为来自与同一个运动矢量,则执行步骤s304;如果不符合上述条件,则执行步骤s305;

步骤s304:判断预测运动矢量的水平分量和垂直分量是否属于同一个运动矢量,如果是,继续执行步骤s305;如果不是,则标记水平分量和垂直分量来自不同的运动矢量,并需要重新确定fh和fv。如果f中包含的修改方式中涉及到对预测运动矢量的水平分量进行减1操作的修改方式,则所有涉及到减1操作的修改方式,即(-1,-1),(-1,0)和(-1,+1),都要被包含到fh中;如果f中包含的修改方式涉及到对预测运动矢量的水平分量进行加1操作,则所有涉及到加1操作的修改方式,即(+1,-1),(+1,0)和(+1,+1),都要被包含到fh中;通过以上操作,即可完成水平分量禁止模式集合的更新;

同时,判断f中是否包含对垂直分量进行加1或减1的操作,如果存在,则把所有涉及到垂直分量加1或减1操作的修改方式添加到fv中,完成垂直分量禁止模式的更新;

步骤s305:根据获得的预测运动矢量水平分量和垂直分量的来源,判断其是否来自h.264编码标准中宏块的预测模式的skip块或者direct块;如果不是,则对应分量的来源的搜索结束,将对应的分量的来源状态记为确定,并将分量所对应的fh或fv与来源运动矢量绑定;如果是,则返回步骤s302,继续寻找;

一个运动矢量如果没有fh或fv通过上述算法与之绑定,为了描述的统一,将其对应的fh和fv设为空集,则通过上述算法,最终确定每个运动矢量的fh和fv。

优选的,步骤s4中所述的求解运动矢量的三维集合中任意一个运动矢量的局部最优约束条件的具体步骤如下:

局部最优约束条件表示为:

其中为修改后的运动矢量。

优选的,步骤s5的具体过程如下:

在定义重建帧误差约束条件前,需要先对视频中的运动矢量进行分类,视频中的运动矢量根据其是否属于参考帧以及属于的帧的类型分为三类,一类是非参考帧的运动矢量,一类是b帧参考帧的运动矢量,最后一类是p帧参考帧的运动矢量。这三类运动矢量的集合分别用λb,表示;

借助运动矢量分类的集合,重建帧误差约束条件定义如下:

其中n(x)为计算像素块x中包含像素数目的函数,t(v)为阈值确定函数,其定义为

非参考帧的运动矢量的重建误差约束条件定义如下:

优选的,步骤s6的具体步骤如下:

对于一个运动矢量的水平分量,其修改代价函数定义为:

其中γl(i,j,t,d,δh)定义为:

γd(i,j,t,d,δh)定义为:

对于一个运动矢量的垂直分量,其修改代价函数为:

其中为运动矢量的水平分量的修改方式。

优选的,步骤s7的具体步骤如下:

在进行信息嵌入之前,需要先确定不同的部分所需要嵌入的信息量,这个信息量被称为负载,某一类型的某一个方向的运动矢量的某一个分量的最大负载由下面的公式决定:

其中为t类,运动矢量中,预测方向为d的运动矢量的c分量的最大负载,其中d为前向f或后向b,c分量为水平分量h或垂直分量v,为对应分量中允许被stc修改的载体的数目,在不超过最大负载的前提下,把信息嵌入到非参考帧的运动矢量中去,每一种类型的分量实际嵌入的信息数目为

基于负载动态分配的水平分量和垂直分量的复合stc编码根据代价函数,实现把信息同时嵌入到运动矢量的水平分量和垂直分量中,具体的过程描述如下:

输入:类型为t预测方向为d的运动矢量,待嵌入的秘密信息,秘密信息开始嵌入的位置,当前运动矢量的目标嵌入信息量d为运动矢量的预测方向,d∈{f,b},其中f代表前向,b代表后向;t为运动矢量的类型,和对当前运动矢量的修改限制情况,计算代价采集的信息;

步骤s701:计算水平分量和垂直分量的目标嵌入信息量

步骤s702:利用公式(9)计算t类运动矢量d方向的运动的水平分量的修改代价,并根据运动矢量的修改限制情况修正得到的修改代价,然后统计其中允许被修改的载体数量根据式(14)计算水平分量中实际嵌入的信息量

步骤s703:在待嵌入的秘密信息的秘密信息开始嵌入位置开始,截取长度为的信息,并将秘密信息开始嵌入的位置设置为截取信息的末尾的后一个比特;

步骤s704:根据水平分量的修改代价,利用stc修改水平分量,完成截取的秘密信息的嵌入,并统计水平分量的修改情况;

步骤s705:根据水平分量的修改情况,利用式(12)计算垂直分量的修改代价,并根据运动矢量修改限制情况对得到的代价进行修正,然后统计允许被修改的载体数量然后根据式(14)计算垂直分量实际嵌入的信息量

步骤s706:在待嵌入的秘密信息的开始嵌入位置开始,截取长度为的信息,并将秘密信息开始嵌入的位置设置为截取信息的末尾的后一个比特;

步骤s707:根据垂直分量的修改代价,利用stc修改垂直分量,完成截取的秘密信息的嵌入;

步骤s708:统计运动矢量的垂直分量的修改情况,并结合水平分量的修改情况整合当前运动矢量的修改情况,并计算当前运动矢量中实际携带的秘密信息数目并将水平分量和垂直分量重新组合为运动矢量;

步骤s709:输出被修改的运动矢量,秘密信息开始嵌入位置,实际携带的秘密信息数目

基于负载动态分配的前向运动矢量和后向运动矢量的复合stc编码具体的过程描述如下:

步骤s709:输入类型为t的运动矢量,待嵌入的秘密信息,秘密信息开始嵌入的位置,当前运动矢量的目前嵌入信息量tart,计算代价采集的信息;

步骤s710:计算运动矢量中前向运动矢量与后向运动矢量的数量并计算前向运动矢量和后向运动矢量在t类运动矢量中的比重并计算前向运动矢量的目标嵌入比特数和后向运动矢量的目标嵌入比特数并将运动矢量的修改限制情况设置为无限制;

步骤s711:判断是否为0;如果为0,则后向运动矢量不存在,跳到步骤s713;否则,将当前的后向运动矢量,秘密信息,秘密信息开始嵌入位置,后向运动矢量目标嵌入比特数和运动矢量的修改限制情况作为输入,对后向运动矢量进行基于负载动态分配的水平分量和垂直分量的复合stc编码流程;

步骤s712:根据得到的后向运动矢量修改方式,更新运动矢量的修改限制情况,如果一个前向运动矢量与一个后向运动矢量属于同一个分块,且后向运动矢量已被修改,则要更新与之对应的前向运动矢量的修改限制情况,将其设置为不能修改;

步骤s713:将前向运动矢量,秘密信息,秘密信息开始嵌入位置,前向运动矢量目标嵌入比特数和运动矢量的修改限制情况作为输入,对前向运动矢量进行基于负载动态分配的水平分量和垂直分量的复合stc编码流程;

步骤s714:计算当前类型的运动矢量中实际携带的信息量

步骤s715:输出修改后的t类运动矢量,秘密信息开始嵌入位置,实际嵌入的信息量bt;

基于负载动态分配的参考帧和非参考帧运动矢量的复合stc编码的流程如下:

步骤s716:输入一个视频的运动矢量,秘密信息,目标嵌入信息量tar,计算代价采集的信息;

步骤s717:应用运动矢量分类方法,根据运动矢量所属的帧的类型,将运动矢量分为三类:非参考帧运动矢量λb,b帧参考帧运动矢量和p帧参考帧运动矢量并将秘密信息开始嵌入位置设置为秘密信息的开始位置;

步骤s718:判断λb是否为空集。如果是,则跳到步骤s719,否则将λb中的运动矢量和目标嵌入信息量tar作为输入,进行基于负载动态分配的前向运动矢量和后向运动矢量的复合stc编码过程。然后根据输出的实际嵌入信息量更新目标嵌入信息量tar,更新方式为tar=tar-bλb;

步骤s719:判断tar是否等于0。如果等于0,则基于负载动态分配的复合stc编码流程结束,否则进入下一步。

步骤s720:把经过更新的秘密信息开始嵌入状态,更新后的目标嵌入信息量tar和中的运动矢量,秘密信息,计算代价采集的信息作为输入,进行基于负载动态分配的前向运动矢量和后向运动矢量的复合stc编码过程。然后利用输出的实际嵌入信息量更新目标嵌入信息量tar,更新方式为

步骤s721:判断tar是否等于0;如果等于0,则基于负载动态分配的复合stc编码流程结束,否则进入下一步;

步骤s722:把经过更新的秘密信息开始嵌入状态,更新后的目标嵌入信息量tar和中的运动矢量,秘密信息,计算代价采集的信息作为输入,进行负载动态分配的前向运动矢量和后向运动矢量的复合stc编码过程,然后利用输出的实际嵌入信息量更新目标嵌入信息量tar,更新方式为

步骤s723:判断tar是否为0,如果是,则嵌入成功,否则嵌入失败;

步骤s724:输出被修改后的运动矢量,信息嵌入状态。

与现有技术相比,本发明的有益效果是:

1.带约束条件的多目标优化代价函数从运动矢量相关性,运动矢量局部最优性和视频客观质量等几个方面综合考虑了运动矢量的改变对视频产生的影响,并且用一个函数将这些影响整合到一个代价函数中,从而大幅度地提高了隐写算法对抗不同种类的隐写分析算法时的安全性能,扩大了算法的适用范围,并减小对视频客观质量的影响。

2.基于负载动态分配的复合stc信息嵌入方法能把秘密信息自适应地分配到一个视频中不同类型的运动矢量上,进一步提升了算法在对抗基于运动矢量局部最优特性的隐写分析算法时的性能,提升了安全性。并且基于负载动态分配的复合stc信息嵌入方法把信息嵌入到前向运动矢量和后向运动矢量的水平分量和垂直分量中,提升了算法的隐写容量,并使算法被用于带有b帧的视频。

附图说明

图1为带约束条件的多目标优化h.264视频隐写方法的流程图;

图2为带约束条件的多目标优化h.264视频隐写方法的组成结构图;

图3为代表空域和时域上相邻运动矢量的水平分量和垂直分量的差分值在各个幅值上的不确定性统计结果;

图4为不同基于运动矢量的视频隐写方法在对抗npeflo时的性能;

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

以下结合附图和实施例对本发明做进一步的阐述。

实施例1

如图1、图2以及图3所示,一种带约束条件的多目标优化h.264视频隐写方法,包括以下步骤:

步骤s1:按照运动矢量在一个视频中的时间和空间上的位置,建立运动矢量的三维集合,在运动矢量的三维集合上确定运动矢量相关性衡量因子;

步骤s2:确认视频中局部最优运动矢量集合ωs和ωt,并修正局部最优运动矢量集合ωs和ωt;

步骤s3:确认视频中每一个运动矢量的水平分量禁止模式集合fh和垂直分量的禁止模式集合fv;

步骤s4:根据ωs、ωt、fh以及fv这四个集合求解运动矢量的三维集合中任意一个运动矢量的局部最优约束条件;

步骤s5:对运动矢量进行分类并建立集合,根据运动矢量分类的集合求解重建帧误差约束条件;

步骤s6:对于一个运动矢量,根据运动矢量相关性衡量因子、运动矢量的局部最优约束条件以及重建帧误差约束条件构建多目标优化修改代价函数;

步骤s7:在多目标优化修改代价函数的基础上设立负载动态分配技术;根据负载动态分配技术对参考帧和非参考帧中的前向和后向运动矢量的水平分量和垂直分量进行复合stc编码。

优选的,步骤s1中建立运动矢量的三维集合的具体步骤如下:

首先判断一个运动矢量所对应的像素块在一个视频帧中对应的范围,并将其划分为若干个4x4像素块;

在每个4x4像素块的对应位置上使用当前块的运动矢量填充,即可把一个像素块的运动矢量投射到某一帧的运动矢量平面上;

重复以上步骤,把一帧所有分块的运动矢量都投射到运动矢量平面上,最后得到一个帧的运动矢量平面;

把运动矢量平面按照帧的自然播放顺序集合起来,即得到运动矢量三维集合。

优选的,在运动矢量的三维集合上确定运动矢量相关性衡量因子的具体步骤如下:

为了研究运动矢量在空间上与周围运动矢量的相关性的统计特性,把每一个运动矢量都和其右边的运动矢量相减,并分别对得到的残差运动矢量的水平分量dhs和垂直分量dvs进行统计,得到dhs和dvs的cv(即标准差与均值之比)的统计分布如图3(1),图3(2)所示。类似地,为了研究运动矢量在时间上与周围运动矢量的相关性的统计特性,把每一个运动矢量都和其下一帧中相同位置上的运动矢量相减,并分别对得到的残差运动矢量的水平分量dht和dvt进行统计,得到dht和dvt的cv的统计分布直方图如图3(3),图3(4)所示。cv代表了某一个统计量的不确定性。cv越大,不确定性越大。从图1中的统计结果看到,随着差值的绝对值的增大,cv也随之增大,不确定性提高。这个情况和图像的情况类似,因此可参考jpeg图像中的ued隐写算法【5】的设计思路,来设计时空域运动矢量相关性衡量因子。

运动矢量相关性衡量因子可分为运动矢量水平分量的时空域运动矢量相关性因子以及运动矢量的垂直分量的时空域运动矢量相关性因子;

设运动矢量三维集合中的一个运动矢量其中d代表了运动矢量的预测方向,指明运动矢量是属于前向运动矢量三维集合还是后向运动矢量三维集合,i,j,t为运动矢量在运动矢量三维集合中的水平坐标,垂直坐标和时间坐标;时空域运动矢量相关性因子主要与相邻的运动矢量的差分值有关。运动矢量水平分量的时空域运动矢量相关性因子定义为:

相似地,运动矢量的垂直分量的时空域运动矢量相关性因子定义为:

其中δh和δv为运动矢量的水平分量和垂直分量的修改方式,且

δh,δv∈{0,±1}。sn为相邻运动矢量坐标的集合,且定义为

其中n为正整数,s={-1,0,+1}。当p所指定的位置在运动矢量三维集合中没有运动矢量或所指定位置超出运动矢量三维集合的范围时,该项的计算结果设置为0。

优选的,所述的步骤s2中确认视频中局部最优运动矢量集合ωs和ωt的具体步骤如下:

基于运动矢量局部最优性的隐写分析方法通过在解码端计算运动矢量对应的sad(sumofabsolutedifference)值或者率失真函数值的局部最优特征,并对局部最优特征进行统计,以区分被隐写的视频和没有被隐写的视频。为了更好地保持运动矢量的局部最优特性,在本算法中,将在编码端对解码端进行的局部最优计算进行还原,以模拟基于运动矢量最优特性的隐写分析的工作流程,从而准确地判断一个运动矢量是否具有局部最优的特性,提高运动矢量保持局部最优的能力。

为了模拟解码端计算局部最优特性的过程,本算法对每一个运动矢量和可能的修改后的运动矢量都进行一次编码,以获得每一个运动矢量和候选的运动矢量的重建像素块,并根据重建块计算局部最优特性。对于任意一个运动矢量v,如果对于所有的δh,δv∈{0,±1},δh,δv不同时为0,都有c1(v)<c1(vδh,δv),则该运动矢量在sad的意义上具有局部最优特性,记为v∈ωs,其中vδh,δv=v+(δh,δv),ωs为在sad意义上具有局部最优特性的运动矢量的集合,c1(v)为以sad为基础的r-dcost函数,定义为

c1(v)=sad(pr(v),pp(v))+λr(v),(4)

其中sad(x,y)为尺寸相同的两个像素块x,y的sad计算函数,pr(v)为根据运动矢量v得到的重建块,pp(v)为根据运动矢量v得到的预测块,λ为进行运动搜索时编码器所使用的拉格朗日因子,r(v)为对运动矢量进行熵编码时所需要的比特数;

判断每个原始运动矢量v及所有可能的修改后的运动矢量vδh,δv在sad意义上的局部最优特性,以确定其是否属于集合ωs;

对于任意一个运动矢量v,如果对于所有的δh,δv∈{0,±1},δh,δv不同时为0,都有c2(v)<c2(vδh,δv),则该运动矢量在sad的意义上具有局部最优特性,记为v∈ωt,其中vδh,δv=v+(δh,δv),ωt为在satd意义上具有局部最优特性的运动矢量的集合,c2(v)为以satd为基础的r-dcost函数,定义为

c2(v)=satd(pr(v),pp(v))+λr(v),(5)

其中satd(x,y)为尺寸相同的两个像素块x,y的satd计算函数,pr(v)为根据运动矢量v得到的重建块,pp(v)为根据运动矢量v得到的预测块,λ为进行运动搜索时编码器所使用的拉格朗日因子,r(v)为对运动矢量进行熵编码时所需要的比特数;

判断每个原始运动矢量v及所有可能的修改后的运动矢量vδh,δv在satd意义上的局部最优特性,以确定其是否属于集合ωt。

通过以上的方法,即可判断一个视频中的每个原始运动矢量及其在修改后所有可能的候选运动矢量是否属于集合ωs和ωt。

优选的,所述的步骤s2中修正局部最优运动矢量集合ωs和ωt的具体步骤如下:

在视频编码的过程中,需要对运动矢量进行预测,获得预测运动矢量并计算运动矢量残差,以进一步减小运动矢量中的冗余,提高压缩效率。当运动矢量被改变时,其可能会作为预测运动矢量影响其它运动矢量的局部最优特性。如果一个具有局部最优特性的运动矢量在预测运动矢量发生改变时仍能保持局部最优特性,则该运动矢量的局部最优特性是具有鲁棒性的,否则该运动矢量的局部最优特性不具有鲁棒性。

一个运动矢量的局部最优特性不具有鲁棒性有两种情况:一种是原始的,没有经过修改的运动矢量的局部最优特性不具有鲁棒性;另一种情况是经过修改后的运动矢量的局部最优特性不具有鲁棒性。局部最优运动矢量集合的修正针对的是后一种情况。对于一个经过了修改,并具有某种局部最优特性的运动矢量vδh,δv,由编码器获取其预测运动矢量,并对其预测运动矢量的水平分量和垂直分量进行加1或减1的修改,如果存在一种对预测运动矢量的修改方式,使得运动矢量vδh,δv失去了局部最优特性,则判定该修改后的运动矢量的局部最优特性不具有鲁棒性,将其从失去的局部最优特性的类型所对应的局部最优运动矢量集合ωs或ωt中剔除;

对载体视频中每个候选的修改运动矢量进行上述操作,即可完成局部最优运动矢量集合ωs和ωt的修正。

优选的,步骤s3中确认视频中每一个运动矢量的水平分量禁止模式集合fh和垂直分量的禁止模式集合fv的具体步骤如下:

为了解决原始运动矢量的局部最优特性不具有局部最优性的情况,算法为每个运动矢量定义了一个水平分量禁止模式集合fh和垂直分量禁止模式集合fv,以进一步限制运动矢量的修改。当原始运动矢量不具有局部最优特性时,算法将通过禁止预测运动矢量进行某些修改的方式,来确保原始运动矢量不会失去局部最优特性。

为了达到这个目标,算法需要确定预测运动矢量的来源,并对预测运动矢量的来源进行一定的限制,以禁止其被按照某些方式修改。完成以上目的的算法如下:

步骤s301:找出所有令原始运动矢量失去局部最优特性的修改方式,将其设为集合f,并令fh=fv=f,且标记预测运动矢量是来自同一个运动矢量;

步骤s302:寻找预测运动矢量水平分量和垂直分量中未确定来源的分量的来源,并获取其来源的运动矢量所属的分块的预测模式;

步骤s303:如果预测运动矢量水平分量和垂直分量的来源都没有确定,且被标记为来自与同一个运动矢量,则执行步骤s304;如果不符合上述条件,则执行步骤s305;

步骤s304:判断预测运动矢量的水平分量和垂直分量是否属于同一个运动矢量,如果是,继续执行步骤s305;如果不是,则标记水平分量和垂直分量来自不同的运动矢量,并需要重新确定fh和fv。如果f中包含的修改方式中涉及到对预测运动矢量的水平分量进行减1操作的修改方式,则所有涉及到减1操作的修改方式,即(-1,-1),(-1,0)和(-1,+1),都要被包含到fh中;如果f中包含的修改方式涉及到对预测运动矢量的水平分量进行加1操作,则所有涉及到加1操作的修改方式,即(+1,-1),(+1,0)和(+1,+1),都要被包含到fh中;通过以上操作,即可完成水平分量禁止模式集合的更新;

同时,判断f中是否包含对垂直分量进行加1或减1的操作,如果存在,则把所有涉及到垂直分量加1或减1操作的修改方式添加到fv中,完成垂直分量禁止模式的更新;

步骤s305:根据获得的预测运动矢量水平分量和垂直分量的来源,判断其是否来自h.264编码标准中宏块的预测模式的skip块或者direct块;如果不是,则对应分量的来源的搜索结束,将对应的分量的来源状态记为确定,并将分量所对应的fh或fv与来源运动矢量绑定;如果是,则返回步骤s302,继续寻找;

一个运动矢量如果没有fh或fv通过上述算法与之绑定,为了描述的统一,将其对应的fh和fv设为空集,则通过上述算法,最终确定每个运动矢量的fh和fv。

优选的,步骤s4中所述的求解运动矢量的三维集合中任意一个运动矢量的局部最优约束条件的具体步骤如下:

局部最优约束条件表示为:

其中为修改后的运动矢量。

优选的,步骤s5的具体过程如下:

运动矢量的修改会改变重建帧,从而影响压缩视频的客观质量,并且这种影响一般是负面的。因此,采用一个重建误差约束条件排除对重建帧产生巨大影响的修改方式,保持视频的客观质量。同时,由于本发明所提出的隐写算法是基于图像组进行的,并且会进行二次编码,为了保持基于第一次编码结果得到的修改代价在重编码时的有效性,也需要对重建帧的影响进行控制。

在定义重建帧误差约束条件前,需要先对视频中的运动矢量进行分类,视频中的运动矢量根据其是否属于参考帧以及属于的帧的类型分为三类,一类是非参考帧的运动矢量,一类是b帧参考帧的运动矢量,最后一类是p帧参考帧的运动矢量。这三类运动矢量的集合分别用λb,表示;

借助运动矢量分类的集合,重建帧误差约束条件定义如下:

其中n(x)为计算像素块x中包含像素数目的函数,t(v)为阈值确定函数,其定义为

非参考帧的运动矢量的重建误差约束条件定义如下:

优选的,步骤s6的具体步骤如下:

对于一个运动矢量的水平分量,其修改代价函数定义为:

其中γl(i,j,t,d,δh)定义为:

γd(i,j,t,d,δh)定义为:

对于一个运动矢量的垂直分量,其修改代价函数为:

其中为运动矢量的水平分量的修改方式。

优选的,步骤s7的具体步骤如下:

本发明还包括了基于负载动态分配的stc编码技术,以配合带约束条件的多目标优化函数对运动矢量的水平分量和垂直分量进行修改,把信息嵌入运动矢量中。由于stc(校正子编码)只适用于标量数组的信息嵌入,对矢量没有原生支持。在使用stc对运动矢量进行修改时,需要通过一定的方式把信息分别嵌入到水平分量和垂直分量中去,而且运动矢量还包括前向运动矢量和后向运动矢量,为了保证代价函数的有效性,也需要一种方法实现前向运动矢量的修改和后向运动矢量的修改之间的关系。除此之外,参考帧的运动矢量的修改和非参考帧的运动矢量的修改对视频的安全性和客观质量造成的影响是不同,对参考帧的运动进行过多的修改会影响到含密视频的安全性。

在进行信息嵌入之前,需要先确定不同的部分所需要嵌入的信息量,这个信息量被称为负载,某一类型的某一个方向的运动矢量的某一个分量的最大负载由下面的公式决定:

其中为t类,运动矢量中,预测方向为d的运动矢量的c分量的最大负载,其中d为前向f或后向b,c分量为水平分量h或垂直分量v,为对应分量中允许被stc修改的载体的数目,在不超过最大负载的前提下,把信息嵌入到非参考帧的运动矢量中去,每一种类型的分量实际嵌入的信息数目为

基于负载动态分配的水平分量和垂直分量的复合stc编码根据代价函数,实现把信息同时嵌入到运动矢量的水平分量和垂直分量中,具体的过程描述如下:

输入:类型为t预测方向为d的运动矢量,待嵌入的秘密信息,秘密信息开始嵌入的位置,当前运动矢量的目标嵌入信息量d为运动矢量的预测方向,d∈{f,b},其中f代表前向,b代表后向;t为运动矢量的类型,和对当前运动矢量的修改限制情况,计算代价采集的信息;

步骤s701:计算水平分量和垂直分量的目标嵌入信息量

步骤s702:利用公式(9)计算t类运动矢量d方向的运动的水平分量的修改代价,并根据运动矢量的修改限制情况修正得到的修改代价,然后统计其中允许被修改的载体数量根据式(14)计算水平分量中实际嵌入的信息量

步骤s703:在待嵌入的秘密信息的秘密信息开始嵌入位置开始,截取长度为的信息,并将秘密信息开始嵌入的位置设置为截取信息的末尾的后一个比特;

步骤s704:根据水平分量的修改代价,利用stc修改水平分量,完成截取的秘密信息的嵌入,并统计水平分量的修改情况;

步骤s705:根据水平分量的修改情况,利用式(12)计算垂直分量的修改代价,并根据运动矢量修改限制情况对得到的代价进行修正,然后统计允许被修改的载体数量然后根据式(14)计算垂直分量实际嵌入的信息量

步骤s706:在待嵌入的秘密信息的开始嵌入位置开始,截取长度为的信息,并将秘密信息开始嵌入的位置设置为截取信息的末尾的后一个比特;

步骤s707:根据垂直分量的修改代价,利用stc修改垂直分量,完成截取的秘密信息的嵌入;

步骤s708:统计运动矢量的垂直分量的修改情况,并结合水平分量的修改情况整合当前运动矢量的修改情况,并计算当前运动矢量中实际携带的秘密信息数目并将水平分量和垂直分量重新组合为运动矢量;

步骤s709:输出被修改的运动矢量,秘密信息开始嵌入位置,实际携带的秘密信息数目

基于负载动态分配的前向运动矢量和后向运动矢量的复合stc编码具体的过程描述如下:

步骤s709:输入类型为t的运动矢量,待嵌入的秘密信息,秘密信息开始嵌入的位置,当前运动矢量的目前嵌入信息量tart,计算代价采集的信息;

步骤s710:计算运动矢量中前向运动矢量与后向运动矢量的数量并计算前向运动矢量和后向运动矢量在t类运动矢量中的比重并计算前向运动矢量的目标嵌入比特数和后向运动矢量的目标嵌入比特数并将运动矢量的修改限制情况设置为无限制;

步骤s711:判断是否为0;如果为0,则后向运动矢量不存在,跳到步骤s713;否则,将当前的后向运动矢量,秘密信息,秘密信息开始嵌入位置,后向运动矢量目标嵌入比特数和运动矢量的修改限制情况作为输入,对后向运动矢量进行基于负载动态分配的水平分量和垂直分量的复合stc编码流程;

步骤s712:根据得到的后向运动矢量修改方式,更新运动矢量的修改限制情况,如果一个前向运动矢量与一个后向运动矢量属于同一个分块,且后向运动矢量已被修改,则要更新与之对应的前向运动矢量的修改限制情况,将其设置为不能修改;

步骤s713:将前向运动矢量,秘密信息,秘密信息开始嵌入位置,前向运动矢量目标嵌入比特数和运动矢量的修改限制情况作为输入,对前向运动矢量进行基于负载动态分配的水平分量和垂直分量的复合stc编码流程;

步骤s714:计算当前类型的运动矢量中实际携带的信息量

步骤s715:输出修改后的t类运动矢量,秘密信息开始嵌入位置,实际嵌入的信息量bt;

基于负载动态分配的参考帧和非参考帧运动矢量的复合stc编码的流程如下:

步骤s716:输入一个视频的运动矢量,秘密信息,目标嵌入信息量tar,计算代价采集的信息;

步骤s717:应用运动矢量分类方法,根据运动矢量所属的帧的类型,将运动矢量分为三类:非参考帧运动矢量λb,b帧参考帧运动矢量和p帧参考帧运动矢量并将秘密信息开始嵌入位置设置为秘密信息的开始位置;

步骤s718:判断λb是否为空集。如果是,则跳到步骤s719,否则将λb中的运动矢量和目标嵌入信息量tar作为输入,进行基于负载动态分配的前向运动矢量和后向运动矢量的复合stc编码过程。然后根据输出的实际嵌入信息量更新目标嵌入信息量tar,更新方式为

步骤s719:判断tar是否等于0。如果等于0,则基于负载动态分配的复合stc编码流程结束,否则进入下一步。

步骤s720:把经过更新的秘密信息开始嵌入状态,更新后的目标嵌入信息量tar和中的运动矢量,秘密信息,计算代价采集的信息作为输入,进行基于负载动态分配的前向运动矢量和后向运动矢量的复合stc编码过程。然后利用输出的实际嵌入信息量更新目标嵌入信息量tar,更新方式为

步骤s721:判断tar是否等于0;如果等于0,则基于负载动态分配的复合stc编码流程结束,否则进入下一步;

步骤s722:把经过更新的秘密信息开始嵌入状态,更新后的目标嵌入信息量tar和中的运动矢量,秘密信息,计算代价采集的信息作为输入,进行负载动态分配的前向运动矢量和后向运动矢量的复合stc编码过程,然后利用输出的实际嵌入信息量更新目标嵌入信息量tar,更新方式为

步骤s723:判断tar是否为0,如果是,则嵌入成功,否则嵌入失败;

步骤s724:输出被修改后的运动矢量,信息嵌入状态。

实施例2

如图4、表1所示,图4展示了在不同编码参数下,aly【1】,yao【2】,zhang【3】和本专利提出的算法uedwr在对抗基于运动矢量局部最优特性的隐写分析算法时的安全性。检测算法为npeflo(nearperfectestimationforlocaloptimality),详情参见论文【6】。负载使用每个运动矢量的平均嵌入字节-bpmv(bitspermotionvector)衡量。其中图4(1)的实验参数条件为qp=28,帧结构为ipppp,运动搜索方法为epzs【7】;图4(2)的实验参数条件为qp=28,帧结构为ibbbp,运动搜索方法为epzs;图4(3)的实验参数条件为qp=28,帧结构为ibbbp,运动搜索方法为hex【8】;图4(4)的实验参数条件为qp=18,帧结构为ibbbp,运动搜索方法为epzs。实验所用的编码器来自jm19.0【9】。从图中的结果看到,本专利提出的算法在对抗基于运动矢量局部最优特性的隐写分析方法时取得很好的效果(图中的曲线越接近0.5,越靠上越好)。特别是当qp较大时,本专利所提出的算法几乎不能被npeflo检测出来,与其它方法相比具有很大的优势。

表1为在不同编码参数下视频客观质量的变化情况,用psnr(峰值信噪比)改变的平均值衡量。a,b,c,d,e分别代表不同的编码参数,其中a代表的编码参数为qp=28,帧结构为ipppp,运动搜索算法为epzs;b代表的编码参数为qp=28,帧结构为ibbbp,运动搜索算法为epzs;c代表的编码参数为qp=28,帧结构为ibbbp,运动搜索算法为hex;d代表的编码参数为qp=18,帧结构为ibbbp,运动搜索算法为epzs;e代表的编码参数为qp=8,帧结构为ibbbp,运动搜索算法为epzs。从表格看到,本专利所提出的算法对视频的重建质量影响较小,产生的影响几乎可忽略不计,符合设计目标。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

参考文献:

【1】husseina.aly,“datahidinginmotionvectorsofcompressedvideobasedontheirassociatedpredictionerror,”ieeetransactionsoninformationforensics&security,vol.6,no.1,pp.14–18,2011.

【2】yuanzhiyao,weimingzhang,nenghaiyu,andxianfengzhao,“definingembeddingdistortionformotionvector-basedvideosteganography,”multimediatools&applications,vol.74,no.24,pp.11163–11186,2015.

【3】h.zhang,y.cao,andx.zhao,“motionvector-basedvideosteganographywithpreservedlocaloptimality,”multimediatoolsandapplications,vol.75,no.21,pp.13503–13519,nov2016.

【4】fillert,judasj,fridrichj(2011)minimizingadditivedistortioninsteganographyusingsyndrometrelliscodes.ieeetransinfforensic&secur6(3):920–934.

【5】linjieguo,jiangqunni,andyunqingshi,“uniformembeddingforefficientjpegsteganography,”ieeetransactionsoninformationforensics&security,vol.9,no.5,pp.814–825,2014.

【6】hongzhang,yuncao,andxianfengzhao,“asteganalyticapproachtodetectmotionvectormodificationusingnear-perfectestimationforlocaloptimality,”ieeetransactionsoninformationforensics&security,vol.12,no.2,pp.465–478,2017.

【7】a.m.tourapis,“enhancedpredictivezonalsearchforsingleandmultipleframemotionestimation,”proceedingsofspie-theinternationalsocietyforopticalengineering,vol.4671,pp.1069–1079,2002.

【8】c.zhu,x.lin,andl.-p.chau,“hexagon-basedsearchpatternforfastblockmotionestimation,”ieeetransactionsoncircuitsandsystemsforvideotechnology,vol.12,no.5,pp.349–355,may2002.

【9】h.264/avcjmreferencesoftware,accessedonmar.2018.[online].available:http://iphome.hhi.de/suehring/tml/.。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1