1.本发明涉及信息隐藏技术领域,是一种基于失真漂移的视频隐写方法。
背景技术:2.近年来,由于网络通信技术和视频编码技术的快速发展,视频隐写已经成为保证信息安全传输的重要技术之一。隐写主要由两个部分组成,即嵌入算法和嵌入代价计算算法。自从文献“minimizing additive distortion in steganography using syndrome
‑
trellis codes”(filler tomas,jan judas,jessica fridrich,ieee transactions on information forensics and security,vol.6,no.3,pp.920
‑
935,2011)提出stc(syndrome
‑
trellis codes)嵌入算法以来,许多隐写研究者都把研究的重心转向了嵌入代价计算算法,因为stc嵌入算法已经很接近香农界,很难被超越。然而,现存的基于stc嵌入的视频隐写算法依然存在三个主要问题。其一,现存的视频隐写算法只利用视频非常少的量化系数进行信息嵌入,这使视频隐写的编码性能受到了限制。例如,文献“an additive steganographic scheme for h.264/avc video with distortion optimization”(xue yiming,zhou jie,zeng hao,zhong ping,wen juan,signal processing:image communication,vol.76,pp.22
‑
30,2019)和文献“cover block decoupling for content
‑
adaptive h.264steganography”(cao yun,wang yu,zhao xianfeng,zhu meineng,xu zhoujun,ih&mmsec’18:proceedings of the6
th acm workshop on information hiding and multimedia security,pp.23
‑
30,2018)的算法只是利用了i帧里非常少的量化系数。而文献“adaptive video data hiding through cost assignment and stcs”(chen yanli,wang hongxia,wu hanzhou,wu zhiqiang,li tao,malik asad,ieee transactions on dependable and secure computing,doi:10.1109/tdsc.2019.2932983,2019)只用了p帧中少量的量化系数,没有用i帧和b帧的量化系数。其二,虽然现存的视频隐写算法用stc嵌入算法使嵌入修改失真最小化,但是现存的视频隐写算法均为逐编码帧进行最小化。上面提到的文献中三个视频隐写算法都是如此。其三,现存的视频隐写的嵌入计算代价方法不能真实地反应嵌入修改失真的影响。
技术实现要素:3.鉴于现有技术的以上情况,本发明的目的在于提出一种能够最小化所有载体嵌入失真的新视频隐写框架(能够同时最小化i帧、p帧和b帧的所有载体嵌入失真),基于这个视频隐写框架,利用stc最小化视频整体(所有帧)的载体元素的嵌入失真,获得更好视觉质量和比特率(bit
‑
rate)较低增长的载密视频,并且具有更强的抗隐写分析的能力。
4.实现本发明目的的技术方案如下:
5.一种基于失真漂移的视频隐写方法,在编码端和解码端之间传输加密隐写信号;所述编码端具有配置同样参数的h.264编码器,即编码器a和编码器b,编码器a用于编码视频获取载体元素和计算嵌入失真代价所需的编码参数,编码器b用于更新载体元素;从隐写
修改导致的失真漂移的角度计算嵌入失真代价完成编码器b的更新;解码端具有用于获取载体元素以提取传输信息的解码器;其运行采用如下的方法:
6.步骤1:在编码端,编码器a利用h.264编码器去编码一个原始视频,获取其量化系数集r和编码参数:重构像素集p,解码预测残差集e,i帧编码周期period,帧播放顺序d,预测方式m,帧间预测方向sp和隐写残差s;编码参数通过载体嵌入失真代价计算步骤为量化系数集r获得嵌入失真代价集ρ
r
;
7.步骤2:从r中选取所有的非零量化dct ac系数作为原始载体元素k,并在ρ
r
中选取对应k的嵌入失真代价集ρ;采用stc算法将私传加载的秘密信息q嵌入原始载体元素集k,从而获得载密载体元素集y;
8.步骤3:在编码端,编码器b与步骤1设置同样参数的h.264编码器去编码与步骤1使用的原始视频;在熵解码前,将步骤2所获隐写载体元素集y去更新对应的非零量化dct ac系数而获得载密视频流j;
9.步骤4:在解码端,接收到载密视频流j后经熵解码获取隐写载体元素y;通过stc提取算法提取出传输的秘密信息q。
10.进一步地,所述载体嵌入失真代价的计算,计算视频帧内帧间预测将隐写修改失真传播到被预测像素的失真代价,包括:
11.步骤1:计算块内嵌入失真代价η;
12.步骤2:计算块间嵌入失真代价φ;
13.步骤3:计算帧间嵌入失真代价
14.步骤4:根据步骤1
‑
3计算的嵌入失真代价,结合帧播放顺序的影响计算最终的嵌入失真代价ρ。
15.采用如上的方法,从失真漂移的角度为载体设计嵌入失真代价,最小化整个视频中所有非零量化dct ac系数的总体嵌入代价,与现有的基于修改量化dct ac系数的视频隐写方法相比,本发明充分利用了所有非零量化dct ac系数,并且最小化整个视频中所有非零量化dct ac系数的总体嵌入代价,在同样的嵌入负载(嵌入容量)下,本方法能够获得更好视觉质量和比特率(bit
‑
rate)较低增长的载密视频,并且具有更强的抗隐写分析的能力。
附图说明
16.图1为h.264/avc压缩过程中进行视频隐写的示意图。
17.图2为计算块间失真代价的例子示意图。
18.图3为计算帧间失真代价的例子示意图。
19.图4为原始视频foreman的前五帧示意图。
20.图5为载密视频foreman的前五帧示意图。
21.图6为原始视频mobile的前五帧示意图。
22.图7为载密视频mobile的前五帧示意图。
23.图8为jm19.0参数配置表。
24.图9为固定嵌入率(bpnzac)下psnr(db)值变化表。
25.图10为固定嵌入率(bpnzac)下比特率(kbit/s)变化表。
具体实施方式
26.下面结合附图对本发明的嵌入代价计算进行进一步说明。
27.本发明方法包括新的视频隐写框架和载体嵌入失真代价的计算两个部分。
28.新的视频隐写框架如图1所示:
29.(1)在编码端,利用h.264编码器去编码一个视频,获取所有的编码参数。
30.(2)在编码端,从步骤1获取的编码参数中选择所有的非零量化dct ac系数作为隐写载体。利用步骤1获取的编码参数计算每个载体元素的嵌入失真代价,利用stc结合计算的嵌入代价将信息嵌入到载体视频中。
31.(3)在编码端,利用另一个与步骤1配置同样参数的h.264编码器去编码与步骤1使用的视频,根据步骤2获得的载密载体去更新对应的非零量化dct ac系数,当视频被传输到解码端时,秘密信息通过视频被携带到了解码端,在传输视频的掩盖下,隐藏了传输信息的存在性。
32.(4)在解码端,接收到载密视频流后可以获取载密载体,通过stc算法就可以提取出传输的信息。
33.载体嵌入失真代价的计算如下:
34.在编码端(信息嵌入端),将原始视频经过h.264压缩编码器,在压缩的过程中获取所需的参数。视频经过视频压缩编码器时,视频会被分割成固定尺寸的宏块(macroblock)而进行预测、dct变换、量化和熵编码四个过程。在量化后和熵编码前获取所需参数来作为载体元素和计算载体元素的嵌入代价。由于dct变换、量化和熵编码主要以4
×
4块为单位,以下描述都以4
×
4块来描述。
35.(1)块内失真代价的计算。根据以下公式计算块内失真代价:
[0036][0037]
其中“|.|”表示绝对值函数;η
‑
(r
m,n
)和η
+
(r
m,n
)为修改位置(m,n)(0≤m,n≤3)的量化系数r
m,n
∈r的块内失真代价,修改方式*∈{+,
‑
}={+1,
‑
1};e
i,j
∈e是4
×
4块中位置(i,j)(0≤i,j≤3)的解码预测残差;p
i,j
∈p是4
×
4块中位置(i,j)的重构像素值,是4
×
4块中位置(i,j)的隐写残差
[0038]
(2)块间失真代价的计算。根据以下公式计算块间失真代价:
[0039][0040]
其中,φ
‑
(r
m,n
)和φ
+
(r
m,n
)为修改位置(m,n)(0≤m,n≤3)的量化系数r
m,n
的块间失真代价;v是4
×
4块中帧内预测模式m的参考像素集,u是4
×
4块中帧内预测模式m的被预测像素集;e
k
∈e是4
×
4块中参考像素k对应的解码预测残差;p
h
∈p是4
×
4块被预测像素h对应的重构像素,是4
×
4块中参考像素k对应的隐写残差。在h.264中有13种帧内预测模
式,包括9种帧内4
×
4预测模式和4种帧内16
×
16预测模式。不失一般性,这里我们仅给出当预测模式是水平预测(horizontal prediction)时v和u的部分求解方法,可以用同样的方式求在其他预测模式下的v和u。如图2,当前4
×
4块p
i,j
的像素i,j,k和l是4
×
4块p
i,j+1
的参考像素,此时在p
i,j
中v={(0,3),(1,3),(2,3),(3,3)},在p
i,j+1
中u={(m,n)|0≤m,n≤3}。进一步,当k=(m,3)(0≤m≤3)时,h∈{(m,n)|0≤n≤3}。例如,k=(0,3),h∈{(0,n)|0≤n≤3}。此外,当4
×
4块p
i,j
的最底端一行被用来预测4
×
4块p
i+1,j
‑1,p
i+1,j
和p
i+1,j+1
时,v要包含4
×
4块p
i,j
最低端一行对应的残差元素,对应地u要包含对应4
×
4块的像素元素。
[0041]
(3)帧间失真代价的计算。根据以下公式计算帧间失真代价:
[0042][0043]
其中,和为修改4
×
4块中位置(m,n)的量化系数r
m,n
的帧间失真代价;h是帧间预测模式m中以4
×
4块位置(m,n)的像素为参考像素的被预测像素的集合;e
m,n
∈e是4
×
4块中位置(m,n)的解码预测残差;p
h
∈p是4
×
4块被预测像素h对应的重构像素,是4
×
4块中被预测像素h的参考像素对应的隐写残差;此外,g(h,sp)的计算方式为:
[0044][0045]
图3是计算帧间失真代价的一个例子,h∈h={p1,p2,p3}。
[0046]
(4)最终失真代价的计算。根据以下公式计算最终失真代价:
[0047][0048]
其中,α,β和γ是三个权重因子,并且它们有关系α+β+γ=1。此外,函数ψ(d)被利用来反应帧播放顺序对隐写修改代价的影响。
[0049][0050]
其中,period是i帧的周期,mod(x,y)是求y对x的余数。在本算法中所有的非零量化dct ac系数都被用来承载秘密信息,且非零量化dct ac系数不能被修改为0,也就是说这类非零载体的修改代价为无穷大。
[0051]
结合stc算法和被计算的最终嵌入修改代价,信息能够被嵌入视频流中被传输。
[0052]
在解码端(信息提取端),将收到的视频流经过熵解码后获取所有的载体,再利用stc算法就可以将信息提取出来。
[0053]
本发明方法的效果可以通过以下的性能分析验证:
[0054]
1、不可感知特性
[0055]
为了测试本方法的性能,本方法应用于h.264/avc测试平台jm19.0(http://iphone.hhi.de/suehring/tml/download/)进行实验。主要参数如图8所示,除提到的参数
外,其他参数保持默认值,在实验仿真中,“foreman”和“mobile”用作测试视频,其分辨率都是176
×
144,视频格式是yuv420。分别在嵌入率为0.05,0.10,0.15,0.20和0.25bpnzac(bits per nonzero quantized discrete cosine transform alternating current coefficient)情况下去评估算法性能。图4和图6是原始foreman和mobile的前5帧图像,图5和图7是嵌入率为0.25bpnzac时foreman和mobile的前5帧图像,图5和图7别对应于图4和图6。对比图4和图5,以及图6和图7,没有发现任何失真。此外,图9被利用来客观评估载密视频的视觉质量,嵌入率为0bpnzac表示没有嵌入信息,即原始编码器产生的载密视频的psnr值。从图9可以观察到,当嵌入信息到视频中时,和原始视频质量相比,嵌入修改使载密视频foreman和mobile的psnr值都有较小程度的降低。当设置嵌入率最大在0.25bpnzac时,psnr值降低最大,这是因为嵌入率越大,嵌入的信息越多,导致的嵌入修改相应地增多,从而使foreman和mobile的载密视频视觉质量psnr值都相应地降低。根据图4、图5、图6、图7以及表2的psnr值,反应出了本视频隐写算法具有良好的失真不可感知特性。
[0056]
2、比特率变化
[0057]
在h.264/avc的jm19.0编码器中,比特率用来衡量编码器编码效率,因此可以用其变化来衡量嵌入信息对编码器编码效率的影响。图10给出了嵌入率为0~0.25bpnzac的比特率。同样地,当嵌入率为0bpnzac时表示没有在视频中嵌入信息。从图10可以看出,随着嵌入率的增加,比特率也增加。在本隐写算法中,所有非零系数都被用来作为载体,且它们不能被修改为0,也就是说值为
±
1的系数不能被修改为0,因此它们要么不变,要么变为
±
2。从而系数绝对值的增加导致需要更多的比特来编码,隐写比特率变大了。
[0058]
尽管上面对本发明说明性的具体实施方式进行了描述,以便本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,只要各种变化在本发明所附权利要求限定和精神范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。