Reversible Data Hiding in Encrypted H.264/AVC Video Streams

版权声明:本文为博主[email protected](阿King)原创文章,不得以任何理由任何形式进行转载 https://blog.csdn.net/lj501886285/article/details/85112655

视频加密

IPM(intra prediction modes)加密

  • 对于16x16的MB

在这里插入图片描述
观察到I slice的编码表,

  • 对于4x4的宏块

在这里插入图片描述

MVD加密

在H264的baseLine profile中,运动向量差值MVD使用的是哥伦布指数编码( Exp-Golomb entropy coding),编码出来的codeWord格式为[Mzeros][1][INFO],其中[Mzero]为M个0,[INFO]含有M个bit位来携带信息。故整个codeWord的长度为 2 M + 1 2M+1 。其中M和INFO的计算方式为:
在这里插入图片描述
在这里插入图片描述
那么得到的编码为:
在这里插入图片描述
为了避免比特的开销并兼容H264格式,

残差值加密

在H264的baseLine profile中,量化后的残差块使用的是上下文自适应可变长编码(CAVLC)方式。我们使用密钥E_Key3通过标准序列密码来对非零系数的符号(signs)进行加密。值得一提的是,我们只对亮度块加密,而保持色度块不变。

加密视频的数据嵌入

嵌入区域的选取

  • 因为DC和低频系数携带的能量(energy)大,高频系数携带的能量小。如果我们将信息嵌入到低频系数中,则大量会影响视频的质量和比特率(因为残差块后面要进行熵编码),所以我们应该将信息嵌入到高频系数中,即残差块靠右下角的位置。
  • 假设嵌入的4x4残差块以Zig-Zag序列的位置为 R = [ T 1 , T 2 ] R=[T_1,T_2] ,则有 0 T 1 < T 2 15 0\leq T_1<T_2\leq 15 ,经过大量实验,取 T 2 = 15 T_2=15 ,而 T 1 T_1 根据DC值自适应变化:
    在这里插入图片描述
    作者说: T 1 T_1 的选择仍然有待于优化。
  • 仅仅在P帧中的4x4残差块中进行数据嵌入,且该残差块必须要DC值或第一个AC值不为0。因为I帧对于视频来说很重要(作为参考帧嘛)。
    小编说:那么B帧呢?????

数据嵌入

f i j ( k ) f_{ij}(k) 表示第i个残差宏块的第j子块的第k个已经被加密的系数。
我们统计加密系数的直方图
在这里插入图片描述
± 1 \pm 1 数据箱(bin)用作嵌入, 0 0 数据箱不动,将其余的数据箱子进行漂移(shift),有如下移动规则:
在这里插入图片描述
通俗来讲也就是将腾出一些数据箱来嵌入我们的数据
例如:
在这里插入图片描述

数据提取和恢复

  • 加密域的数据提取
    数据的提取即数据嵌入的逆过程,有
    在这里插入图片描述
    而我们还应对之前直方图漂移(shift)的加密数据进行恢复,此时得到的数据是原始的加密数据
    在这里插入图片描述
    因为所有的操作都是基于加密数据上操作,与原视频数据无关,所以我们避免了原始视频信息的泄露,通过加密密钥用户可以进一步解密视频而得到原始视频内容。
  • 解密域的数据提取
    一些情况下需要我们先解密视频,然后在进行隐藏的数据提取。
  1. 使用加密密钥通过异或(XOR)操作对视频进行解密,解密方式是加密的逆过程。
  2. 我们仍然可以通过
    在这里插入图片描述
    来进行数据提取,因为我们的加密解密过程只是影响了数据的符号(signs),对于嵌入的隐藏数据,无关符号, ± 1 \pm1 都是对应数据0, ± 2 \pm2 都是对应数据1。
  3. 原始视频数据仍然可以通过
    在这里插入图片描述
    来解除数据漂移,此时得到的就是原始视频数据。
    在这里插入图片描述

论文来源:《Reversible Data Hiding in Encrypted H.264/AVC Video Streams》
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lj501886285/article/details/85112655