一种加密域H.264/AVC视频可逆数据隐藏方法与流程

文档序号:12013486阅读:235来源:国知局
一种加密域H.264/AVC视频可逆数据隐藏方法与流程
本发明涉及一种数据隐藏技术,尤其是涉及一种加密域H.264/AVC视频可逆数据隐藏方法。

背景技术:
随着网络环境的优化以及视频编码与通信技术的日益成熟,数字视频的应用范围越来越广泛。但是视频数据安全与隐私保护需求属于无法回避的核心问题。确保视频数据安全性的最佳方法之一就是对视频进行加密,这样攻击者即使获得了视频数据也无法获得其内容,保证了敏感视频的安全。如果敏感视频在参与运算之前需先解密,这就意味着在敏感视频的整个生命周期中,至少有一部分时间是以明文形式存在的,这样会带来严重的隐私问题。加密域信号处理可以在隐私保护的同时进行视频数据运算,可以帮助解决视频安全和隐私的担忧。通常服务商希望在加密视频中嵌入一些附加消息,如来源信息、所有者身份或者认证数据等,用于管理加密视频。同时,在一些重要的应用场合,如医学诊断、法庭认证、军事/航空等敏感领域往往需要在提取附加消息后能精确地恢复原宿主信息。例如,为保护病人隐私,对医学影像等视频信息进行了加密,数据库管理者会在相应的加密视频中嵌入病人的隐私信息和认证信息。为了不影响诊断,授权的医生希望在解密和提取附加信息后,可以完全恢复原始视频内容。可见,如何对加密域视频进行数据隐藏,以及如何保证解密和提取隐藏信息之后数字视频内容的完整性是十分重要的。然而,无论视频加密还是视频数据隐藏,都要考虑视频压缩编码的影响。鉴于H.264/AVC高效的编码性能和良好的网络适应性,也是目前应用最普及的视频编码标准,加密域H.264/AVC视频可逆数据隐藏技术无疑将成为学术界研究的热点。虽然H.264/AVC视频可逆数据隐藏和H.264/AVC视频加密都得到了快速发展,但是数据变成密文后丧失了原有特性,导致现有的H.264/AVC视频可逆数据隐藏技术失效。如何在密文前提下实现可逆数据隐藏,国内外的研究也才刚刚开始,加密和可逆数据隐藏的结合还有很多难点问题有待解决。

技术实现要素:
本发明所要解决的技术问题是提供一种加密域H.264/AVC视频可逆数据隐藏方法,其在与H.264/AVC视频压缩编码标准相兼容的前提下对H.264/AVC视频进行加密,且加密安全性高,同时能够在加密后的H.264/AVC视频中进行可逆数据隐藏,能够保证隐秘信息在加密域和解密域H.264/AVC视频中都能有效地被提取出,并且在解密和提取隐秘信息后可以完全恢复原始视频。本发明解决上述技术问题所采用的技术方案为:一种加密域H.264/AVC视频可逆数据隐藏方法,其特征在于包括H.264/AVC视频加密、加密域的H.264/AVC视频可逆数据隐藏以及隐秘数据提取三部分;所述的H.264/AVC视频加密的处理过程为:对于原始的H.264/AVC视频中预测模式为Intra_4×4预测模式的所有宏块,利用第一密钥生成的二值伪随机序列对每个宏块中模式标志位为0的4×4子块的预测模式的码字的最后3位比特进行比特异或加密,完成每个宏块的预测模式的加密,并利用第四密钥生成的二值伪随机序列对每个宏块中的每个4×4子块中的每个非零残差系数的符号位进行比特异或加密,完成每个4×4子块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为Intra_16×16预测模式的所有宏块,利用第二密钥生成的二值伪随机序列对每个宏块的预测模式的码字的最后1位比特进行比特异或加密,完成每个宏块的预测模式的加密,并利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为Intra_chroma预测模式的所有宏块,对每个宏块的预测模式不加密,而利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为帧间预测模式且运动矢量差分不为0的所有宏块,利用第三密钥生成的二值伪随机序列对每个宏块的运动矢量差分的指数哥伦布码字的最后1位比特进行比特异或加密,完成每个宏块的运动矢量差分的加密,并利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为帧间预测模式且运动矢量差分为0的所有宏块,对每个宏块的运动矢量差分不加密,而利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;通过上述加密得到加密域的H.264/AVC视频;所述的加密域的H.264/AVC视频可逆数据隐藏的具体过程为:②-1、对加密域的H.264/AVC视频的码流进行熵解码,解码得到预测模式为Intra_4×4预测模式的每个宏块中的每个4×4子块中的所有加密的非零残差系数;②-2、确定隐秘信息嵌入区域,记为Z,Z=[Tn-β,Tn]∪[Tp,Tp+β],其中,在此“[]”为区间表示符号,“∪”为并集运算符号,Tn=-1,Tp=1,β为正整数调节因子;②-3、针对步骤②-1中得到的所有加密的非零残差系数,对值大于Tp+β的所有加密的非零残差系数与值小于Tn-β的所有加密的非零残差系数进行预处理,如果步骤②-1中得到的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)大于Tp+β,则令f(i)=f(i)+(β+1),如果步骤②-1中得到的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)小于Tn-β,则令f(i)=f(i)-(β+1);对值大于Tn且小于Tp的所有加密的非零残差系数不进行预处理;对值属于Z的所有加密的非零残差系数不进行预处理;其中,1≤i≤I,I表示步骤②-1中得到的加密的非零残差系数的总个数,f(i)=f(i)+(β+1)和f(i)=f(i)-(β+1)中的“=”为赋值符号;②-4、在步骤②-3的基础上,对值大于Tp+β的所有加密的非零残差系数、值小于Tn-β的所有加密的非零残差系数、值大于Tn且小于Tp的所有加密的非零残差系数不进行隐秘信息嵌入操作;对值属于Z的所有加密的非零残差系数,根据待嵌入的隐秘信息进行修改以完成隐秘信息嵌入操作,完成加密域的H.264/AVC视频可逆数据隐藏,得到含隐秘信息的加密域的H.264/AVC视频,如果经步骤②-3处理后的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)属于区间[Tn-β,Tn],则当待嵌入的隐秘信息比特为0时,令f(i)=f(i)-(Tn-f(i)),当待嵌入的隐秘信息比特为1时,令f(i)=f(i)-(Tn-f(i))-1;如果经步骤②-3处理后的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)属于区间[Tp,Tp+β],则当待嵌入的隐秘信息比特为0时,令f(i)=f(i)+(f(i)-Tp),当待嵌入的隐秘信息比特为1时,令f(i)=f(i)+(f(i)-Tp)+1,其中,f(i)=f(i)-(Tn-f(i))、f(i)=f(i)-(Tn-f(i))-1、f(i)=f(i)+(f(i)-Tp)和f(i)=f(i)+(f(i)-Tp)+1中的“=”为赋值符号;所述的隐秘数据提取在加密域完成或在解密域完成,在加密域完成隐秘数据提取的具体过程为:③-1a、在加密域,对含隐秘信息的加密域的H.264/AVC视频的码流进行熵解码,解码得到预测模式为Intra_4×4预测模式的每个宏块中的每个4×4子块中的所有加密的非零残差系数;③-1b、确定隐秘信息提取区域,记为Z',Z'=Zn∪Zp,Zn=[Tn-2β-1,Tn],Zp=[Tp,Tp+2β+1],其中,“∪”为并集运算符号,在此“[]”为区间表示符号,Tn=-1,Tp=1,β为正整数调节因子;③-1c、针对步骤③-1a中得到的所有加密的非零残差系数,对值大于Tp+2β+1的所有加密的非零残差系数、值小于Tn-2β-1的所有加密的非零残差系数、值大于Tn且小于Tp的所有加密的非零残差系数不进行隐秘信息提取操作;对值属于Z'的所有加密的非零残差系数进行隐秘信息提取操作,提取得到隐秘信息,如果步骤③-1a中得到的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zn,则当mod(Tn-f'(i'),2)等于0时,提取得到的隐秘信息比特为0,当mod(Tn-f'(i'),2)等于1时,提取得到的隐秘信息比特为1;如果步骤③-1a中得到的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zp,则当mod(f'(i')-Tp,2)等于0时,提取得到的隐秘信息比特为0,当mod(f'(i')-Tp,2)等于1时,提取得到的隐秘信息比特为1;其中,1≤i'≤I',在此I'表示步骤③-1a中得到的加密的非零残差系数的总个数,mod()为求余数函数;在解密域完成隐秘数据提取的具体过程为:③-2a、对含隐秘信息的加密域的H.264/AVC视频的码流进行解析,识别含隐秘信息的加密域的H.264/AVC视频的码流中加密的预测模式的码字和加密的运动矢量差分的指数哥伦布码字,并对含隐秘信息的加密域的H.264/AVC视频的码流进行熵解码,解码得到加密的非零残差系数的符号位,对加密的预测模式的码字、加密的运动矢量差分的指数哥伦布码字和加密的非零残差系数的符号位进行解密,再对解密后的非零残差系数进行熵编码,得到解密后的含隐秘信息的H.264/AVC视频的码流;③-2b、在解密域,对解密后的含隐秘信息的H.264/AVC视频的码流进行熵解码,解码得到预测模式为Intra_4×4预测模式的每个宏块中的每个4×4子块中的所有解密的非零残差系数;③-2c、确定隐秘信息提取区域,记为Z',Z'=Zn∪Zp,Zn=[Tn-2β-1,Tn],Zp=[Tp,Tp+2β+1],其中,“∪”为并集运算符号,在此“[]”为区间表示符号,Tn=-1,Tp=1,β为正整数调节因子;③-2d、针对步骤③-2b中得到的所有解密的非零残差系数,对值大于Tp+2β+1的所有解密的非零残差系数、值小于Tn-2β-1的所有解密的非零残差系数、值大于Tn且小于Tp的所有解密的非零残差系数不进行隐秘信息提取操作;对值属于Z'的所有解密的非零残差系数进行隐秘信息提取操作,提取得到隐秘信息,如果步骤③-2b中得到的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zn,则当mod(Tn-f″(i'),2)等于0时,提取得到的隐秘信息比特为0,当mod(Tn-f″(i'),2)等于1时,提取得到的隐秘信息比特为1;如果步骤③-2b中得到的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zp,则当mod(f″(i')-Tp,2)等于0时,提取得到的隐秘信息比特为0,当mod(f″(i')-Tp,2)等于1时,提取得到的隐秘信息比特为1;其中,1≤i'≤I',在此I'表示步骤③-2b中得到的解密的非零残差系数的总个数,mod()为求余数函数。所述的H.264/AVC视频加密的具体过程为:①-1、将原始的H.264/AVC视频中当前待处理的帧定义为当前帧;①-2、将当前帧中当前待处理的宏块定义为当前宏块;①-3、判断当前宏块的预测模式为帧内预测模式还是为帧间预测模式,如果当前宏块的预测模式为帧内预测模式,则继续执行步骤①-4,如果当前宏块的预测模式为帧间预测模式,则继续执行步骤①-5;①-4、当当前宏块的预测模式为Intra_4×4预测模式时,利用第一密钥生成的二值伪随机序列对当前宏块中的所有模式标志位为0的4×4子块的预测模式的码字的最后3位比特进行比特异或加密,完成当前宏块的预测模式的加密,然后执行步骤①-6;当当前宏块的预测模式为Intra_16×16预测模式时,利用第二密钥生成的二值伪随机序列中的第k2位比特对当前宏块的预测模式的码字的最后1位比特进行比特异或加密,完成当前宏块的预测模式的加密,然后令k2=k2+1,再执行步骤①-7,其中,k2的初始值为1,k2=k2+1中的“=”为赋值符号;当当前宏块的预测模式为Intra_chroma预测模式时,对当前宏块的预测模式不加密,然后执行步骤①-7;①-5、当当前宏块的运动矢量差分不为0时,利用第三密钥生成的二值伪随机序列中的第k3位比特对当前宏块的运动矢量差分的指数哥伦布码字的最后1位比特进行比特异或加密,完成当前宏块的运动矢量差分的加密,然后令k3=k3+1,再执行步骤①-7,其中,k3的初始值为1,k3=k3+1中的“=”为赋值符号;当当前宏块的运动矢量差分为0时,对当前宏块的运动矢量差分不加密,然后执行步骤①-7;①-6、将第四密钥生成的二值伪随机序列中的第k4位起的连续L1位比特作为当前残差系数加密比特信息,然后利用当前残差系数加密比特信息对当前宏块中的所有4×4子块中的所有非零残差系数的符号位进行按位比特异或加密,完成当前宏块的残差系数的加密,接着令k4=k4+L1,再执行步骤①-8,其中,k4的初始值为1,k4=k4+L1中的“=”为赋值符号,L1表示当前宏块中的所有4×4子块中非零残差系数的总个数;①-7、将第四密钥生成的二值伪随机序列中的第k4位起的连续L2位比特作为当前残差系数加密比特信息,然后利用当前残差系数加密比特信息对当前宏块中的所有非零残差系数的符号位进行按位比特异或加密,完成当前宏块的残差系数的加密,接着令k4=k4+L2,再执行步骤①-8,其中,k4的初始值为1,k4=k4+L2中的“=”为赋值符号,L2表示当前宏块中非零残差系数的总个数;①-8、将当前帧中下一个待处理的宏块作为当前宏块,然后返回步骤①-3继续执行,直至当前帧中的所有宏块处理完毕;①-9、将原始的H.264/AVC视频中下一个待处理的帧作为当前帧,然后返回步骤①-2继续执行,直至原始的H.264/AVC视频中的所有帧处理完毕,得到加密域的H.264/AVC视频。所述的步骤①-4中当当前宏块的预测模式为Intra_4×4预测模式时,完成当前宏块的预测模式的加密的具体过程为:①-4a、将当前宏块划分为16个互不重叠的4×4子块,将当前宏块中当前待处理的4×4子块定义为当前子块;①-4b、判断当前子块的预测模式的模式标志位是否为0,如果当前子块的预测模式的模式标志位为0,则将第一密钥生成的二值伪随机序列中的第k1位起的连续三位比特作为当前加密比特信息,接着利用当前加密比特信息对当前子块的预测模式的码字的最后3位比特进行按位比特异或加密,得到当前子块的预测模式加密后的码字,然后令k1=k1+3,再执行步骤①-4c;如果当前子块的预测模式的模式标志位不为0,对当前子块的预测模式的码字不加密,再执行步骤①-4c,其中,k1的初始值为1,k1=k1+3中的“=”为赋值符号;①-4c、将当前宏块中下一个待处理的4×4子块作为当前子块,然后返回步骤①-4b继续执行,直至当前宏块中的所有4×4子块处理完毕,完成当前宏块的预测模式的加密。所述的步骤②-4的具体过程为:②-4a、将经步骤②-3处理后的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)定义为当前非零残差系数,并将待嵌入的隐秘信息中当前待嵌入的隐秘信息比特定义为当前待嵌入信息比特,其中,i的初始值为1;②-4b、如果当前非零残差系数不属于Z,则不修改当前非零残差系数,然后执行步骤②-4d;如果当前非零残差系数属于区间[Tn-β,Tn],则当当前待嵌入信息比特为0时,令f(i)=f(i)-(Tn-f(i)),然后执行步骤②-4c;当当前待嵌入信息比特为1时,令f(i)=f(i)-(Tn-f(i))-1,然后执行步骤②-4c;如果当前非零残差系数属于区间[Tp,Tp+β],则当当前待嵌入信息比特为0时,令f(i)=f(i)+(f(i)-Tp),然后执行步骤②-4c;当当前待嵌入信息比特为1时,令f(i)=f(i)+(f(i)-Tp)+1,然后执行步骤②-4c;上述,f(i)=f(i)-(Tn-f(i))、f(i)=f(i)-(Tn-f(i))-1、f(i)=f(i)+(f(i)-Tp)和f(i)=f(i)+(f(i)-Tp)+1中的“=”为赋值符号;②-4c、将待嵌入的隐秘信息中下一个待嵌入的隐秘信息比特作为当前待嵌入信息比特,然后执行步骤②-4d;②-4d、令i=i+1,将经步骤②-3处理后的所有加密的非零残差系数中的下一个加密的非零残差系数作为当前非零残差系数,然后返回步骤②-4b继续执行,直至经步骤②-3处理后的所有加密的非零残差系数处理完毕,完成加密域的H.264/AVC视频可逆数据隐藏,得到含隐秘信息的加密域的H.264/AVC视频,其中,i=i+1中的“=”为赋值符号。所述的步骤③-1c执行完毕,提取得到隐秘信息后进行加密的非零残差系数的恢复操作,再对加密的预测模式的码字、加密的运动矢量差分的指数哥伦布码字和加密的非零残差系数的符号位进行解密,并对解密后的非零残差系数重新进行熵编码,得到原始的H.264/AVC视频的码流,具体过程为:(11)针对经步骤③-1c处理后的所有加密的非零残差系数,对值属于Zn的所有加密的非零残差系数进行恢复操作,如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zn,则当mod(Tn-f'(i'),2)等于0时,令当mod(Tn-f'(i'),2)等于1时,令如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zp,则当mod(f'(i')-Tp,2)等于0时,令当mod(f'(i')-Tp,2)等于1时,令其中,符号为向下取整符号,中的“=”为赋值符号;(12)在步骤(11)的基础上,对值大于Tp+2β+1的所有加密的非零残差系数与值小于Tn-2β-1的所有加密的非零残差系数进行后处理,如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')大于Tp+2β+1,则令f'(i')=f'(i')-(β+1),如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')小于Tn-2β-1,则令f'(i')=f'(i')+(β+1);对值大于Tn且小于Tp的所有加密的非零残差系数不进行后处理;对值属于Z的所有加密的非零残差系数不进行后处理;其中,f'(i')=f'(i')-(β+1)和f'(i')=f'(i')+(β+1)中的“=”为赋值符号;(13)在步骤(12)的基础上,再对加密的预测模式的码字、加密的运动矢量差分的指数哥伦布码字和加密的非零残差系数的符号位进行解密,并对解密后的非零残差系数重新进行熵编码,即得到原始的H.264/AVC视频的码流。所述的步骤③-2d执行完毕,提取得到隐秘信息后进行非零残差系数的恢复操作,再对恢复后的非零残差系数重新进行熵编码,得到原始的H.264/AVC视频的码流,具体过程为:(21)针对经步骤③-2d处理后的所有解密的非零残差系数,对值属于Zn的所有解密的非零残差系数进行恢复得到对应的原始的解密的非零残差系数,如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zn,则当mod(Tn-f″(i'),2)等于0时,令当mod(Tn-f″(i'),2)等于1时,令如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zp,则当mod(f″(i')-Tp,2)等于0时,令当mod(f″(i')-Tp,2)等于1时,令其中,符号为向下取整符号,1中的“=”为赋值符号;(22)在步骤(21)的基础上,对值大于Tp+2β+1的所有解密的非零残差系数与值小于Tn-2β-1的所有解密的非零残差系数进行后处理,如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')大于Tp+2β+1,则令f″(i')=f″(i')-(β+1),如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')小于Tn-2β-1,则令f″(i')=f″(i')+(β+1);对值大于Tn且小于Tp的所有解密的非零残差系数不进行后处理;对值属于Z的所有解密的非零残差系数不进行后处理;(23)在步骤(22)的基础上,再对恢复后的非零残差系数重新进行熵编码,即得到原始的H.264/AVC视频的码流。所述的步骤②-2、所述的步骤③-1b和所述的步骤③-2c中β取大于或等于0的整数。与现有技术相比,本发明的优点在于:1)本发明方法在与H.264/AVC视频压缩编码标准相兼容的前提下选择对预测模式的码字、运动矢量差分的指数哥伦布码字和残差系数的符号位进行加密,计算复杂度低,满足实时视频的应用需求,且加密安全性高;同时,加密对H.264/AVC视频的码流的码率影响很小,不存在视频加密中的数据扩张问题。2)数据隐藏者可以直接在加密域的H.264/AVC视频嵌入隐秘信息,因此可有效解决视频内容安全和隐私泄露问题。3)本发明方法既可以在加密域有效地提取出隐秘数据,也可以在解密域有效地提取出隐秘数据,也即数据提取与解密是完全分离的,实用性更强;此外,本发明方法完全可逆,在解密和提取隐秘信息后可以无损恢复原始视频。附图说明图1为本发明方法中视频加密和数据隐藏的总体实现框图;图2为本发明方法中隐秘信息提取和视频恢复的总体实现框图。具体实施方式以下结合附图实施例对本发明作进一步详细描述。实施例一:本实施例提出的一种加密域H.264/AVC视频可逆数据隐藏方法,其包括H.264/AVC视频加密、加密域的H.264/AVC视频可逆数据隐藏以及隐秘数据提取三部分。在本实施例中,为降低计算复杂度,并减小加密后的H.264/AVC视频的码流的码率变化,同时具有较高的感知安全性,本发明方法选择对帧内预测模式(IPM)的码字、不为0的运动矢量差分(MVD)的指数哥伦布码字和非零残差系数的符号位进行加密,本实施例对H.264/AVC视频加密的总体实现框图如图1所示,处理过程为:对于原始的H.264/AVC视频中预测模式为Intra_4×4预测模式的所有宏块,利用第一密钥生成的二值伪随机序列对每个宏块中模式标志位为0的4×4子块的预测模式的码字的最后3位比特进行比特异或加密,完成每个宏块的预测模式的加密,并利用第四密钥生成的二值伪随机序列对每个宏块中的每个4×4子块中的每个非零残差系数的符号位进行比特异或加密,完成每个4×4子块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为Intra_16×16预测模式的所有宏块,利用第二密钥生成的二值伪随机序列对每个宏块的预测模式的码字的最后1位比特进行比特异或加密,完成每个宏块的预测模式的加密,并利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为Intra_chroma预测模式的所有宏块,对每个宏块的预测模式不加密,而利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为帧间预测模式且运动矢量差分不为0的所有宏块,利用第三密钥生成的二值伪随机序列对每个宏块的运动矢量差分的指数哥伦布码字的最后1位比特进行比特异或加密,完成每个宏块的运动矢量差分的加密,并利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;对于原始的H.264/AVC视频中预测模式为帧间预测模式且运动矢量差分为0的所有宏块,对每个宏块的运动矢量差分不加密,而利用第四密钥生成的二值伪随机序列对每个宏块中的每个非零残差系数的符号位进行比特异或加密,完成每个宏块的残差系数的加密;通过上述加密得到加密域的H.264/AVC视频。在此,对H.264/AVC视频加密的具体过程为:①-1、将原始的H.264/AVC视频中当前待处理的帧定义为当前帧。①-2、将当前帧中当前待处理的宏块定义为当前宏块。①-3、判断当前宏块的预测模式为帧内预测模式还是为帧间预测模式,如果当前宏块的预测模式为帧内预测模式,则继续执行步骤①-4,如果当前宏块的预测模式为帧间预测模式,则继续执行步骤①-5。①-4、当当前宏块的预测模式为Intra_4×4预测模式时,利用第一密钥生成的二值伪随机序列对当前宏块中的所有模式标志位为0的4×4子块的预测模式的码字的最后3位比特进行比特异或加密,完成当前宏块的预测模式的加密,然后执行步骤①-6。在H.264标准中,4×4子块的Intra_4×4预测模式不是直接进行熵编码的,而是通过相邻块的帧内模式来预测的。假设当前子块为E,则对于当前子块E,编码器首先会根据相邻块A和相邻块B计算出当前子块的最可能预测模式MPME,即相邻块A和相邻块B中预测模式值最小的那个预测模式,如果相邻块A和相邻块B中存在无效块(当前片外或非帧内Intra_4×4模式),则将当前子块的模式确定为DC模式。当4×4子块的最优预测模式与最可能预测模式相同时,则将4×4子块的模式标志位置为1,保持4×4子块的预测模式不变,否则,将4×4子块的模式标志位置为0,对4×4子块的预测模式的码字的后3位进行比特位异或加密,具体过程为:当当前宏块的预测模式为Intra_4×4预测模式时,完成当前宏块的预测模式的加密的具体过程为:①-4a、将当前宏块划分为16个互不重叠的4×4子块,将当前宏块中当前待处理的4×4子块定义为当前子块。①-4b、判断当前子块的预测模式的模式标志位是否为0,如果当前子块的预测模式的模式标志位为0,则将第一密钥生成的二值伪随机序列中的第k1位起的连续三位比特作为当前加密比特信息,接着利用当前加密比特信息对当前子块的预测模式的码字的最后3位比特进行按位比特异或加密,得到当前子块的预测模式加密后的码字,然后令k1=k1+3,再执行步骤①-4c;如果当前子块的预测模式的模式标志位不为0,对当前子块的预测模式的码字不加密,再执行步骤①-4c,其中,k1的初始值为1,k1=k1+3中的“=”为赋值符号。①-4c、将当前宏块中下一个待处理的4×4子块作为当前子块,然后返回步骤①-4b继续执行,直至当前宏块中的所有4×4子块处理完毕,完成当前宏块的预测模式的加密。在H.264/AVC中,Intra_16×16预测模式是与编码块模式(CBP)统一编码的。为了保持加密的视频流与H.264/AVC标准解码器兼容,同时码率不发生变化,可以对Intra_16×16预测模式进行加密,保证加密后应该是仅仅预测模式发生变化,而保持CBP不变与码字长度不变。因此本发明方法对Intra_16×16预测模式的加密可以根据一个密钥生成二值伪随机序列,再利用该二值伪随机序列对对应码字的最后1位比特进行加密,这样可以保持CBP和码字长度都不变。即当当前宏块的预测模式为Intra_16×16预测模式时,利用第二密钥生成的二值伪随机序列中的第k2位比特对当前宏块的预测模式的码字的最后1位比特进行比特异或加密,完成当前宏块的预测模式的加密,然后令k2=k2+1,再执行步骤①-7,其中,k2的初始值为1,k2=k2+1中的“=”为赋值符号。当当前宏块的预测模式为Intra_chroma预测模式时,对当前宏块的预测模式不加密,然后执行步骤①-7。①-5、当当前宏块的运动矢量差分不为0时,利用第三密钥生成的二值伪随机序列中的第k3位比特对当前宏块的运动矢量差分的指数哥伦布码字的最后1位比特进行比特异或加密,完成当前宏块的运动矢量差分的加密,然后令k3=k3+1,再执行步骤①-7,其中,k3的初始值为1,k3=k3+1中的“=”为赋值符号。在此,利用第三密钥生成的二值伪随机序列对当前宏块的运动矢量差分的指数哥伦布码字的最后1位比特进行比特异或加密,相当于改变了当前宏块的运动矢量差分的符号,但是码字的长度保持不变,满足格式兼容性,例如运动矢量差分的值为“2”,经过加密后其值变为“-2”,而“2”和“-2”的码字分别为“00100”和“00101”,具有相同的码字长度。由于当运动矢量差分的值等于0时,在加密过程中其对应的码字“1”是保持不变的,因此当当前宏块的运动矢量差分为0时,对当前宏块的运动矢量差分不加密,然后执行步骤①-7。①-6、将第四密钥生成的二值伪随机序列中的第k4位起的连续L1位比特作为当前残差系数加密比特信息,然后利用当前残差系数加密比特信息对当前宏块中的所有4×4子块中的所有非零残差系数的符号位进行按位比特异或加密,完成当前宏块的残差系数的加密,接着令k4=k4+L1,再执行步骤①-8,其中,k4的初始值为1,k4=k4+L1中的“=”为赋值符号,L1表示当前宏块中的所有4×4子块中非零残差系数的总个数。①-7、将第四密钥生成的二值伪随机序列中的第k4位起的连续L2位比特作为当前残差系数加密比特信息,然后利用当前残差系数加密比特信息对当前宏块中的所有非零残差系数的符号位进行按位比特异或加密,完成当前宏块的残差系数的加密,接着令k4=k4+L2,再执行步骤①-8,其中,k4的初始值为1,k4=k4+L2中的“=”为赋值符号,L2表示当前宏块中非零残差系数的总个数。①-8、将当前帧中下一个待处理的宏块作为当前宏块,然后返回步骤①-3继续执行,直至当前帧中的所有宏块处理完毕。①-9、将原始的H.264/AVC视频中下一个待处理的帧作为当前帧,然后返回步骤①-2继续执行,直至原始的H.264/AVC视频中的所有帧处理完毕,得到加密域的H.264/AVC视频。上述对宏块的预测模式、不为0的运动矢量差分和非零残差系数进行加密所利用的二值伪随机序列可以是由同一个密钥生成的,也可以是由不同的密钥生成的,即第一密钥、第二密钥、第三密钥和第四密钥可以相同,也可以不相同,但是解密时所采用的密钥与加密时所采用的密钥需一致。在本实施例中,如图1所示,加密域的H.264/AVC视频可逆数据隐藏的具体过程为:②-1、对加密域的H.264/AVC视频的码流进行熵解码,解码得到预测模式为Intra_4×4预测模式的每个宏块中的每个4×4子块中的所有加密的非零残差系数。②-2、确定隐秘信息嵌入区域,记为Z,Z=[Tn-β,Tn]∪[Tp,Tp+β],其中,在此“[]”为区间表示符号,“∪”为并集运算符号,Tn=-1,Tp=1,β为正整数调节因子,其值越大,则嵌入区域的范围越大,嵌入区域内包含的可修改的系数也越多,即嵌入容量也就越大,因此通过调整β可以灵活控制嵌入容量。②-3、针对步骤②-1中得到的所有加密的非零残差系数,对值大于Tp+β的所有加密的非零残差系数与值小于Tn-β的所有加密的非零残差系数进行预处理,如果步骤②-1中得到的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)大于Tp+β,则令f(i)=f(i)+(β+1),如果步骤②-1中得到的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)小于Tn-β,则令f(i)=f(i)-(β+1);对值大于Tn且小于Tp的所有加密的非零残差系数不进行预处理;对值属于Z的所有加密的非零残差系数不进行预处理;其中,1≤i≤I,I表示步骤②-1中得到的加密的非零残差系数的总个数,f(i)=f(i)+(β+1)和f(i)=f(i)-(β+1)中的“=”为赋值符号。②-4、在步骤②-3的基础上,对值大于Tp+β的所有加密的非零残差系数、值小于Tn-β的所有加密的非零残差系数、值大于Tn且小于Tp的所有加密的非零残差系数不进行隐秘信息嵌入操作;对值属于Z的所有加密的非零残差系数,根据待嵌入的隐秘信息进行修改以完成隐秘信息嵌入操作,完成加密域的H.264/AVC视频可逆数据隐藏,得到含隐秘信息的加密域的H.264/AVC视频,如果经步骤②-3处理后的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)属于区间[Tn-β,Tn],则当待嵌入的隐秘信息比特为0时,令f(i)=f(i)-(Tn-f(i)),当待嵌入的隐秘信息比特为1时,令f(i)=f(i)-(Tn-f(i))-1;如果经步骤②-3处理后的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)属于区间[Tp,Tp+β],则当待嵌入的隐秘信息比特为0时,令f(i)=f(i)+(f(i)-Tp),当待嵌入的隐秘信息比特为1时,令f(i)=f(i)+(f(i)-Tp)+1,其中,f(i)=f(i)-(Tn-f(i))、f(i)=f(i)-(Tn-f(i))-1、f(i)=f(i)+(f(i)-Tp)和f(i)=f(i)+(f(i)-Tp)+1中的“=”为赋值符号。在此,步骤②-4的具体过程为:②-4a、将经步骤②-3处理后的所有加密的非零残差系数中的第i个加密的非零残差系数f(i)定义为当前非零残差系数,并将待嵌入的隐秘信息中当前待嵌入的隐秘信息比特定义为当前待嵌入信息比特,其中,i的初始值为1。②-4b、如果当前非零残差系数不属于Z,则不修改当前非零残差系数,然后执行步骤②-4d。如果当前非零残差系数属于区间[Tn-β,Tn],则当当前待嵌入信息比特为0时,令f(i)=f(i)-(Tn-f(i)),然后执行步骤②-4c;当当前待嵌入信息比特为1时,令f(i)=f(i)-(Tn-f(i))-1,然后执行步骤②-4c。如果当前非零残差系数属于区间[Tp,Tp+β],则当当前待嵌入信息比特为0时,令f(i)=f(i)+(f(i)-Tp),然后执行步骤②-4c;当当前待嵌入信息比特为1时,令f(i)=f(i)+(f(i)-Tp)+1,然后执行步骤②-4c。上述,f(i)=f(i)-(Tn-f(i))、f(i)=f(i)-(Tn-f(i))-1、f(i)=f(i)+(f(i)-Tp)和f(i)=f(i)+(f(i)-Tp)+1中的“=”为赋值符号。②-4c、将待嵌入的隐秘信息中下一个待嵌入的隐秘信息比特作为当前待嵌入信息比特,然后执行步骤②-4d。②-4d、令i=i+1,将经步骤②-3处理后的所有加密的非零残差系数中的下一个加密的非零残差系数作为当前非零残差系数,然后返回步骤②-4b继续执行,直至经步骤②-3处理后的所有加密的非零残差系数处理完毕,完成加密域的H.264/AVC视频可逆数据隐藏,得到含隐秘信息的加密域的H.264/AVC视频,其中,i=i+1中的“=”为赋值符号。在本实施例中,由于隐秘信息提取与视频解密是可完全分割的,因此隐秘数据提取可在加密域完成,也可在解密域完成。在加密域完成隐秘数据提取,即数据的嵌入和提取都是在加密域进行的,可有效解决视频内容安全和隐私泄露问题。此外,有些情况下用户需要先对加密视频进行解密,然后从解密后的视频中提取隐秘信息,例如,一个拥有加密密钥(该密钥即为加密时所利用的二值伪随机序列对应的密钥)的授权用户收到含隐秘信息的加密视频,可以先用加密密钥对视频进行解密,解密后的视频仍然含有隐秘信息,该隐秘信息可以用于追踪数据源。如图2所示,在加密域完成隐秘数据提取的具体过程为:③-1a、在加密域,对含隐秘信息的加密域的H.264/AVC视频的码流进行熵解码,解码得到预测模式为Intra_4×4预测模式的每个宏块中的每个4×4子块中的所有加密的非零残差系数。③-1b、确定隐秘信息提取区域,记为Z',Z'=Zn∪Zp,Zn=[Tn-2β-1,Tn],Zp=[Tp,Tp+2β+1],其中,“∪”为并集运算符号,在此“[]”为区间表示符号,Tn=-1,Tp=1,β为正整数调节因子,其值越大,则嵌入区域的范围越大,嵌入区域内包含的可修改的系数也越多,即嵌入容量也就越大,因此通过调整β可以灵活控制嵌入容量。③-1c、针对步骤③-1a中得到的所有加密的非零残差系数,对值大于Tp+2β+1的所有加密的非零残差系数、值小于Tn-2β-1的所有加密的非零残差系数、值大于Tn且小于Tp的所有加密的非零残差系数不进行隐秘信息提取操作;对值属于Z'的所有加密的非零残差系数进行隐秘信息提取操作,提取得到隐秘信息,如果步骤③-1a中得到的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zn,则当mod(Tn-f'(i'),2)等于0时,提取得到的隐秘信息比特为0,当mod(Tn-f'(i'),2)等于1时,提取得到的隐秘信息比特为1;如果步骤③-1a中得到的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zp,则当mod(f'(i')-Tp,2)等于0时,提取得到的隐秘信息比特为0,当mod(f'(i')-Tp,2)等于1时,提取得到的隐秘信息比特为1;其中,1≤i'≤I',在此I'表示步骤③-1a中得到的加密的非零残差系数的总个数,mod()为求余数函数。实施例二:本实施例提出的一种加密域H.264/AVC视频可逆数据隐藏方法,其H.264/AVC视频加密和加密域的H.264/AVC视频可逆数据隐藏的过程与实施例一中的H.264/AVC视频加密和加密域的H.264/AVC视频可逆数据隐藏的过程一致,不同之处在于本实施例隐秘数据提取在解密域完成。如图2所示,在解密域完成隐秘数据提取的具体过程为:③-2a、对含隐秘信息的加密域的H.264/AVC视频的码流进行解析,识别含隐秘信息的加密域的H.264/AVC视频的码流中加密的预测模式的码字和加密的运动矢量差分的指数哥伦布码字,并对含隐秘信息的加密域的H.264/AVC视频的码流进行熵解码,解码得到加密的非零残差系数的符号位,对加密的预测模式的码字、加密的运动矢量差分的指数哥伦布码字和加密的非零残差系数的符号位进行解密,再对解密后的非零残差系数进行熵编码,得到解密后的含隐秘信息的H.264/AVC视频的码流。在此,利用第一密钥生成的二值伪随机序列对加密的Intra_4×4预测模式的码字进行解密,解密过程与加密过程一致,即从第一密钥生成的二值伪随机序列中按序取出3位,与Intra_4×4预测模式的宏块中模式标志位为0的子块的预测模式的码字的后3位比特进行按位比特异或解密,并且密钥为同一个,即加密和解密时所利用的二值伪随机序列为同一个;利用第二密钥生成的二值伪随机序列对加密的Intra_16×16预测模式的码字进行解密,解密过程与加密过程一致,即从第二密钥生成的二值伪随机序列中按序取出1位,与Intra_16×16预测模式的码字的最后1位比特进行异或解密,并且密钥为同一个,即加密和解密时所利用的二值伪随机序列为同一个;利用第三密钥生成的二值伪随机序列对加密的不为0的运动矢量差分的指数哥伦布码字进行解密,解密过程与加密过程一致,即从第三密钥生成的二值伪随机序列中按序取出1位,与不为0的运动矢量差分的指数哥伦布码字的最后1位比特进行异或解密,并且密钥为同一个,即加密和解密时所利用的二值伪随机序列为同一个;利用第四密钥生成的二值伪随机序列对非零残差系数的符号进行解密,解密的过程与加密时利用第四密钥生成的二值伪随机序列对非零残差系数的符号加密的过程一致,即从第四密钥生成的二值伪随机序列中按序取出1位,与非零残差系数的符号位进行异或解密,并且密钥为同一个,即加密和解密时所利用的二值伪随机序列为同一个。③-2b、在解密域,对解密后的含隐秘信息的H.264/AVC视频的码流进行熵解码,解码得到预测模式为Intra_4×4预测模式的每个宏块中的每个4×4子块中的所有解密的非零残差系数。③-2c、由于对非零残差系数的加密仅仅是改变了其符号,例如,在加密过程中,系数值1可能会变为-1,而根据嵌入,1和-1都对应于隐秘信息比特“0”,因此,加密和解密并不会对隐秘信息的提取造成影响,因此解密域隐秘数据的提取过程与加密域隐秘数据的提取过程相同。确定隐秘信息提取区域,记为Z',Z'=Zn∪Zp,Zn=[Tn-2β-1,Tn],Zp=[Tp,Tp+2β+1],其中,“∪”为并集运算符号,在此“[]”为区间表示符号,Tn=-1,Tp=1,β为正整数调节因子,其值越大,则嵌入区域的范围越大,嵌入区域内包含的可修改的系数也越多,即嵌入容量也就越大,因此通过调整β可以灵活控制嵌入容量。③-2d、针对步骤③-2b中得到的所有解密的非零残差系数,对值大于Tp+2β+1的所有解密的非零残差系数、值小于Tn-2β-1的所有解密的非零残差系数、值大于Tn且小于Tp的所有解密的非零残差系数不进行隐秘信息提取操作;对值属于Z'的所有解密的非零残差系数进行隐秘信息提取操作,提取得到隐秘信息,如果步骤③-2b中得到的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zn,则当mod(Tn-f″(i'),2)等于0时,提取得到的隐秘信息比特为0,当mod(Tn-f″(i'),2)等于1时,提取得到的隐秘信息比特为1;如果步骤③-2b中得到的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zp,则当mod(f″(i')-Tp,2)等于0时,提取得到的隐秘信息比特为0,当mod(f″(i')-Tp,2)等于1时,提取得到的隐秘信息比特为1;其中,1≤i'≤I',在此I'表示步骤③-2b中得到的解密的非零残差系数的总个数,mod()为求余数函数。实施例三:本实施例提出的一种加密域H.264/AVC视频可逆数据隐藏方法,其H.264/AVC视频加密、加密域的H.264/AVC视频可逆数据隐藏和隐秘信息提取的过程与实施例一中的H.264/AVC视频加密、加密域的H.264/AVC视频可逆数据隐藏和隐秘信息提取的过程一致,本实施例在实施例一的基础上进行原始的H.264/AVC视频的恢复。即在步骤③-1c执行完毕,提取得到隐秘信息后进行加密的非零残差系数的恢复操作,再对加密的预测模式的码字、加密的运动矢量差分的指数哥伦布码字和加密的非零残差系数的符号位进行解密,并对解密后的非零残差系数重新进行熵编码,得到原始的H.264/AVC视频的码流,具体过程为:(11)针对经步骤③-1c处理后的所有加密的非零残差系数,对值属于Zn的所有加密的非零残差系数进行恢复操作,如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zn,则当mod(Tn-f'(i'),2)等于0时,令当mod(Tn-f'(i'),2)等于1时,令如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')属于Zp,则当mod(f'(i')-Tp,2)等于0时,令当mod(f'(i')-Tp,2)等于1时,令其中,符号为向下取整符号,中的“=”为赋值符号。(12)在步骤(11)的基础上,对值大于Tp+2β+1的所有加密的非零残差系数与值小于Tn-2β-1的所有加密的非零残差系数进行后处理,如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')大于Tp+2β+1,则令f'(i')=f'(i')-(β+1),如果经步骤③-1c处理后的所有加密的非零残差系数中的第i'个加密的非零残差系数f'(i')小于Tn-2β-1,则令f'(i')=f'(i')+(β+1);对值大于Tn且小于Tp的所有加密的非零残差系数不进行后处理;对值属于Z的所有加密的非零残差系数不进行后处理;其中,f'(i')=f'(i')-(β+1)和f'(i')=f'(i')+(β+1)中的“=”为赋值符号。(13)至步骤(12)得到不含隐秘信息的加密的H.264/AVC视频的码流,因此在步骤(12)的基础上,再对加密的预测模式的码字、加密的运动矢量差分的指数哥伦布码字和加密的非零残差系数的符号位进行解密,并对解密后的非零残差系数重新进行熵编码,即得到原始的H.264/AVC视频的码流。实施例四:本实施例提出的一种加密域H.264/AVC视频可逆数据隐藏方法,其H.264/AVC视频加密、加密域的H.264/AVC视频可逆数据隐藏和隐秘信息提取的过程与实施例二中的H.264/AVC视频加密、加密域的H.264/AVC视频可逆数据隐藏和隐秘信息提取的过程一致,本实施例在实施例二的基础上进行原始的H.264/AVC视频的恢复。即在步骤③-2d执行完毕,提取得到隐秘信息后进行非零残差系数的恢复操作,再对恢复后的非零残差系数重新进行熵编码,得到原始的H.264/AVC视频的码流,具体过程为:(21)针对经步骤③-2d处理后的所有解密的非零残差系数,对值属于Zn的所有解密的非零残差系数进行恢复得到对应的原始的解密的非零残差系数,如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zn,则当mod(Tn-f″(i'),2)等于0时,令当mod(Tn-f″(i'),2)等于1时,令如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')属于Zp,则当mod(f″(i')-Tp,2)等于0时,令当mod(f″(i')-Tp,2)等于1时,令其中,符号为向下取整符号,中的“=”为赋值符号。(22)在步骤(21)的基础上,对值大于Tp+2β+1的所有解密的非零残差系数与值小于Tn-2β-1的所有解密的非零残差系数进行后处理,如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')大于Tp+2β+1,则令f″(i')=f″(i')-(β+1),如果经步骤③-2d处理后的所有解密的非零残差系数中的第i'个解密的非零残差系数f″(i')小于Tn-2β-1,则令f″(i')=f″(i')+(β+1);对值大于Tn且小于Tp的所有解密的非零残差系数不进行后处理;对值属于Z的所有解密的非零残差系数不进行后处理。(23)在步骤(22)的基础上,再对恢复后的非零残差系数重新进行熵编码,即得到原始的H.264/AVC视频的码流。上述步骤②-2、步骤③-1b和步骤③-2c中β取大于或等于0的整数,一般情况下可取0或1。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1