著录项信息
专利名称 | 一种面向H.264/AVC视频的信息隐藏方法 |
申请号 | CN201110184501.6 | 申请日期 | 2011-07-01 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2011-10-19 | 公开/公告号 | CN102223540A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04N7/26 | IPC分类号 | H;0;4;N;7;/;2;6;;;H;0;4;N;7;/;3;0查看分类表>
|
申请人 | 宁波大学 | 申请人地址 | 浙江省宁波市江北区风华路818号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 宁波大学 | 当前权利人 | 宁波大学 |
发明人 | 王让定;胡陆建;徐达文;严迪群;张荣 |
代理机构 | 宁波奥圣专利代理事务所(普通合伙) | 代理人 | 程晓明;周珏 |
摘要
本发明公开了一种面向H.264/AVC视频的信息隐藏方法,通过修改I帧的DCT系数实现水印信息的嵌入,而对于B帧和P帧则通过修改MVD数据实现隐密信息的嵌入,这样一方面嵌入的水印信息可用于视频流的内容完整性认证;另一方面,在信息检测端可根据提取到的水印信息的完整性来判定视频是否遭到攻击,提取的隐密信息是否可信等,从而使隐密信息的安全性得以保证;由于视频序列中P帧和B帧划分为从16×16到4×4尺寸范围的运动子块,更小的子块划分提供了大量可供隐藏隐密信息的MVD数据,因此具有较大的信息隐藏容量;提取信息的过程简单、快速且无需原始视频文件作参考,只需解码I帧的DCT系数及B帧和P帧的MVD数据,有效提高了实时性和实用性。
1.一种面向H.264/AVC视频的信息隐藏方法,H.264/AVC视频主要由I帧图像、B帧图像和P帧图像组成,所述的I帧图像包括至少一个I片,所述的B帧图像包括至少一个B片,所述的P帧图像包括至少一个P片,所述的I片主要由若干个I宏块组成,所述的B片主要由若干个B宏块和若干个I宏块组成,所述的P片主要由若干个P宏块和若干个I宏块组成;所述的I宏块的编码模式分为Intra_4×4和Intra_16×16两类,当所述的I宏块采用Intra_4×4编码模式进行编码时,所述的I宏块被划分为16个4×4亮度块,每个所述的4×4亮度块经变换量化后得到一个4×4的DCT系数矩阵,当所述的I宏块采用Intra_16×16编码模式进行编码时,所述的I宏块经变换量化后得到一个4×4的DC系数矩阵;所述的B宏块的编码模式分为DIRECT、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,所述的P宏块的编码模式分为SKIP、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,当所述的B宏块或所述的P宏块采用Inter_16×16编码模式进行编码时,所述的B宏块或所述的P宏块被划分为1个16×16运动子块,当所述的B宏块或所述的P宏块采用Inter_16×8编码模式进行编码时,所述的B宏块或所述的P宏块被划分为2个
16×8运动子块,当所述的B宏块或所述的P宏块采用Inter_8×16编码模式进行编码时,所述的B宏块或所述的P宏块被划分为2个8×16运动子块,当所述的B宏块或所述的P宏块采用P8×8编码模式进行编码时,所述的B宏块或所述的P宏块被划分为4个8×8子块,所述的8×8子块具有Inter_8×8、Inter_8×4、Inter_4×8、Inter_4×4四类编码模式,当所述的8×8子块采用Inter_8×8编码模式进行编码时,所述的8×8子块被划分为1个8×8运动子块,当所述的8×8子块采用Inter_8×4编码模式进行编码时,所述的8×8子块被划分为2个8×4运动子块,当所述的8×8子块采用Inter_4×8编码模式进行编码时,所述的8×8子块被划分为2个4×8运动子块,当所述的8×8子块采用Inter_4×4编码模式进行编码时,所述的8×8子块被划分为4个4×4运动子块;其特征在于该信息隐藏方法包括以下步骤:
①-1、在信息嵌入端,对当前需嵌入信息的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片;
①-2、判断当前片是否为I片,如果是,则定义当前片中当前待处理的宏块为当前宏块,然后执行步骤①-3,否则,执行步骤①-6;
①-3、当当前宏块的编码模式为Intra_4×4时,将当前宏块的每个4×4亮度块的DCT系数矩阵中非零DCT系数的个数均记为NNZ,并在当前宏块的所有4×4亮度块中选择NNZ最大的4×4亮度块,将选择得到的4×4亮度块记为B4,然后将NNZ所有可能的取值0~16分为两组,分别定义为NNZ1组和NNZ2组,并保存NNZ1组的初始值和NNZ2组的初始值,NNZ1组对应水印位0,NNZ2组对应水印位1,再根据待嵌入的水印信息当前需嵌入的水印位,修改B4的DCT系数矩阵中的中高频DCT系数,具体过程为:当B4的NNZ属于NNZ1组时,判断当前需嵌入的水印位是否为0,如果是,则不作任何处理,然后执行步骤①-4,否则,在NNZ2组中找出一个比B4的NNZ大,且又最接近B4的NNZ的值,将该值与B4的NNZ的绝对差值记为D,并在B4的DCT系数矩阵中沿中频到高频方向,将D个原为0的中高频DCT系数置
1使NNZ2组中存在一个与B4的NNZ相等的值,然后执行步骤①-4;当B4的NNZ属于NNZ2组时,判断当前需嵌入的水印位是否为1,如果是,则不作任何处理,然后执行步骤①-4,否则,在NNZ1组中找出一个比B4的NNZ大,且又最接近B4的NNZ的值,将该值与B4的NNZ的绝对差值记为D,并在B4的DCT系数矩阵中沿中频到高频方向,将D个原为0的中高频DCT系数置1使NNZ1组中存在一个与B4的NNZ相等的值,然后执行步骤①-4;
当当前宏块的编码模式为Intra_16×16时,读取当前宏块的DC系数矩阵中的第一个DC系数,根据待嵌入的水印信息当前需嵌入的水印位,调整当前宏块的DC系数矩阵中的第一个DC系数的最低有效位,具体过程为:当当前宏块的DC系数矩阵中的第一个DC系数的最低有效位为0时,判断当前需嵌入的水印位是否为0,如果是,则不作任何处理,然后执行步骤①-4,否则,将当前宏块的DC系数矩阵中的第一个DC系数的最低有效位加1,然后执行步骤①-4;当当前宏块的DC系数矩阵中的第一个DC系数的最低有效位为1时,判断当前需嵌入的水印位是否为0,如果是,则将当前宏块的DC系数矩阵中的第一个DC系数的最低有效位加1,然后执行步骤①-4,否则,不作任何处理,然后执行步骤①-4;
①-4、判断待嵌入的水印信息是否已嵌入完毕,如果已嵌入完毕,则对当前片进行编码,再执行步骤①-5;如果未嵌入完毕,则再判断当前片中的所有宏块是否已处理完毕,如果已处理完毕,则对当前片进行编码,再将H.264/AVC视频中下一个待处理的片作为当前片,返回步骤①-2继续执行,如果未处理完毕,则将当前片中下一个待处理的宏块作为当前宏块,返回步骤①-3继续执行;
①-5、将H.264/AVC视频中下一个待处理的片作为当前片,如果该当前片为I片,则不作任何处理,直接编码,再返回执行该步骤,如果该当前片不为I片,则执行步骤①-6;
①-6、读取当前片中各个运动子块的MVD数据,将MVD数据的x方向的分量记为MVDx,n n
将MVD数据的y方向的分量记为MVDy,挑选满足条件MVDx≥2‖MVDy≥2 的MVD数据加入到嵌入对象集S中,其中,“‖”为逻辑“或”运算符,n∈N,N表示正整数,嵌入对象集S的初始值为空;
所述的步骤①-6中n取1;
①-7、依次读取嵌入对象集S中的MVD数据,定义当前读取的MVD数据为当前MVD数据,将当前MVD数据的MVDx和MVDy的最低有效位构成的矢量记为(MVDxLSB,MVDyLSB),定义待嵌入的隐密信息当前需嵌入的两位连续的隐密信息位为InfiInfi+1,再将Infi的值赋值给MVDxLSB,将Infi+1的值赋值给MVDyLSB,完成当前MVD数据的调整,实现隐密信息位的嵌入,其中,Infi为待嵌入的隐密信息中的第i位隐密信息,Infi+1为待嵌入的隐密信息中的第i+1位隐密信息,i的初始值为1;
①-8、判断待嵌入的隐密信息是否已嵌入完毕,如果已嵌入完毕,则对当前片进行编码,再执行步骤①-9;如果未嵌入完毕,则再判断嵌入对象集S中的MVD数据是否已处理完毕,如果已处理完毕,则对当前片进行编码,再将H.264/AVC视频中下一个待处理的片作为当前片,返回步骤①-2继续执行,如果未处理完毕,则令i=i+2,然后返回步骤①-7继续执行;
①-9、将H.264/AVC视频中下一个待处理的片作为当前片,如果该当前片为P片或B片,则不作任何处理,直接编码,再返回执行该步骤,如果该当前片为I片,则返回步骤①-4继续执行;
①-10、H.264/AVC视频编码结束后得到嵌入有水印信息和隐密信息的H.264/AVC视频,信息嵌入端将该嵌入有水印信息和隐密信息的H.264/AVC视频、NNZ1组的初始值、NNZ2组的初始值、水印信息、水印信息的长度、隐秘信息的长度发送给信息检测端;
②-1、在信息检测端,对当前嵌入有水印信息和隐密信息的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片;
②-2、判断当前片是否为I片,如果是,则定义当前片中当前待处理的宏块为当前宏块,然后执行步骤②-3,否则,执行步骤②-5;
②-3、当当前宏块的编码模式为Intra_4×4时,将当前宏块的每个4×4亮度块的DCT系数矩阵中非零DCT系数的个数均记为NNZ′,并在当前宏块的所有4×4亮度块中选择NNZ′最大的4×4亮度块,将选择得到的4×4亮度块记为B4′,再根据水印信息提取的密钥,从B4′中提取嵌入的水印位,具体过程为:判断B4′的NNZ′是否属于NNZ1组,如果是,则提取水印位0,然后执行步骤②-4,否则,提取水印位1,然后执行步骤②-4;
当当前宏块的编码模式为Intra_16×16时,读取当前宏块的DC系数矩阵中的第一个DC系数,根据当前宏块的DC系数矩阵中的第一个DC系数的最低有效位,从当前宏块中提取嵌入的水印位,具体过程为:判断当前宏块的DC系数矩阵中的第一个DC系数的最低有效位是否为1,如果是,则提取水印位1,然后执行步骤②-4,否则,提取水印位0,然后执行步骤②-4;
②-4、根据信息嵌入端发送的水印信息的长度判断水印信息是否已提取完毕,如果是,则再判断嵌入有水印信息和隐密信息的H.264/AVC视频中的所有片是否已处理完毕,如果已处理完毕,则执行步骤②-8,如果未处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行;否则,再判断当前片中的所有宏块是否已处理完毕,如果已处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,然后返回步骤②-2继续执行,如果未处理完毕,则将当前片中下一个待处理的宏块作为当前宏块,返回步骤②-3继续执行;
②-5、读取当前片中各个运动子块的MVD数据,将MVD数据的x方向的分量记为n n
MVDx′,将MVD数据的y方向的分量记为MVDy′,挑选满足条件MVDx′≥2‖MVDy′≥2的MVD数据加入到提取对象集S′中,其中,“‖”为逻辑“或”运算符,n∈N,N表示正整数,提取对象集S′的初始值为空;
所述的步骤②-5中n取1;
②-6、依次读取提取对象集S′中的MVD数据,定义当前读取的MVD数据为
当前MVD数据,将当前MVD数据的MVDx′和MVDy′的最低有效位构成的矢量记为(MVDx′LSB,MVDy′LSB),定义待提取的隐密信息当前需提取的两位连续的隐密信息位为Inf′iInf′i+1,再将MVDx′LSB的值赋值给Inf′i,将MVDy′LSB的值赋值给Inf′i+1,实现隐密信息位的提取,其中,Inf′i为待提取的隐密信息中的第i位隐密信息,Inf′i+1为待提取的隐密信息中的第i+1位隐密信息,i的初始值为1;
②-7、根据信息嵌入端发送的隐秘信息的长度判断待提取的隐密信息是否已提取完毕,如果是,则再判断嵌入有水印信息和隐密信息的H.264/AVC视频中的所有片是否已处理完毕,如果已处理完毕,则执行步骤②-8,如果未处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行;否则,再判断当前片的提取对象集S′中的MVD数据是否已处理完毕,如果提取对象集S′中的MVD数据已处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行,如果提取对象集S′中的MVD数据未处理完毕,则令i=i+2,然后返回步骤②-6继续执行;
②-8、判断信息嵌入端发送给信息检测端的水印信息与信息检测端提取得到的水印信息是否相同,如果相同,则认为嵌入有水印信息和隐密信息的H.264/AVC视频未遭受过任何攻击或篡改,确定信息检测端提取得到的隐密信息是可信的,否则,认为嵌入有水印信息和隐密信息的H.264/AVC视频遭受过任何攻击或篡改,确定信息检测端提取得到的隐密信息是不可信的。
2.根据权利要求1所述的一种面向H.264/AVC视频的信息隐藏方法,其特征在于所述的步骤①-3中NNZ1组的初始值为{0,1,4,7,8,11,12,14,15},NNZ2组的初始值为{2,3,5,6,9,10,13,16}。
3.根据权利要求1所述的一种面向H.264/AVC视频的信息隐藏方法,其特征在于所述的步骤①-6中n的取值与所述的步骤②-5中n的取值相同。
一种面向H.264/AVC视频的信息隐藏方法\n技术领域\n[0001] 本发明涉及一种视频信息隐藏技术,尤其是涉及一种面向H.264/AVC视频的信息隐藏方法。\n背景技术\n[0002] 视频信息隐藏作为一种隐密通信技术,已成为多媒体信息安全领域一个新的研究热点。它将重要(机密)信息即隐密信息嵌入到可以公开的其它视频载体中,在基本不改变视频载体的外部特征及使用价值的情况下,实现隐密信息的隐秘传递。视频信息隐藏的关键在于:1、在不明显影响视频载体质量及码率的前提下,取得较大的水印嵌入容量;2、隐密信息的安全性问题,隐密视频应避免引起攻击者的注意,视频的信息隐藏方法应能检测到隐密信息是否已被破解和篡改等,以免导致通信对方读取到错误的信息。\n[0003] 现有的研究成果都是在分析H.264标准相关特性的基础上提出来的,主要分为以下三类方法:1)在I帧的DCT(Discrete Cosine Transform,离散余弦变换)系数及预测模式中实现隐密信息的嵌入,其中修改I帧的DCT系数的方案在一定程度上可抵抗常规攻击,但会给码率造成较大影响,且由于I帧数量较少,因此隐密信息嵌入容量有限;而调制I4块的预测模式实现隐密信息嵌入的方案虽然可取得很好的视频质量,但无法抵抗攻击,且这类方案为能抵抗重压缩攻击会在指定位置嵌入隐密信息,算法极易被破解,提取出的隐秘信息可信度差,安全性不高。2)在运动矢量中实现隐密信息的嵌入,其通过修改MV(Motion Vector,运动矢量)嵌入水印虽然可以取得很好的脆弱性,但会使视频码率有较大增长,这类方案的共同点是难以抵抗攻击,一般用于实现脆弱水印;此外,这类方案会对视频码率有较大影响。3)结合熵编码在VLC(Variable-Length Coding,可变长编码)或CABAC(Context based Adaptive Binary Arithmetic Coding,基于上下文的自适应二进制算术编码)码流中嵌入隐密信息,这类方法通常会选取特定的句法元素,通过在码流中修改这些句法元素的VLC或CABAC码字嵌入隐密信息,这类方法的优点是只需部分解码视频便可实现隐密信息的嵌入和提取,计算复杂度低,但由于忽略了率失真代价,因此视频质量和码率都会受到影响。\n发明内容\n[0004] 本发明所要解决的技术问题是提供一种能够与H.264/AVC视频压缩编码标准相兼容,具有较高的信息隐藏容量,并能够有效保证信息的不可感知性,且能够有效地对视频帧进行完整性认证的信息隐藏方法。\n[0005] 本发明解决上述技术问题所采用的技术方案为:一种面向H.264/AVC视频的信息隐藏方法,H.264/AVC视频主要由I帧图像、B帧图像和P帧图像组成,所述的I帧图像包括至少一个I片,所述的B帧图像包括至少一个B片,所述的P帧图像包括至少一个P片,所述的I片主要由若干个I宏块组成,所述的B片主要由若干个B宏块和若干个I宏块组成,所述的P片主要由若干个P宏块和若干个I宏块组成;所述的I宏块的编码模式分为Intra_4×4和Intra_16×16两类,当所述的I宏块采用Intra_4×4编码模式进行编码时,所述的I宏块被划分为16个4×4亮度块,每个所述的4×4亮度块经变换量化后得到一个\n4×4的DCT系数矩阵,当所述的I宏块采用Intra_16×16编码模式进行编码时,所述的I宏块经变换量化后得到一个4×4的DC系数矩阵;所述的B宏块的编码模式分为DIRECT、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,所述的P宏块的编码模式分为SKIP、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,当所述的B宏块或所述的P宏块采用Inter_16×16编码模式进行编码时,所述的B宏块或所述的P宏块被划分为1个16×16运动子块,当所述的B宏块或所述的P宏块采用Inter_16×8编码模式进行编码时,所述的B宏块或所述的P宏块被划分为2个16×8运动子块,当所述的B宏块或所述的P宏块采用Inter_8×16编码模式进行编码时,所述的B宏块或所述的P宏块被划分为\n2个8×16运动子块,当所述的B宏块或所述的P宏块采用P8×8编码模式进行编码时,所述的B宏块或所述的P宏块被划分为4个8×8子块,所述的8×8子块具有Inter_8×8、Inter_8×4、Inter_4×8、Inter_4×4四类编码模式,当所述的8×8子块采用Inter_8×8编码模式进行编码时,所述的8×8子块被划分为1个8×8运动子块,当所述的8×8子块采用Inter_8×4编码模式进行编码时,所述的8×8子块被划分为2个8×4运动子块,当所述的8×8子块采用Inter_4×8编码模式进行编码时,所述的8×8子块被划分为2个\n4×8运动子块,当所述的8×8子块采用Inter_4×4编码模式进行编码时,所述的8×8子块被划分为4个4×4运动子块;其特征在于该信息隐藏方法包括以下步骤:\n[0006] ①-1、在信息嵌入端,对当前需嵌入信息的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片;\n[0007] ①-2、判断当前片是否为I片,如果是,则定义当前片中当前待处理的宏块为当前宏块,然后执行步骤①-3,否则,执行步骤①-6;\n[0008] ①-3、当当前宏块的编码模式为Intra_4×4时,将当前宏块的每个4×4亮度块的DCT系数矩阵中非零DCT系数的个数均记为NNZ,并在当前宏块的所有4×4亮度块中选择NNZ最大的4×4亮度块,将选择得到的4×4亮度块记为B4,然后将NNZ所有可能的取值\n0~16分为两组,分别定义为NNZ1组和NNZ2组,并保存NNZ1组的初始值和NNZ2组的初始值,NNZ1组对应水印位0,NNZ2组对应水印位1,再根据待嵌入的水印信息当前需嵌入的水印位,修改B4的DCT系数矩阵中的中高频DCT系数,具体过程为:当B4的NNZ属于NNZ1组时,判断当前需嵌入的水印位是否为0,如果是,则不作任何处理,然后执行步骤①-4,否则,在NNZ2组中找出一个比B4的NNZ大,且又最接近B4的NNZ的值,将该值与B4的NNZ的绝对差值记为D,并在B4的DCT系数矩阵中沿中频到高频方向,将D个原为0的中高频DCT系数置1使NNZ2组中存在一个与B4的NNZ相等的值,然后执行步骤①-4;当B4的NNZ属于NNZ2组时,判断当前需嵌入的水印位是否为1,如果是,则不作任何处理,然后执行步骤①-4,否则,在NNZ1组中找出一个比B4的NNZ大,且又最接近B4的NNZ的值,将该值与B4的NNZ的绝对差值记为D,并在B4的DCT系数矩阵中沿中频到高频方向,将D个原为0的中高频DCT系数置1使NNZ1组中存在一个与B4的NNZ相等的值,然后执行步骤①-4;\n[0009] 当当前宏块的编码模式为Intra_16×16时,读取当前宏块的DC系数矩阵中的第一个DC系数,根据待嵌入的水印信息当前需嵌入的水印位,调整当前宏块的DC系数矩阵中的第一个DC系数的最低有效位,具体过程为:当当前宏块的DC系数矩阵中的第一个DC系数的最低有效位为0时,判断当前需嵌入的水印位是否为0,如果是,则不作任何处理,然后执行步骤①-4,否则,将当前宏块的DC系数矩阵中的第一个DC系数的最低有效位加1,然后执行步骤①-4;当当前宏块的DC系数矩阵中的第一个DC系数的最低有效位为1时,判断当前需嵌入的水印位是否为0,如果是,则将当前宏块的DC系数矩阵中的第一个DC系数的最低有效位加1,然后执行步骤①-4,否则,不作任何处理,然后执行步骤①-4;\n[0010] ①-4、判断待嵌入的水印信息是否已嵌入完毕,如果已嵌入完毕,则对当前片进行编码,再执行步骤①-5;如果未嵌入完毕,则再判断当前片中的所有宏块是否已处理完毕,如果已处理完毕,则对当前片进行编码,再将H.264/AVC视频中下一个待处理的片作为当前片,返回步骤①-2继续执行,如果未处理完毕,则将当前片中下一个待处理的宏块作为当前宏块,返回步骤①-3继续执行;\n[0011] ①-5、将H.264/AVC视频中下一个待处理的片作为当前片,如果该当前片为I片,则不作任何处理,直接编码,再返回执行该步骤,如果该当前片不为I片,则执行步骤①-6;\n[0012] ①-6、读取当前片中各个运动子块的MVD数据,将MVD数据的x方向的分量记为n n\nMVDx,将MVD数据的y方向的分量记为MVDy,挑选满足条件MVDx≥2||MVDy≥2 的MVD数据加入到嵌入对象集S中,其中,“||”为逻辑“或”运算符,n∈N,N表示正整数,嵌入对象集S的初始值为空;\n[0013] ①-7、依次读取嵌入对象集S中的MVD数据,定义当前读取的MVD数据为当前MVD数据,将当前MVD数据的MVDx和MVDy的最低有效位构成的矢量记为(MVDxLSB,MVDyLSB),定义待嵌入的隐密信息当前需嵌入的两位连续的隐密信息位为InfiInfi+1,再将Infi的值赋值给MVDxLSB,将Infi+1的值赋值给MVDyLSB,完成当前MVD数据的调整,实现隐密信息位的嵌入,其中,Infi为待嵌入的隐密信息中的第i位隐密信息,Infi+1为待嵌入的隐密信息中的第i+1位隐密信息,i的初始值为1;\n[0014] ①-8、判断待嵌入的隐密信息是否已嵌入完毕,如果已嵌入完毕,则对当前片进行编码,再执行步骤①-9;如果未嵌入完毕,则再判断嵌入对象集S中的MVD数据是否已处理完毕,如果已处理完毕,则对当前片进行编码,再将H.264/AVC视频中下一个待处理的片作为当前片,返回步骤①-2继续执行,如果未处理完毕,则令i=i+2,然后返回步骤①-7继续执行;\n[0015] ①-9、将H.264/AVC视频中下一个待处理的片作为当前片,如果该当前片为P片或B片,则不作任何处理,直接编码,再返回执行该步骤,如果该当前片为I片,则返回步骤①-4继续执行;\n[0016] ①-10、H.264/AVC视频编码结束后得到嵌入有水印信息和隐密信息的H.264/AVC视频,信息嵌入端将该嵌入有水印信息和隐密信息的H.264/AVC视频、NNZ1组的初始值、NNZ2组的初始值、水印信息、水印信息的长度、隐秘信息的长度发送给信息检测端;\n[0017] ②-1、在信息检测端,对当前嵌入有水印信息和隐密信息的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片;\n[0018] ②-2、判断当前片是否为I片,如果是,则定义当前片中当前待处理的宏块为当前宏块,然后执行步骤②-3,否则,执行步骤②-5;\n[0019] ②-3、当当前宏块的编码模式为Intra_4×4时,将当前宏块的每个4×4亮度块的DCT系数矩阵中非零DCT系数的个数均记为NNZ′,并在当前宏块的所有4×4亮度块中选择NNZ′最大的4×4亮度块,将选择得到的4×4亮度块记为B4′,再根据水印信息提取的密钥,从B4′中提取嵌入的水印位,具体过程为:判断B4′的NNZ′是否属于NNZ1组,如果是,则提取水印位0,然后执行步骤②-4,否则,提取水印位1,然后执行步骤②-4;\n[0020] 当当前宏块的编码模式为Intra_16×16时,读取当前宏块的DC系数矩阵中的第一个DC系数,根据当前宏块的DC系数矩阵中的第一个DC系数的最低有效位,从当前宏块中提取嵌入的水印位,具体过程为:判断当前宏块的DC系数矩阵中的第一个DC系数的最低有效位是否为1,如果是,则提取水印位1,然后执行步骤②-4,否则,提取水印位0,然后执行步骤②-4;\n[0021] ②-4、根据信息嵌入端发送的水印信息的长度判断水印信息是否已提取完毕,如果是,则再判断嵌入有水印信息和隐密信息的H.264/AVC视频中的所有片是否已处理完毕,如果已处理完毕,则执行步骤②-8,如果未处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行;否则,再判断当前片中的所有宏块是否已处理完毕,如果已处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,然后返回步骤②-2继续执行,如果未处理完毕,则将当前片中下一个待处理的宏块作为当前宏块,返回步骤②-3继续执行;\n[0022] ②-5、读取当前片中各个运动子块的MVD数据,将MVD数据的x方向的分量记为n n\nMVDx′,将MVD数据的y方向的分量记为MVDy′,挑选满足条件MVDx′≥2||MVDy′≥2的MVD数据加入到提取对象集S′中,其中,“||”为逻辑“或”运算符,n∈N,N表示正整数,提取对象集S′的初始值为空;\n[0023] ②-6、依次读取提取对象集S′中的MVD数据,定义当前读取的MVD数据为当前MVD数据,将当前MVD数据的MVDx′和MVDy′的最低有效位构成的矢量记为(MVDx′LSB,MVDy′LSB),定义待提取的隐密信息当前需提取的两位连续的隐密信息位为Inf′iInf′i+1,再将MVDx′LSB的值赋值给Inf′i,将MVDy′LSB的值赋值给Inf′i+1,实现隐密信息位的提取,其中,Inf′i为待提取的隐密信息中的第i位隐密信息,Inf′i+1为待提取的隐密信息中的第i+1位隐密信息,i的初始值为1;\n[0024] ②-7、根据信息嵌入端发送的隐秘信息的长度判断待提取的隐密信息是否已提取完毕,如果是,则再判断嵌入有水印信息和隐密信息的H.264/AVC视频中的所有片是否已处理完毕,如果已处理完毕,则执行步骤②-8,如果未处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行;否则,再判断当前片的提取对象集S′中的MVD数据是否已处理完毕,如果提取对象集S′中的MVD数据已处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行,如果提取对象集S′中的MVD数据未处理完毕,则令i=i+2,然后返回步骤②-6继续执行;\n[0025] ②-8、判断信息嵌入端发送给信息检测端的水印信息与信息检测端提取得到的水印信息是否相同,如果相同,则认为嵌入有水印信息和隐密信息的H.264/AVC视频未遭受过任何攻击或篡改,确定信息检测端提取得到的隐密信息是可信的,否则,认为嵌入有水印信息和隐密信息的H.264/AVC视频遭受过任何攻击或篡改,确定信息检测端提取得到的隐密信息是不可信的。\n[0026] 所述的步骤①-3中NNZ1组的初始值为{0,1,4,7,8,11,12,14,15},NNZ2组的初始值为{2,3,5,6,9,10,13,16}。\n[0027] 所述的步骤①-6中n的取值与所述的步骤②-5中n的取值相同。\n[0028] 所述的步骤①-6和所述的步骤②-5中n均取1。\n[0029] 与现有技术相比,本发明的优点在于:\n[0030] 1)、本发明方法通过修改I帧的DCT系数实现水印信息的嵌入,而对于B帧和P帧则通过修改MVD数据实现隐密信息的嵌入,这样一方面嵌入的水印信息可用于视频流的内容完整性认证;另一方面,在信息检测端可根据提取到的水印信息的完整性来判定视频是否遭到攻击,提取的隐密信息是否可信等,从而使隐密信息的安全性得以保证。\n[0031] 2)、由于视频序列中P帧和B帧的数量庞大,帧间预测采用基于块的运动估计和运动补偿方法,为每个宏块作树形分割,支持从16×16到4×4尺寸范围的运动子块,更小的子块划分提供了大量可供隐藏隐密信息的MVD数据,因此本发明方法具有较大的信息隐藏容量。\n[0032] 3)、本发明方法水印信息的嵌入通过调制DCT系数个数实现,按编码顺序在Intra_4×4及Intra_16×16编码模式的宏块中均嵌入1bit的水印位,信息检测端直接在I帧中按解码顺序提取水印位,可以有效解决水印提取的同步问题;在Intra_4×4编码模式的宏块中,水印位嵌入位置选取亮度块的DCT系数矩阵中的中高频系数,通过置1操作来实现,这样嵌入强度小,且对视频亮度影响不大;隐密信息的隐密过程通过修改MVD数据得以实现,由于MVD数据被修改的幅度为 因此隐密信息的嵌入对视频质量影响\n较小;另外,只有满足一定幅值范围的MVD数据才会被嵌入隐密信息,该范围的选取也参照了视觉敏感度指标,保证了很好的主观视觉效果。\n[0033] 4)、本发明方法提取水印信息和隐密信息的过程简单、快速且无需原始视频文件作参考,无需对含水印信息的视频文件完全解码,只需解码I帧的DCT系数及B帧和P帧的MVD数据,有效提高了实时性和实用性。\n附图说明\n[0034] 图1为本发明方法信息嵌入的过程示意图;\n[0035] 图2为将编码模式为Intra_4×4的宏块中的4×4亮度块的NNZ所有可能取值\n0~16分为NNZ1和NNZ2两组的示意图;\n[0036] 图3为根据待嵌入的两位隐密信息位InfiInfi+1修改MVD数据的过程示意图;\n[0037] 图4为隐密信息位嵌入时MVD数据的调整示意图;\n[0038] 图5为待嵌入的水印信息(大小为34×43的二值图像);\n[0039] 图6为信息检测端提取出的水印信息;\n[0040] 图7a为测试文件“foreman”的第一个I帧图像;\n[0041] 图7b为测试文件“foreman”的第一个B帧图像;\n[0042] 图7c为测试文件“foreman”的第一个P帧图像;\n[0043] 图8a为“foreman”嵌入水印信息和隐密信息后的第一个I图像;\n[0044] 图8b为“foreman”嵌入水印信息和隐密信息后的第一个B图像;\n[0045] 图8c为“foreman”嵌入水印信息和隐密信息后的第一个P图像;\n[0046] 图9a为在无损情况下提取出的水印信息;\n[0047] 图9b为在重编码下提取出的水印信息。\n具体实施方式\n[0048] 以下结合附图实施例对本发明作进一步详细描述。\n[0049] H.264/AVC视频主要由I帧图像、B帧图像和P帧图像组成,I帧图像包括至少一个I片,B帧图像包括至少一个B片,P帧图像包括至少一个P片,I片主要由若干个I宏块组成,B片主要由若干个B宏块和若干个I宏块组成,P片主要由若干个P宏块和若干个I宏块组成;I宏块的编码模式分为Intra_4×4和Intra_16×16两类,当I宏块采用Intra_4×4编码模式进行编码时,I宏块被划分为16个4×4亮度块,每个4×4亮度块经变换量化后得到一个4×4的DCT(Discrete Cosine Transform,离散余弦变换)系数矩阵(DCT[i][j],0≤i≤3,0≤j≤3,DCT[0][0]为最低频系数,DCT[3][3]为高频系数),该DCT系数矩阵中有些DCT系数为0有些DCT系数为1,该DCT系数矩阵的左上角的DCT系数为DC(直流)系数(即DCT[0][0]为直流系数,也是最低频系数),其余DCT系数为AC(交流)系数,该DCT系数矩阵沿其左上角到右下角对角线方向的DCT系数的频率由低到高,当I宏块采用Intra_16×16编码模式进行编码时,I宏块经变换量化后得到一个4×4的DC系数矩阵(DC[i][j],0≤i≤3,0≤j≤3);B宏块的编码模式分为DIRECT、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,P宏块的编码模式分为SKIP、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,当B宏块或P宏块采用Inter_16×16编码模式进行编码时,B宏块或P宏块被划分为1个16×16运动子块,当B宏块或P宏块采用Inter_16×8编码模式进行编码时,B宏块或P宏块被划分为2个16×8运动子块,当B宏块或P宏块采用Inter_8×16编码模式进行编码时,B宏块或P宏块被划分为2个8×16运动子块,当B宏块或P宏块采用P8×8编码模式进行编码时,B宏块或P宏块被划分为4个\n8×8子块,8×8子块具有Inter_8×8、Inter_8×4、Inter_4×8、Inter_4×4四类编码模式,当8×8子块采用Inter_8×8编码模式进行编码时,8×8子块被划分为1个8×8运动子块,当8×8子块采用Inter_8×4编码模式进行编码时,8×8子块被划分为2个8×4运动子块,当8×8子块采用Inter_4×8编码模式进行编码时,8×8子块被划分为2个4×8运动子块,当8×8子块采用Inter_4×4编码模式进行编码时,8×8子块被划分为4个4×4运动子块;上述各个运动子块均具有MVD(运动矢量残差)数据,B宏块或P宏块在编码时其各个运动子块的MVD数据被编码并写入码流中。\n[0050] 本发明提出的一种面向H.264/AVC视频的信息隐藏方法,其在一个H.264/AVC视频载体中嵌入水印信息和隐密信息,在信息检测端根据检测到的水印信息的完整性来判定视频是否遭到攻击,提取的隐密信息是否可信等,用这种方式来提高隐密通信的安全性。本发明方法主要分为信息嵌入、信息提取和隐密信息可信度判定三个阶段,信息嵌入的流程如图1所示,在信息嵌入端,根据当前片的类型,嵌入不同的信息,即如果当前片是I片,则嵌入水印信息,如果当前片是B片或P片,则嵌入隐密信息,在I片中根据宏块编码顺序在每个宏块中嵌入1bit水印位,对Intra_4×4和Intra_16×16编码模式的宏块采用不同的水印嵌入方法,如果是Intra_4×4编码模式的宏块,则先在其16个4×4亮度块中选出非零DCT系数个数(NNZ)最大的亮度块,然后修改DCT系数矩阵中的高频DCT系数使NNZ相应的映射到不同的分组中,如果是Intra_16×16编码模式的宏块,则直接根据当前需嵌入的水印位修改DC系数矩阵中的第一个DC系数的最低有效位(LSB)进行水印位的嵌入,在I帧中每个宏块均嵌入水印,可以有效解决水印提取的同步问题,另外可以控制水印嵌入强度来减小水印对视频质量的影响;如果当前片是B片或P片,则挑选满足条件n n\nMVDx≥2||MVDy≥2 的MVD数据,根据待嵌入的两位隐密信息位InfiInfi+1调制(MVDxmLSB,MVDymLSB)实现隐密信息的嵌入,其中,MVDx为MVD数据的x方向的分量,MVDy为MVD数据的y方向的分量,MVDxmLSB为MVDx的最低有效位,MVDymLSB为MVDy的最低有效位,“||”为逻辑“或”运算符,n∈N,N表示正整数。在隐密信息可信度判定阶段,将从信息检测端接收到的视频文件中提取出的水印信息与信息嵌入端嵌入的水印信息作对比,从而判定视频载体是否遭到篡改,进而判定出隐密信息是否可信等。本发明方法的信息嵌入过程与信息提取过程均简单、快速,在信息检测端无需原始视频文件作参考,便能够很好的满足视频实时处理的需要。\n[0051] 在描述本发明方法的具体实施过程之前,先说明在此具体实施例中采用的原始载体视频。在此具体实施例中原始载体视频采用QCIF格式的标准测试序列“foreman”,该测试序列“foreman”的分辨率为176×144,帧率为15帧/秒,图像组设定“IBPBPBPBPB”结构,该测试序列“foreman”的第1个I帧图像、第1个B帧图像和第1个P帧图像分别如图\n7a、图7b和图7c所示。除在此给出的测试序列外,也可采用QCIF格式的其他测试序列,也可采用其他格式如CIF格式的其他标准测试序列。待嵌入I片中的水印信息选取一幅二值图像(大小为34×43),如图5所示,待嵌入B片和P片中的隐密信息是需要传递的秘文,是一组二值随机序列。\n[0052] 本发明的一种面向H.264/AVC视频的信息隐藏方法(信息嵌入过程如图1所示)具体包括以下步骤:\n[0053] ①-1、在信息嵌入端,对当前需嵌入信息的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片,根据当前片的类型来区分嵌入的信息内容,信息嵌入环节选取当前片中的宏块执行完预测、变换及量化以后,熵编码之前。\n[0054] ①-2、判断当前片是否为I片,如果当前片类型为I片,则按编码顺序对当前片中的宏块进行处理,定义当前片中当前待处理的宏块为当前宏块,在当前宏块执行完预测、变换及量化以后,执行步骤①-3对当前宏块的DCT系数矩阵作处理以嵌入水印信息,如果当前片类型为P片或B片,则执行步骤①-6;\n[0055] ①-3、当当前宏块的编码模式为Intra_4×4时,将当前宏块的每个4×4亮度块的DCT系数矩阵中非零DCT系数的个数均记为NNZ(number of non-zero coefficient),并在当前宏块的所有4×4亮度块中选择NNZ最大的4×4亮度块,将选择得到的4×4亮度块记为B4,然后根据采用Intra_4×4编码模式的宏块的DCT系数个数具有很好的稳定性这一特征,将NNZ所有可能的取值0~16分为两组,如图2所示,分别定义为NNZ1组和NNZ2组,并保存NNZ1组的初始值和NNZ2组的初始值,NNZ1组对应水印位0,NNZ2组对应水印位1,再根据待嵌入的水印信息当前需嵌入的水印位,修改B4的DCT系数矩阵中的中高频DCT系数(即DCT系数矩阵中3≤i+j≤6位置上的DCT系数,包括DCT[0][3]、DCT[1][2]、DCT[2][1]、DCT[3][1]、DCT[1][3]、DCT[2][2]、DCT[3][1]、DCT[2][3]、DCT[3][2]、DCT[3][3]),具体过程为:当B4的NNZ属于NNZ1组时,判断当前需嵌入的水印位是否为0,如果是,则不作任何处理,然后执行步骤①-4,否则,在NNZ2组中找出一个比B4的NNZ大,且又最接近B4的NNZ的值,将该值与B4的NNZ的绝对差值记为D,并在B4的DCT系数矩阵中沿中频到高频方向,将D个原为0的中高频DCT系数置1使NNZ2组中存在一个与B4的NNZ相等的值,然后执行步骤①-4;当B4的NNZ属于NNZ2组时,判断当前需嵌入的水印位是否为1,如果是,则不作任何处理,然后执行步骤①-4,否则,在NNZ1组中找出一个比B4的NNZ大,且又最接近B4的NNZ的值,将该值与B4的NNZ的绝对差值记为D,并在B4的DCT系数矩阵中沿中频到高频方向,将D个原为0的中高频DCT系数置1使NNZ1组中存在一个与B4的NNZ相等的值,然后执行步骤①-4。\n[0056] 在此具体实施例中,如图2所示,NNZ1组的初始值为{0,1,4,7,8,11,12,14,15},NNZ2组的初始值为{2,3,5,6,9,10,13,16}。根据待嵌入的水印信息当前需嵌入的水印位,修改B4的DCT系数矩阵中的中高频DCT系数的实例如:假设B4的NNZ为10,且当前需嵌入的水印位为1,由于B4的NNZ在NNZ2组中,本身与水印位1相对应,因此不作任何处理,直接将B4转入余下的编码环节即可,如果当前需嵌入的水印位为0,由于水印位0与NNZ1组相对应,故在NNZ1组中找出一个比10大,而又最接近10的值,这里11满足条件,11与\n10的绝对差值为1,因此只需调整B4的DCT系数矩阵中的1个中高频DCT系数,按中频到高频的顺序,即DCT[i][j],ij={30,21,12,03,13,22,31,32,23,33}的顺序,找到1个等于0的DCT系数,将其置1,相应的B4的NNZ增加到11,便映射到NNZ1组中,即将NNZ2组中与B4的NNZ相同的值移到NNZ1组中,如此修改以后再对B4进行编码。\n[0057] 当当前宏块的编码模式为Intra_16×16时,读取当前宏块的DC系数矩阵中的第一个DC系数(即DC[0][0]),根据待嵌入的水印信息当前需嵌入的水印位,调整当前宏块的DC系数矩阵中的第一个DC系数的最低有效位,具体过程为:当当前宏块的DC系数矩阵中的第一个DC系数的最低有效位为0时,判断当前需嵌入的水印位是否为0,如果是,则不作任何处理,然后执行步骤①-4,否则,将当前宏块的DC系数矩阵中的第一个DC系数的最低有效位加1,然后执行步骤①-4;当当前宏块的DC系数矩阵中的第一个DC系数的最低有效位为1时,判断当前需嵌入的水印位是否为0,如果是,则将当前宏块的DC系数矩阵中的第一个DC系数的最低有效位加1,然后执行步骤①-4,否则,不作任何处理,然后执行步骤①-4。\n[0058] 在此,由于Intra_16×16编码模式适用于较为平坦的区域,而Intra_4×4编码模式则适用于纹理较为复杂的区域,且人眼对纹理较为复杂的区域敏感度低,因此在采用Intra_4×4编码模式的宏块中嵌入水印信息可以提高水印的透明性。由于视频在重编码以后会有少量宏块会在Intra_4×4编码模式与Intra_16×16编码模式之间发生转移,虽然数量很少,但是可能会使水印提取失去同步,因此本发明方法在嵌入水印信息时在I片的每个宏块中嵌入1bit水印位,这样在信息检测端水印位是依次提取的,即使重编码会使其中某一水印位提取失败也不会对后面的水印位提取造成影响,可以很好地解决信息检测端的同步问题,有效提高水印对重编码攻击的抵抗能力。\n[0059] ①-4、判断待嵌入的水印信息是否已嵌入完毕,如果已嵌入完毕,则对当前片进行编码,再执行步骤①-5;如果未嵌入完毕,则再判断当前片中的所有宏块是否已处理完毕,如果已处理完毕,则对当前片进行编码,再将H.264/AVC视频中下一个待处理的片作为当前片,返回步骤①-2继续执行,如果未处理完毕,则将当前片中下一个待处理的宏块作为当前宏块,返回步骤①-3继续执行。\n[0060] ①-5、将H.264/AVC视频中下一个待处理的片作为当前片,如果该当前片为I片,则不作任何处理,直接编码,再返回执行该步骤,如果该当前片不为I片,则执行步骤①-6。\n[0061] ①-6、读取当前片中各个运动子块的MVD数据,将MVD数据的x方向的分量记为n n\nMVDx,将MVD数据的y方向的分量记为MVDy,挑选满足条件MVDx≥2||MVDy≥2 的MVD数据加入到嵌入对象集S中,其中,“||”为逻辑“或”运算符,n∈N,N表示正整数,嵌入对象集S的初始值为空。\n[0062] 在此具体实施例中,挑选满足条件MVDx≥2n||MVDy≥2n的MVD数据加入到嵌入对象集S中,进行隐密信息的嵌入,可以有效控制视频的质量,隐密信息嵌入后,各个运动n n\n子块的MVD数据仍然满足条件MVDx≥2||MVDy≥2,这里n取值越大嵌入隐密信息后视频质量越好,但是隐密信息嵌入容量会相应的减小,在满足实际应用的前提下,可以适当调整n值使得嵌入容量与视频质量间得到平衡,在此n取值1。\n[0063] ①-7、依次读取嵌入对象集S中的MVD数据,定义当前读取的MVD数据为当前MVD数据,将当前MVD数据的MVDx和MVDy的最低有效位构成的矢量记为(MVDxLSB,MVDyLSB),定义待嵌入的隐密信息当前需嵌入的两位连续的隐密信息位为InfiInfi+1,将(MVDxLSB,MVDyLSB)作相应的调整以嵌入隐密信息,具体如下:InfiInfi+1一共有(0,0)、(0,1)、(1,0)和(1,1)四种情况,隐密信息嵌入时只需根据InfiInfi+1对(MVDxLSB,MVDyLSB)置位即可,即将Infi的值赋值给MVDxLSB,将Infi+1的值赋值给MVDyLSB(MVDxLSB=Infi,MVDyLSB=Infi+1),如图3所示,完成当前MVD数据的调整,实现隐密信息位的嵌入,其中,Infi为待嵌入的隐密信息中的第i位隐密信息,Infi+1为待嵌入的隐密信息中的第i+1位隐密信息,i的初始值为1。\n[0064] 在此,隐密信息位嵌入时修改MVD数据的幅度如图4所示。举例说明:如果当前MVD数据的(MVDxLSB,MVDyLSB)为(2,3),而InfiInfi+1为00,则需把MVD数据的(MVDxLSB,MVDyLSB)修改为(2,2),如果InfiInfi+1为01,则不作任何处理,如果InfiInfi+1为10,则需将MVD数据的(MVDxLSB,MVDyLSB)修改为(3,2),如果InfiInfi+1为11,则需将MVD数据的(MVDxLSB,MVDyLSB)修改为(3,3)。实际上,MVD数据被修改的幅度为 |dMVD|表示MVD数据被修改的幅度。\n[0065] ①-8、判断待嵌入的隐密信息是否已嵌入完毕,如果已嵌入完毕,则对当前片进行编码,再执行步骤①-9;如果未嵌入完毕,则再判断嵌入对象集S中的MVD数据是否已处理完毕,如果已处理完毕,则对当前片进行编码,再将H.264/AVC视频中下一个待处理的片作为当前片,返回步骤①-2继续执行,如果未处理完毕,则令i=i+2,然后返回步骤①-7继续执行。\n[0066] ①-9、将H.264/AVC视频中下一个待处理的片作为当前片,如果该当前片为P片或B片,则不作任何处理,直接编码,再返回执行该步骤,如果该当前片为I片,则返回步骤①-4继续执行。\n[0067] ①-10、H.264/AVC视频编码结束后得到嵌入有水印信息和隐密信息的H.264/AVC视频,信息嵌入端将该嵌入有水印信息和隐密信息的H.264/AVC视频、NNZ1组的初始值、NNZ2组的初始值、水印信息、水印信息的长度、隐秘信息的长度发送给信息检测端。\n[0068] 图8a给出了测试文件“foreman”嵌入水印信息和隐密信息后的第1个I帧图像,图8b给出了测试文件“foreman”嵌入水印信息和隐密信息后的第1个B帧图像,图8c给出了测试文件“foreman”嵌入水印信息和隐密信息后的第1个P帧图像。\n[0069] ②-1、在信息检测端,对当前嵌入有水印信息和隐密信息的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片,根据当前片的类型有区分的提取不同的信息,在I片中提取水印信息,在B片和P片中提取隐密信息。\n[0070] ②-2、判断当前片是否为I片,如果是,则定义当前片中当前待处理的宏块为当前宏块,在当前宏块执行完熵解码以后得到了相应的DCT系数,根据DCT系数特征提取1bit的水印位,然后根据当前宏块的编码模式执行步骤②-3,否则,执行步骤②-5。\n[0071] ②-3、当当前宏块的编码模式为Intra_4×4时,将当前宏块的每个4×4亮度块的DCT系数矩阵中非零DCT系数的个数均记为NNZ′,并在当前宏块的所有4×4亮度块中选择NNZ′最大的4×4亮度块,将选择得到的4×4亮度块记为B4′,再根据水印信息提取的密钥,从B4′中提取嵌入的水印位,具体过程为:判断B4′的NNZ′是否属于NNZ1组,如果是,则提取水印位0,然后执行步骤②-4,否则,提取水印位1,然后执行步骤②-4。举例说明,选出B4′后,如果B4′的NNZ′值为NNZ1{0,1,4,7,8,11,12,14,15}中的任一个,则提取出水印位0,如果B4′的NNZ′值为NNZ2{2,3,5,6,9,10,13,16}中的一个,则提取出水印位1。\n[0072] 当当前宏块的编码模式为Intra_16×16时,读取当前宏块的DC系数矩阵中的第一个DC系数,根据当前宏块的DC系数矩阵中的第一个DC系数的最低有效位,从当前宏块中提取嵌入的水印位,具体过程为:判断当前宏块的DC系数矩阵中的第一个DC系数的最低有效位是否为1,如果是,则提取水印位1,然后执行步骤②-4,否则,提取水印位0,然后执行步骤②-4。\n[0073] ②-4、根据信息嵌入端发送的水印信息的长度判断水印信息是否已提取完毕,如果是,则再判断嵌入有水印信息和隐密信息的H.264/AVC视频中的所有片是否已处理完毕,如果已处理完毕,则执行步骤②-8,如果未处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行;否则,再判断当前片中的所有宏块是否已处理完毕,如果已处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,然后返回步骤②-2继续执行,如果未处理完毕,则将当前片中下一个待处理的宏块作为当前宏块,返回步骤②-3继续执行。图\n6给出了从嵌入有图5所示的水印信息的视频中提取出的水印信息。\n[0074] ②-5、读取当前片中各个运动子块的MVD数据,将MVD数据的x方向的分量记为n n\nMVDx′,将MVD数据的y方向的分量记为MVDy′,挑选满足条件MVDx′≥2||MVDy′≥2的MVD数据加入到提取对象集S′中,其中,“||”为逻辑“或”运算符,n∈N,N表示正整数,提取对象集S′的初始值为空。在此,n取值为1。\n[0075] ②-6、依次读取提取对象集S′中的MVD数据,定义当前读取的MVD数据为当前MVD数据,将当前MVD数据的MVDx′和MVDy′的最低有效位构成的矢量记为(MVDx′LSB,MVDy′LSB),定义待提取的隐密信息当前需提取的两位连续的隐密信息位为Inf′iInf′i+1,再将MVDx′LSB的值赋值给Inf′i,将MVDy′LSB的值赋值给Inf′i+1,实现隐密信息位的提取,其中,Inf′i为待提取的隐密信息中的第i位隐密信息,Inf′i+1为待提取的隐密信息中的第i+1位隐密信息,i的初始值为1。\n[0076] ②-7、根据信息嵌入端发送的隐秘信息的长度判断待提取的隐密信息是否已提取完毕,如果是,则再判断嵌入有水印信息和隐密信息的H.264/AVC视频中的所有片是否已处理完毕,如果已处理完毕,则执行步骤②-8,如果未处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行;否则,再判断当前片的提取对象集S′中的MVD数据是否已处理完毕,如果提取对象集S′中的MVD数据已处理完毕,则将嵌入有水印信息和隐密信息的H.264/AVC视频中下一个待处理的片作为当前片,返回步骤②-2继续执行,如果提取对象集S′中的MVD数据未处理完毕,则令i=i+2,然后返回步骤②-6继续执行。\n[0077] 图9a给出了从嵌入有水印信息和隐密信息的“foreman”视频中,在无损情况下提取出的水印信息,图9b给出了从嵌入有水印信息和隐密信息的“foreman”视频中,在重编码情况下提取出的水印信息,比较图5、图9a和图9b,可以看出图9a所示的在无损情况下提取出的水印信息与图5所示的嵌入的水印信息相同,而图9b所示的在重编码情况下提取出的水印信息与图5所示的嵌入的水印信息不相同。\n[0078] ②-8、判断信息嵌入端发送给信息检测端的水印信息与信息检测端提取得到的水印信息是否相同,如果相同,则认为嵌入有水印信息和隐密信息的H.264/AVC视频未遭受过任何攻击或篡改,确定信息检测端提取得到的隐密信息是可信的,否则,认为嵌入有水印信息和隐密信息的H.264/AVC视频遭受过任何攻击或篡改,确定信息检测端提取得到的隐密信息是不可信的。
法律信息
- 2016-08-17
未缴年费专利权终止
IPC(主分类): H04N 7/26
专利号: ZL 201110184501.6
申请日: 2011.07.01
授权公告日: 2012.12.05
- 2012-12-05
- 2012-02-15
实质审查的生效
IPC(主分类): H04N 7/26
专利申请号: 201110184501.6
申请日: 2011.07.01
- 2011-10-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |