CN101841700B - 一种面向h.264压缩比特流的视频水印方法 - Google Patents
一种面向h.264压缩比特流的视频水印方法 Download PDFInfo
- Publication number
- CN101841700B CN101841700B CN 201010177007 CN201010177007A CN101841700B CN 101841700 B CN101841700 B CN 101841700B CN 201010177007 CN201010177007 CN 201010177007 CN 201010177007 A CN201010177007 A CN 201010177007A CN 101841700 B CN101841700 B CN 101841700B
- Authority
- CN
- China
- Prior art keywords
- watermark
- sub
- inter
- variable length
- code word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种面向H.264压缩比特流的视频水印方法,首先根据I片中4×4亮度块的预测模式生成认证码,然后通过调制B片和P片中某些运动子块的可变长码字将其嵌入到片级码流中,这种调制是基于可变长码字和待嵌入的比特位之间的映射规则进行的,映射后的可变长码字与原可变长码字具有很好的相似性,由于本方法不需要对视频比特流进行预处理,且水印嵌入过程仅在H.264/AVC压缩比特流中选取适当的可变长码字进行一些比较和替换操作,没有涉及大量的运算,使得本方法计算复杂度低、安全性好、实用性强,并能够较好地满足视频实时处理的要求。
Description
技术领域
本发明涉及一种视频的信息隐藏技术,尤其是涉及一种面向H.264压缩比特流的视频水印方法。
背景技术
随着多媒体网络技术的飞速发展,数字多媒体信息特别是视频信息的交流已经达到了前所未有的程度。然而,视频信息在传输过程中极易遭受各种无意或有意的篡改攻击,这使得人们对视频信息的完整性和内容的真实性产生怀疑。如果篡改涉及国家安全、法庭举证等重要内容时,则可能会造成更为严重的后果。因此,如何在网络环境中对视频信息内容的真实性、完整性实施有效地保护已经成为近年来多媒体信息安全领域研究的热点。脆弱性水印作为一种保密通信技术,是解决这一问题最有效的方法之一,它将数据、图像等水印信息以人所不可感知的方式嵌入到视频信息中,通过对该水印信息的提取可以实现视频信息的完整性认证,甚至可以指出篡改的位置和攻击类型等。
现有的基于H.264/AVC的脆弱性水印方法主要是通过调制运动矢量或者中高频DCT(Discrete Cosine Transform,离散余弦变换)系数嵌入水印信息。该类方法在水印信息嵌入时,需要先对视频比特流进行解码,然后再结合编码标准调制运动矢量或者DCT系数;在水印信息检测时,同样先要对视频比特流进行解码,其最明显的缺点就是计算复杂度较大。为了进一步提高水印信息的实用性,一种最有效的方法是直接在视频比特流中嵌入水印信息,即根据待嵌入的水印信息,修改视频比特流的可变长编码(Variable Length Coding,VLC)码字。然而,H.264的高效压缩性能使其对编码比特流中的微小变化非常敏感,从而使得实现基于H.264码流域的水印具有很大的困难和挑战。有研究者通过修改帧内16×16编码模式的视频流嵌入水印信息,该方法虽然具有很好的不可感知性和较小的码率变化,但在实际的编码过程中,帧内16×16编码模式的宏块比较稀少,即水印容量相对较小。还有一类方法是通过对视频序列进行统计分析,将CAVLC(基于上下文的自适应变长编码)码字空间分成常用的码字空间和未使用的码字空间两组,然后根据待嵌入比特和码字空间的映射关系嵌入水印,该方法同样具有较好的不可感知性,且嵌入容量也相对较大,但是该方法必须先对视频序列进行统计分析才能建立映射规制,而且该方法对码率的影响也较大。
发明内容
本发明所要解决的技术问题是提供一种能够与H.264/AVC视频压缩编码标准相兼容,具有较高的水印容量,并能够有效保证水印的安全性和不可感知性,且能够有效地对视频帧进行完整性认证的面向H.264压缩比特流的视频水印方法。
本发明解决上述技术问题所采用的技术方案为:一种面向H.264压缩比特流的视频水印方法,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亮度块具有DC预测模式和八种方向预测模式,所述的DC预测模式用数字2标识,所述的八种方向预测模式包括垂直、水平、下左对角线、下右对角线、右垂直、下水平、左垂直和上水平方向预测模式,所述的垂直方向预测模式用数字0标识,所述的水平方向预测模式用数字1标识,所述的下左对角线方向预测模式用数字3标识,所述的下右对角线方向预测模式用数字4标识,所述的右垂直方向预测模式用数字5标识,所述的下水平方向预测模式用数字6标识,所述的左垂直方向预测模式用数字7标识,所述的上水平方向预测模式用数字8标识,所述的B宏块的编码模式分为DIRECT、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,所述的DIRECT编码模式用数字0标识,所述的Inter_16×16编码模式用数字1标识,所述的Inter_16×8编码模式用数字2标识,所述的Inter_8×16编码模式用数字3标识,所述的P8×8编码模式用数字8标识,当所述的B宏块使用Inter_16×16编码模式时,将所述的B宏块分为1个16×16运动子块,当所述的B宏块使用Inter_16×8编码模式时,将所述的B宏块分为2个16×8运动子块,当所述的B宏块使用Inter_8×16编码模式时,将所述的B宏块分为2个8×16运动子块,当所述的B宏块使用P8×8编码模式时,将所述的B宏块首先分为4个8×8子块,所述的8×8子块具有Inter_8×8、Inter_8×4、Inter_4×8、Inter_4×4四类编码模式,所述的Inter_8×8编码模式用数字4标识,所述的Inter_8×4编码模式用数字5标识,所述的Inter_4×8编码模式用数字6标识,所述的Inter_4×4编码模式用数字7标识,当所述的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运动子块,所述的P宏块的编码模式分为SKIP、Inter_16×16、Inter_16×8及Inter_8×16、P8×8五类,所述的SKIP编码模式用数字0标识,所述的Inter_16×16编码模式用数字1标识,所述的Inter_16×8编码模式用数字2标识,所述的Inter_8×16编码模式用数字3标识,所述的P8×8编码模式用数字8标识,当所述的P宏块使用Inter_16×16编码模式时,将所述的P宏块分为1个16×16运动子块,当所述的P宏块使用Inter_16×8编码模式时,将所述的P宏块分为2个16×8运动子块,当所述的P宏块使用Inter_8×16编码模式时,将所述的P宏块分为2个8×16运动子块,当所述的P宏块使用P8×8编码模式时,将所述的P宏块首先分为4个8×8子块,所述的8×8子块具有Inter_8×8、Inter_8×4、Inter_4×8、Inter_4×4四类编码模式,所述的Inter_8×8编码模式用数字4标识,所述的Inter_8×4编码模式用数字5标识,所述的Inter_4×8编码模式用数字6标识,所述的Inter_4×4编码模式用数字7标识,当所述的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视频受到干扰或攻击后各4×4亮度块预的测模式发生转移的模式转移概率,将4×4亮度块具有的DC预测模式、垂直方向预测模式、水平方向预测模式、下左对角线方向预测模式、下右对角线方向预测模式、右垂直方向预测模式、下水平方向预测模式、左垂直方向预测模式和上水平方向预测模式分为两组,分别定义为第一组预测模式和第二组预测模式;
①-2、在水印嵌入端,随机选择一个[1,16]区间内的整数作为认证密钥,记为Key1,随机选择一个[1,16]区间内的整数作为水印密钥,记为Key2;
①-3、对于当前需嵌入水印的H.264/AVC视频压缩比特流以片为单位进行处理,定义当前正在处理的片为当前片;
①-4、判断当前片是否为I片,如果是,则继续执行下一步,否则,执行步骤①-7;
①-5、定义当前片中当前正在处理的I宏块为当前I宏块,判断当前I宏块使用的编码模式是否为Intra_4×4编码模式,如果是,则根据认证密钥Key1选择当前I宏块中与认证密钥Key1位置相对应的4×4亮度块,当该4×4亮度块所使用的预测模式属于第一组预测模式时,生成第k个认证码,记为Ck,Ck=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个认证码,记为Ck,Ck=1,其中,k的初始值为1,1≤k≤K,K表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理;
①-6、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤①-5,直至当前片中所有I宏块处理完毕,获得一个认证码序列,记为C,C={C1,C2,…,Ck,…,CK,1≤k≤K},将该认证码序列C作为待嵌入的水印序列,将认证码作为待嵌入的水印比特位,然后执行步骤①-13;
①-7、当当前片为B片或P片时,根据水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可嵌入水印的运动子块,定义所有可嵌入水印的运动子块构成的集合为待嵌入水印的运动子块集合,记为V,V={V1 p,…,Vq p,…,VN p},其中,V1 p表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,Vq p表示当前片中第q个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,VN p表示当前片中第N个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,N表示待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数,p=Key2,q的初始值为1;
①-8、定义当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中所有绝对值大于1的运动矢量残差生成的可变长码字构成的集合为可嵌入水印的码字集合,记为S,S={vlc1′,…,vlcq1′,…,vlcN1′},其中,vlc1′、vlcq1′、vlcN1′分别表示可嵌入水印的码字集合S中的第1个可变长码字、第q1个可变长码字、第N1个可变长码字,N1表示可嵌入水印的码字集合S中包含的不同的可变长码字的总个数,q1的初始值为1;
①-9、根据可嵌入水印的码字集合S中各个可变长码字对应的运动矢量残差的绝对值及各个可变长码字的长度,将可嵌入水印的码字集合S分为可嵌入水印的第一码字子集和可嵌入水印的第二码字子集,分别记为S1和S2;
①-10、将待嵌入水印的运动子块集合V中的各个运动子块的运动矢量残差生成的可变长码字构成的集合定义为待嵌入水印的码字集合,记为SV,SV={vlc1,…,vlcq,…,vlcN},其中,vlc1、vlcq、vlcN分别表示待嵌入水印的运动子块集合V中的第1个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第q个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第N个运动子块的运动矢量残差生成的可变长码字,N表示待嵌入水印的码字集合SV中包含的不同的可变长码字的总个数,与待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数相同,q的初始值为1;
①-11、定义待嵌入水印的码字集合SV中当前待嵌入水印的可变长码字为当前可变长码字,然后判断待嵌入的水印序列C中所有待嵌入的水印比特位是否已嵌入完毕,如果是,则重复使用待嵌入的水印序列C,否则,根据待嵌入的水印序列C中当前待嵌入的水印比特位进行码字替换,如果待嵌入的水印比特位为0,则认为当前可变长码字为可嵌入水印的第一码字子集合S1中的可变长码字,如果当前可变长码字本身为可嵌入水印的第一码字子集合S1中的可变长码字,则对当前可变长码字不进行任何修改,实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第一码字子集合S1中与之次匹配的可变长码字,实现水印嵌入;如果待嵌入的水印比特位为1,则认为当前可变长码字为可嵌入水印的第二码字子集合S2中的可变长码字,如果当前可变长码字本身为可嵌入水印的第二码字子集合S2中的可变长码字,则对当前可变长码字不进行任何修改,实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第二码字子集合S2中与之次匹配的可变长码字,实现水印嵌入;
①-12、将待嵌入水印的码字集合SV中下一个待嵌入水印的可变长码字作为当前可变长码字,并返回执行步骤①-11,直到待嵌入水印的码字集合SV中的所有可变长码字处理完毕,完成水印的嵌入,然后执行下一步;
①-13、将下一个待处理的片作为当前片,并返回执行步骤①-4,直至H.264/AVC视频压缩比特流中所有片处理完毕,得到嵌入有水印的H.264/AVC视频压缩比特流;
①-14、水印嵌入端将认证密钥Key1、水印密钥Key2、第一组预测模式M、第二组预测模式M′、可嵌入水印的第一码字集合S1和可嵌入水印的第二码字集合S2发送给水印检测端;
②-1、在水印检测端,对于当前嵌入有水印的H.264/AVC视频压缩比特流以片为单位进行处理,定义当前正在处理的片为当前片;
②-2、判断当前片是否为I片,如果是,则继续执行,否则,执行步骤②-5;
②-3、定义当前片中当前正在处理的I宏块为当前I宏块,判断当前I宏块使用的编码模式是否为Intra_4×4编码模式,如果是,则首先解码当前I宏块中各个4×4亮度块的预测模式,然后根据接收到的认证密钥Key1选择当前I宏块中位置相对应的4×4亮度块,当该4×4亮度块所使用的预测模式属于第一组预测模式时,生成第k个重建认证码,记为Ck′,Ck′=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个重建认证码,记为Ck′,Ck′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理;
②-4、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤②-3,直至当前片中所有I宏块处理完毕,获得一个重建认证码序列,记为C′,C′={C1′,C2′,…,Ck′,…,Ck′′,1≤k≤K′},然后执行步骤②-10;
②-5、当当前片为B片或P片时,根据接收到的水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可提取水印的运动子块,定义所有可提取水印的运动子块构成的集合为待提取水印的运动子块集合,记为V′,V′={V1 p′,…,Vq′p′,…,VN′p′},其中,V1 p′表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,Vq′p′表示当前片中第q′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,VN′p′表示当前片中第N′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,N′表示待提取水印的运动子块集合V′中包含的可提取水印的运动子块的总个数,p′=Key2,q′的初始值为l;
②-6、将待提取水印的运动子块集合V′中的各个运动子块的运动矢量残差生成的可变长码字构成的集合定义为待提取水印的码字集合,记为S′,S′={vlc1′,…,vlcq′′,…,vlcN′′},其中,vlc1′、vlcq′′、vlcN′′分别表示待提取水印的运动子块集合V′中的第1个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第q′个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第N′个运动子块的运动矢量残差生成的可变长码字,N′表示待提取水印的码字集合S′中包含的不同的可变长码字的总个数;
②-7、根据待提取水印的码字集合S′中各个可变长码字提取水印信息,定义待提取水印的码字集合S′中当前待提取的可变长码字为当前可变长码字,如果当前可变长码字属于可嵌入水印的第一码字集合S1,则提取水印比特位0;如果当前可变长码字属于可嵌入水印的第二码字集合S2,则提取水印比特位1;
②-8、将待提取水印的码字集合S′中下一个待提取水印的可变长码字作为当前可变长码字,并返回执行步骤②-7,直到待提取水印的码字集合S′中的所有可变长码字处理完毕,得到从当前片中提取出的水印序列,并记为W′,W′={W1′,W2′,...Wk′,...WN′,1≤k≤N′};
②-9、判断重建认证码序列的长度是否小于当前片中提取出的水印序列的长度,如果是,则重复排列重建认证码序列,获取一个长度与当前片中提取出的水印序列的长度相同的重组重建认证码序列,比较重组重建认证码序列和当前片中提取出的水印序列,统计两者不相同的比特位个数,记为S′,然后根据重组重建认证码序列和当前片中提取出的水印序列计算检测出错率,记为BER,其中,S表示当前片中提取出的水印序列包含的水印比特位的总个数,再判断BER≤τ是否成立,如果成立,则表示当前片中提取出的水印与水印嵌入端嵌入的水印相同,否则,表示当前片中提取出的水印与水印嵌入端嵌入的水印不相同,其中,τ为设定的阈值;
②-10、将下一个待处理的片作为当前片,并返回执行步骤②-2,直至H.264/AVC视频压缩比特流中所有片处理完毕。
所述的步骤①-1中H.264/AVC视频受到干扰或攻击后各4×4亮度块的预测模式发生转移的模式转移概率的计算过程为:记当前4×4亮度块的预测模式为标识为i的预测模式,记标识为i的预测模式转移为标识为j的预测模式的模式转移概率为Pij,其中,i,j∈[0,8],Sum(i→j)表示H.264/AVC视频受到干扰或攻击后从标识为i的预测模式转移为标识为j的预测模式的4×4亮度块的总个数,Sum(i)表示H.264/AVC视频受到干扰或攻击前预测模式采用标识为i的预测模式的4×4亮度块的总个数。
所述的步骤①-1中将4×4亮度块具有的预测模式分为第一组预测模式和第二组预测模式是通过计算得到的,其中,min( )为取最小值函数,{ }表示集合,M表示第一组预测模式,M′表示第二组预测模式,m表示第一组预测模式M中包含的预测模式的总个数,m′表示第二组预测模式M′中包含的预测模式的总个数。
所述的步骤①-9的具体过程为:a1.将可嵌入水印的码字集合S中当前正在处理的可变长码字定义为当前可变长码字,并将当前可变长码字归入可嵌入水印的第一码字子集S1中;b1.遍历可嵌入水印的码字集合S中未处理的所有可变长码字,找出与当前可变长码字次匹配的可变长码字;c1.将找出的可变长码字归入可嵌入水印的第二码字子集S2中;d1.将可嵌入水印的码字集合S中下一个待处理的可变长码字作为当前可变长码字,并返回步骤a1继续执行,直至可嵌入水印的码字集合S中所有可变长码字处理完毕。
所述的步骤b1中与当前可变长码字次匹配的可变长码字的长度与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1。
所述的步骤①-11中将当前可变长码字替换为可嵌入水印的第一码字子集合S1中与之次匹配的可变长码字,该次匹配的可变长码字的长度与与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1;所述的步骤①-11中将当前可变长码字替换为可嵌入水印的第二码字子集合S2中与之次匹配的可变长码字,该次匹配的可变长码字的长度与与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1。
与现有技术相比,本发明的优点在于:
1)、本发明方法不需要对视频比特流进行预处理,即无需对视频比特流进行统计分析,有效降低了本发明方法的计算复杂度低,同时增强了实用性;水印嵌入过程仅在H.264/AVC压缩比特流中选取适当的可变长码字进行一些比较和替换操作,没有涉及大量的运算,也大大降低了计算复杂度,并提高了计算速度;此外,水印嵌入后不会对视频文件的大小造成影响,增强了隐写分析的难度。
2)、本发明方法在水印嵌入过程中生成认证码及在水印提取过程中重建认证码的过程,均是基于通过对帧内4×4预测模式的统计分析实现的,即通过对I宏块的各个4×4亮度块所使用的预测模式来生成认证码或重建认证码,与常见的通过DCT系数生成认证码的方法相比,本发明方法生成认证码及重建认证码的计算复杂度低、认证码的稳定性好,更能满足视频实时处理的要求。
3)、水印信息嵌入的位置和水印信息提取的位置提取和水印的嵌入都均由水印密钥控制,这样使得在水印密钥未知的情况下,非授权者无法获取嵌入的水印信息,从而增加了各种攻击的复杂度,提高了视频的安全性。
4)、本发明方法嵌入水印信息的过程中,利用运动矢量残差差异较小的两个可变长码字进行映射,使可变长码字映射后不会对视频质量造成明显的影响。
5)、水印的嵌入与提取的实现过程简单、快速;在水印信息提取端,水印信息的检测过程不需要原始载体视频,也无需对含水印信息的视频码流进行完全解码,只需对各4×4亮度块的预测模式解码即可,有效提高了实时性和实用性。
附图说明
图1为4×4亮度块具有的九种预测模式的示意图;
图2为B片和P片的语法结构;
图3为部分可变长码字分成的待嵌入水印的第一码字子集S1和待嵌入水印的第二码字子集S2之间的映射关系示意图;
图4为水印嵌入的基本流程框图;
图5为水印检测的基本流程框图;
图6为QCIF格式的标准测试序列Foreman的第一帧图像。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
H.264/AVC视频主要由I帧图像、B帧图像和P帧图像组成。H.264/AVC视频在编码过程中为了防止编码数据的错误扩散,将一幅幅编码的视频帧划分成一个或多个相互独立的片(Slice)。根据不同的视频帧,可以将视频帧分成不同的片,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亮度块具有DC预测模式和八种方向预测模式,九种不同的预测模式如图1所示,DC预测模式用数字2标识,八种方向预测模式包括垂直、水平、下左对角线、下右对角线、右垂直、下水平、左垂直和上水平方向预测模式,垂直方向预测模式用数字0标识,水平方向预测模式用数字1标识,下左对角线方向预测模式用数字3标识,下右对角线方向预测模式用数字4标识,右垂直方向预测模式用数字5标识,下水平方向预测模式用数字6标识,左垂直方向预测模式用数字7标识,上水平方向预测模式用数字8标识;B宏块的编码模式分为DIRECT、Inter_16×16、Inter_16×8、Inter_8×16以及P8×8五类,DIRECT编码模式用数字0标识,Inter_16×16编码模式用数字1标识,Inter_16×8编码模式用数字2标识,Inter_8×16编码模式用数字3标识,P8×8编码模式用数字8标识,当B宏块使用Inter_16×16编码模式时,将B宏块分为1个16×16运动子块,当B宏块使用Inter_16×8编码模式时,将B宏块分为2个16×8运动子块,当B宏块使用Inter_8×16编码模式时,将B宏块分为2个8×16运动子块,当B宏块使用P8×8编码模式时,将B宏块首先分为4个8×8子块,在每个8×8子块中,又可以采用Inter_8×8、Inter_8×4、Inter_4×8以及Inter_4×4四类编码模式,Inter_8×8编码模式用数字4标识,Inter_8×4编码模式用数字5标识,Inter_4×8编码模式用数字6标识,Inter_4×4编码模式用数字7标识,当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运动子块;P宏块的编码模式分为SKIP、Inter_16×16、Inter_16×8、Inter_8×16以及P8×8五类,SKIP编码模式用数字0标识,Inter_16×16编码模式用数字1标识,Inter_16×8编码模式用数字2标识,Inter_8×16编码模式用数字3标识,P8×8编码模式用数字8标识,当P宏块使用Inter_16×16编码模式时,将P宏块分为1个16×16运动子块,当P宏块使用Inter_16×8编码模式时,将P宏块分为2个16×8运动子块,当P宏块使用Inter_8×16编码模式时,将P宏块分为2个8×16运动子块,当P宏块使用P8×8编码模式时,将P宏块首先分为4个8×8子块,在每个8×8子块中,又可以采用Inter_8×8、Inter_8×4、Inter_4×8以及Inter_4×4四类编码模式,Inter_8×8编码模式用数字4标识,Inter_8×4编码模式用数字5标识,Inter_4×8编码模式用数字6标识,Inter_4×4编码模式用数字7标识,当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运动子块。
基于上述基础,本发明提出了一种面向H.264压缩比特流的视频水印方法,其主要分为水印嵌入和水印检测两部分,在水印嵌入端,首先由认证密钥key1随机选择I片中编码模式为Intra4×4的宏块中的某个4×4亮度块,并根据其预测模式生成认证码;然后通过调制B片和P片中某些运动子块的运动矢量残差生成的可变长码字将提取的认证码即待嵌入的水印比特位嵌入到B片和P片比特流中。运动矢量残差生成的可变长码字的调制是基于先前建立的映射规则进行的,整个水印嵌入过程不涉及复杂的计算,因此计算复杂度较低。此外,为了增强水印信息的安全性,利用水印密钥key2随机选择嵌入水印比特位的位置。在水印检测端,直接分析P片和B片中运动矢量残差生成的可变长码字,并解码I片中编码模式为Intra4×4的I宏块中各个4×4亮度块的预测模式,即可以实现水印检测,能够很好地满足视频实时处理的要求。
在描述本发明的具体实施过程之前,先说明在此具体实施例中采用的原始H.264压缩比特流。在此具体实施例中原始H.264压缩比特流是由QCIF格式的标准测试序列Foreman经过H.264压缩编码得到,该测试序列Foreman的分辨率为176×144,帧率为30帧/秒,图像组设定“IBPBPBPBPB”结构,该测试序列Foreman的第一帧图像如图6所示。除在此给出的测试序列外,也可采用QCIF格式的其他测试序列,也可采用其他格式如CIF格式的其他标准测试序列。
本发明的面向H.264压缩比特流的视频水印方法,其主要分为水印嵌入和水印检测两部分,流程框图分别如图4和图5所示。其具体包括以下步骤:
①-1、在H.264编码过程中,每个4×4亮度块有九种待选模式,即有九种预测模式,如图1所示,从图1中可以看出,它们都是由相邻的像素预测得到,只是预测的方向有所不同,方向差异越小,其预测差异也越小。因此,当H.264/AVC视频受到干扰或攻击(如滤波处理、噪声处理、重新编码等)时,各个4×4亮度块的预测模式极有可能发生改变。表1给出了在重新编码后,各4×4亮度块的预测模式发生转移的模式转移概率。表1所列数据是对10个标准测试序列,近十万个4×4亮度块进行统计获得。从表1中可以看出,重新编码后4×4亮度块的预测模式会发生改变,但预测方向相同或相近的预测模式之间,模式转移概率一般较大。
表1各预测模式的模式转移概率
为了便于生成所需的水印信息,本发明将4×4亮度块具有的DC预测模式、垂直方向预测模式、水平方向预测模式、下左对角线方向预测模式、下右对角线方向预测模式、右垂直方向预测模式、下水平方向预测模式、左垂直方向预测模式和上水平方向预测模式分为两组,分别定义为第一组预测模式和第二组预测模式。根据表1中各个预测模式的模式转移概率,可通过计算得到最佳的分组方式,其中,min( )为取最小值函数,{ }表示集合,M表示第一组预测模式,M′表示第二组预测模式,m表示第一组预测模式M中包含的预测模式的总个数,m′表示第二组预测模式M′中包含的预测模式的总个数。根据上述方式,得到的第一组预测模式包含有5种预测模式,分别为标识为0(垂直方向预测模式)、2(DC预测模式)、3(下左对角线方向预测模式)、5(右垂直方向预测模式)、7(左垂直方向预测模式)的预测模式,第二组预测模式包含有4种预测模式,分别为标识为1、4、6、8的预测模式,可看出,预测模式的转移主要发生在相近的预测模式之间,如标识为1(水平方向预测模式)、6(下水平方向预测模式)、8(上水平方向预测模式)的预测模式都在第二组预测模式中。
在此具体实施例中,H.264/AVC视频受到干扰或攻击后各4×4亮度块的预测模式发生转移的模式转移概率的计算过程为:记当前4×4亮度块的预测模式为标识为i的预测模式,记标识为i的预测模式转移为标识为j的预测模式的模式转移概率为Pij,其中,i,j∈[0,8],Sum(i→j)表示H.264/AVC视频受到干扰或攻击后从标识为i的预测模式转移为标识为j的预测模式的4×4亮度块的总个数,Sum(i)表示H.264/AVC视频受到干扰或攻击前预测模式采用标识为i的预测模式的4×4亮度块的总个数。
①-2、在水印嵌入端,随机选择一个[1,16]区间内的整数作为认证密钥,记为Key1,随机选择一个[1,16]区间内的整数作为水印密钥,记为Key2。
①-3、对于当前需嵌入水印的H.264/AVC视频压缩比特流以片为单位进行处理,即解析H.264/AVC视频的片级压缩比特流,定义当前正在处理的片为当前片。
①-4、判断当前片是否为I片,如果是,则继续执行下一步,否则,执行步骤①-7。
①-5、定义当前片中当前正在处理的I宏块为当前I宏块,判断当前I宏块使用的编码模式是否为Intra_4×4编码模式,如果是,则根据认证密钥Key1选择当前I宏块中与认证密钥Key1位置相对应的4×4亮度块,当该4×4亮度块所使用的预测模式属于第一组预测模式时,生成第k个认证码,记为Ck,Ck=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个认证码,记为Ck,Ck=1,其中,k的初始值为1,1≤k≤K,K表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理。
①-6、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤①-5,直至当前片中所有I宏块处理完毕,获得一个认证码序列,记为C,C={C1,C2,…,Ck,…,CK,1≤k≤K},将该认证码序列C作为待嵌入的水印序列,将认证码作为待嵌入的水印比特位,然后执行步骤①-13。
①-7、图2给出了B片和P片的语法结构,其中片头定义了片的类型。为了提高水印信息的安全性以及水印的不可见性,本发明由水印密钥Key2随机选择嵌入位置,并可以通过水印密钥Key2控制嵌入容量,当水印密钥Key2越小时嵌入容量越大,例如当水印密钥Key2取值为1时,即表示在满足条件的第1个运动子块中根据码字映射规则嵌入水印,当水印密钥Key2大于16时,即表示所有运动子块都不嵌入水印。
当当前片为B片时,根据水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可嵌入水印的运动子块,定义所有可嵌入水印的运动子块构成的集合为待嵌入水印的运动子块集合,记为V,V={V1 p,…,Vq p,…,VN p},其中,V1 p表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中的第p个运动子块,Vq p表示当前片中第q个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中的第p个运动子块,VN p表示当前片中第N个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中的第p个运动子块,N表示待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数,p=Key2,q的初始值为1。
当当前片为P片时,根据水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可嵌入水印的运动子块,定义所有可嵌入水印的运动子块构成的集合为待嵌入水印的运动子块集合,记为V,V={V1 p,…,Vq p,…,VN p},其中,V1 p表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中的第p个运动子块,Vq p表示当前片中第q个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中的第p个运动子块,VN p表示当前片中第N个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中的第p个运动子块,N表示待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数,p=Key2,q的初始值为1。
①-8、H.264/AVC主要采用CAVLC(基于上下文的自适应变长编码)和Exp-Golopmb(指数哥伦布变长编码)把语法元素编码成可变长度的二进制码字。CAVLC主要用于DCT残差系数,而Exp-Golopmb主要用于运动矢量残差(dmv)以及边信息,如编码模式、参考帧、量化参数等语法元素,与CAVLC码字相比,Exp-Golopmb码字对视频内容的依赖性较小,更适合嵌入水印信息,但是,由于边信息码字的改变对视频的影响较大,因此本发明选择运动矢量残差元素作为水印嵌入载体。在H.264编码过程中,不同的运动矢量残差会生成不同的Exp-Golopmb(指数哥伦布编码)码字。由于Exp-Golopmb码字本身的冗余度很小,直接修改其码字嵌入水印具有较大的困难,而且会导致整个码流的混乱。本发明采用码字映射的方式嵌入水印信息,即用code A替换code B。例如,假设待嵌入水印的码字为code A,如果当前待嵌入的比特位为1,则把code A映射为code B;否则不修改code A。为了保证水印嵌入后不影响原有的码流结构以及解码后的视频质量,所映射的码字必须满足以下两个条件:1)映射后码字长度不发生改变,即水印嵌入后不影响视频比特率;2)相互映射的码字之间,必须有相近的运动矢量残差值,即水印嵌入后不影响视频的质量。根据Exp-Golopmb编码原理可以发现:当运动矢量残差值为0时,没有合适的替换码字;当运动矢量残差的值为1和-1时,码长相同;当运动矢量残差的绝对值大于1时,该运动矢量残差对应的可变长码字都可以匹配到一个与之码字长度相同且两者运动矢量残差的绝对值之差小于等于1的可变长码字。根据分析,可以选择运动矢量残差的绝对值大于1的码字作为水印嵌入载体。
在此,本发明将所有绝对值大于1的运动矢量残差生成的可变长码字构成的集合定义为可嵌入水印的码字集合,记为S,S={vlc1′,…,vlcq1′,…,vlcN1′},其中,vlc1′、vlcq1′、vlcN1′分别表示可嵌入水印的码字集合S中的第1个可变长码字、第q1个可变长码字、第N1个可变长码字,N1表示可嵌入水印的码字集合S中包含的不同的可变长码字的总个数,q1的初始值为1。
表2给出了可嵌入水印的码字集合S中部分可变长码字和对应的运动矢量残差的对应关系。
表2可变长码字与运动矢量残差的对应关系
①-9、根据可嵌入水印的码字集合S中各个可变长码字对应的运动矢量残差的绝对值及各个可变长码字的长度,将可嵌入水印的码字集合S分为可嵌入水印的第一码字子集和可嵌入水印的第二码字子集,分别记为S1和S2。具体过程为:a1.将可嵌入水印的码字集合S中当前正在处理的可变长码字定义为当前可变长码字,并将当前可变长码字归入可嵌入水印的第一码字子集S1中;b1.遍历可嵌入水印的码字集合S中未处理的所有可变长码字,找出与当前可变长码字次匹配的可变长码字;c1.将找出的可变长码字归入可嵌入水印的第二码字子集S2中;d1.将可嵌入水印的码字集合S中下一个待处理的可变长码字作为当前可变长码字,并返回步骤a1继续执行,直至可嵌入水印的码字集合S中所有可变长码字处理完毕。
在此,与当前可变长码字次匹配的可变长码字的长度与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1。而与当前可变长码字完全匹配的可变长码字只可能是其自身。
图3给出了表2所列的部分可变长码字分成的可嵌入水印的第一码字子集S1和可嵌入水印的第二码字子集S2之间的映射关系。结合图3和表2可以看出,相互映射的两个可变长码字的运动矢量残差之差的绝对值均为1,表明相互映射的两个可变长码字的运动矢量残差的差异较小,即可变长码字映射后不会对视频质量造成明显的影响。
①-10、将待嵌入水印的运动子块集合V中的各个运动子块的运动矢量残差生成的可变长码字构成的集合定义为待嵌入水印的码字集合,记为SV,SV={vlc1,…,vlcq,…,vlcN},其中,vlc1、vlcq、vlcN分别表示待嵌入水印的运动子块集合V中的第1个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第q个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第N个运动子块的运动矢量残差生成的可变长码字,N表示待嵌入水印的码字集合SV中包含的不同的可变长码字的总个数,与待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数相同,q的初始值为1。
①-11、定义待嵌入水印的码字集合SV中当前待嵌入水印的可变长码字为当前可变长码字,然后判断待嵌入的水印序列C中所有待嵌入的水印比特位是否已嵌入完毕,如果是,则重复使用待嵌入的水印序列C,否则,根据待嵌入的水印序列C中当前待嵌入的水印比特位进行码字替换,如果待嵌入的水印比特位为0,则认为当前可变长码字应该为可嵌入水印的第一码字子集合S1中的可变长码字,如果当前可变长码字本身就是可嵌入水印的第一码字子集合S1中的可变长码字,则对当前可变长码字不需要做任何修改即可实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第一码字子集合S1中与之次匹配的可变长码字,即进行码字映射实现水印嵌入;如果待嵌入的水印比特位为1,则认为当前可变长码字应该为可嵌入水印的第二码字子集合S2中的可变长码字,如果当前可变长码字本身就是可嵌入水印的第二码字子集合S2中的可变长码字,则对当前可变长码字不需要做任何修改即可实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第二码字子集合S2中与之次匹配的可变长码字,即进行码字映射实现水印嵌入。
在此,将当前可变长码字替换为可嵌入水印的第一码字子集合S1中与之次匹配的可变长码字中,该次匹配的可变长码字的长度与与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1;将当前可变长码字替换为可嵌入水印的第二码字子集合S2中与之次匹配的可变长码字中,该次匹配的可变长码字的长度与与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1。
①-12、将待嵌入水印的码字集合SV中下一个待嵌入水印的可变长码字作为当前可变长码字,并返回执行步骤①-11,直到待嵌入水印的码字集合SV中的所有可变长码字处理完毕,完成水印嵌入,然后继续执行下一步。
从上述可知,水印嵌入过程仅在H.264/AVC压缩比特流中选取适当的可变长码字进行一些比较和替换操作,没有涉及大量的运算,具有计算复杂度低和速度快的特点。
①-13、将下一个待处理的片作为当前片,并返回执行步骤①-4,直至H.264/AVC视频压缩比特流中所有片处理完毕,得到嵌入有水印的H.264/AVC视频压缩比特流。
①-14、水印嵌入端将认证密钥Key1、水印密钥Key2、第一组预测模式M、第二组预测模式M′、可嵌入水印的第一码字集合S1和可嵌入水印的第二码字集合S2发送给水印检测端。
②-1、在水印检测端,进行水印的提取和认证,其基本流程如图4所示。对于当前嵌入有水印的H.264/AVC视频压缩比特流以片为单位进行处理,定义当前正在处理的片为当前片。
②-2、判断当前片是否为I片,如果是,则继续执行下一步,否则,执行步骤②-5。
②-3、定义当前片中当前正在处理的I宏块为当前I宏块,判断当前I宏块使用的编码模式是否为Intra_4×4编码模式,如果是,则首先解码当前I宏块中各个4×4亮度块的预测模式,然后根据接收到的认证密钥Key1选择当前I宏块中位置相对应的4×4亮度块,当该4×4亮度块所使用的预测模式属于第一组预测模式时,生成第k个重建认证码,记为Ck′,Ck′=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个重建认证码,记为Ck′,Ck′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理。
②-4、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤②-3,直至当前片中所有I宏块处理完毕,获得一个重建认证码序列,记为C′,C′={C1′,C2′,…,Ck′,…,CK′′,1≤k≤K′},然后执行步骤②-10。
②-5、当当前片为B片时,根据接收到的水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可提取水印的运动子块,定义所有可提取水印的运动子块构成的集合为待提取水印的运动子块集合,记为V′,V′={V1 p′,…,Vq′p′,…,VN′p′},其中,V1 p′表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中的第p′个运动子块,Vq′p′表示当前片中第q′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中的第p′个运动子块,VN′p′表示当前片中第N′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块中的第p′个运动子块,N′表示待提取水印的运动子块集合V′中包含的可提取水印的运动子块的的总个数,p′=Key2,q的初始值为1。
当当前片为P片时,根据接收到的水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可提取水印的运动子块,定义所有可提取水印的运动子块构成的集合为待提取水印的运动子块集合,记为V′,V′={V1 p′,…,Vq′ p′,…,VN′ p′},其中,V1 p′表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中的第p′个运动子块,Vq′ p′表示当前片中第q′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中的第p′个运动子块,VN′ p′表示当前片中第N′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的P宏块中的第p′个运动子块,N′表示待提取水印的运动子块集合V′中包含的可提取水印的运动子块的的总个数,p′=Key2,q的初始值为1。
②-6、将待提取水印的运动子块集合V′中的各个运动子块的运动矢量残差生成的可变长码字构成的集合定义为待提取水印的码字集合,记为S′,S′={vlc1′,…,vlcq′′,…,vlcN′′},其中,vlc1′、vlcq′′、vlcN′′分别表示待提取水印的运动子块集合V′中的第1个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第q′个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第N′个运动子块的运动矢量残差生成的可变长码字,N′表示待提取水印的码字集合S′中包含的不同的可变长码字的总个数。
②-7、根据待提取水印的码字集合S′中各个可变长码字提取水印信息,定义待提取水印的码字集合S′中当前待提取的可变长码字为当前可变长码字,如果当前可变长码字属于可嵌入水印的第一码字集合S1,则提取水印比特位0;如果当前可变长码字属于可嵌入水印的第二码字集合S2,则提取水印比特位1。
②-8、将待提取水印的码字集合S′中下一个待提取水印的可变长码字作为当前可变长码字,并返回执行步骤②-7,直到待提取水印的码字集合S′中的所有可变长码字处理完毕,得到从当前片中提取出的水印序列,并记为W′,W′={W1′,W2′,...Wk′,...WN′,1≤k≤N′}。
②-9、判断重建认证码序列的长度是否小于当前片中提取出的水印序列的长度,如果是,则重复排列重建认证码序列,获取一个长度与当前片中提取出的水印序列的长度相同的重组重建认证码序列,比较重组重建认证码序列和当前片中提取出的水印序列,统计两者不相同的比特位个数,记为S′,然后根据重组重建认证码序列和当前片中提取出的水印序列计算检测出错率,记为BER,其中,S表示当前片中提取出的水印序列包含的水印比特位的总个数,再判断BER≤τ是否成立,如果成立,则表示当前片中提取出的水印与水印嵌入端嵌入的水印相同,认为当前片级视频流完整,否则,表示当前片中提取出的水印与水印嵌入端嵌入的水印不相同,认为当前片级视频流不完整,完成完整性认证。其中,τ为设定的阈值,其可取值为0.001,以确保视频流完整性认证的精度。
②-10、将下一个待处理的片作为当前片,并返回执行步骤②-2,直至H.264/AVC视频压缩比特流中所有片处理完毕。
从上述可知,水印提取过程简单、快速,且不必完整的视频解码,也不需要提供原始媒体信息。
Claims (4)
1.一种面向H.264压缩比特流的视频水印方法,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亮度块具有DC预测模式和八种方向预测模式,所述的DC预测模式用数字2标识,所述的八种方向预测模式包括垂直、水平、下左对角线、下右对角线、右垂直、下水平、左垂直和上水平方向预测模式,所述的垂直方向预测模式用数字0标识,所述的水平方向预测模式用数字1标识,所述的下左对角线方向预测模式用数字3标识,所述的下右对角线方向预测模式用数字4标识,所述的右垂直方向预测模式用数字5标识,所述的下水平方向预测模式用数字6标识,所述的左垂直方向预测模式用数字7标识,所述的上水平方向预测模式用数字8标识,所述的B宏块的编码模式分为DIRECT、Inter_16×16、Inter_16×8、Inter_8×16及P8×8五类,所述的DIRECT编码模式用数字0标识,所述的Inter_16×16编码模式用数字1标识,所述的Inter_16×8编码模式用数字2标识,所述的Inter_8×16编码模式用数字3标识,所述的P8×8编码模式用数字8标识,当所述的B宏块使用Inter_16×16编码模式时,将所述的B宏块分为1个16×16运动子块,当所述的B宏块使用Inter_16×8编码模式时,将所述的B宏块分为2个16×8运动子块,当所述的B宏块使用Inter_8×16编码模式时,将所述的B宏块分为2个8×16运动子块,当所述的B宏块使用P8×8编码模式时,将所述的B宏块首先分为4个8×8子块,所述的8×8子块具有Inter_8×8、Inter_8×4、Inter_4×8、Inter_4×4四类编码模式,所述的Inter_8×8编码模式用数字4标识,所述的Inter_8×4编码模式用数字5标识,所述的Inter_4×8编码模式用数字6标识,所述的Inter_4×4编码模式用数字7标识,当所述的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运动子块,所述的P宏块的编码模式分为SKIP、Inter_16×16、Inter_16×8及Inter_8×16、P8×8五类,所述的SKIP编码模式用数字0标识,所述的Inter_16×16编码模式用数字1标识,所述的Inter_16×8编码模式用数字2标识,所述的Inter_8×16编码模式用数字3标识,所述的P8×8编码模式用数字8标识,当所述的P宏块使用Inter_16×16编码模式时,将所述的P宏块分为1个16×16运动子块,当所述的P宏块使用Inter_16×8编码模式时,将所述的P宏块分为2个16×8运动子块,当所述的P宏块使用Inter_8×16编码模式时,将所述的P宏块分为2个8×16运动子块,当所述的P宏块使用P8×8编码模式时,将所述的P宏块首先分为4个8×8子块,所述的8×8子块具有Inter_8×8、Inter_8×4、Inter_4×8、Inter_4×4四类编码模式,所述的Inter_8×8编码模式用数字4标识,所述的Inter_8×4编码模式用数字5标识,所述的Inter_4×8编码模式用数字6标识,所述的Inter_4×4编码模式用数字7标识,当所述的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视频受到干扰或攻击后各4×4亮度块的预测模式发生转移的模式转移概率,将4×4亮度块具有的DC预测模式、垂直方向预测模式、水平方向预测模式、下左对角线方向预测模式、下右对角线方向预测模式、右垂直方向预测模式、下水平方向预测模式、左垂直方向预测模式和上水平方向预测模式分为两组,分别定义为第一组预测模式和第二组预测模式;
所述的步骤①-1中H.264/AVC视频受到干扰或攻击后各4×4亮度块的预测模式发生转移的模式转移概率的计算过程为:记当前4×4亮度块的预测模式为标识为i的预测模式,记标识为i的预测模式转移为标识为j的预测模式的模式转移概率为Pij,其中,i,j∈[0,8],Sum(i→j)表示H.264/AVC视频受到干扰或攻击后从标识为i的预测模式转移为标识为j的预测模式的4×4亮度块的总个数,Sum(i)表示H.264/AVC视频受到干扰或攻击前预测模式采用标识为i的预测模式的4×4亮度块的总个数;
所述的步骤①-1中将4×4亮度块具有的预测模式分为第一组预测模式和第二组预测模式是通过计算得到的,其中,min()为取最小值函数,{}表示集合,M表示第一组预测模式,M′表示第二组预测模式,m表示第一组预测模式M中包含的预测模式的总个数,m′表示第二组预测模式M′中包含的预测模式的总个数;
①-2、在水印嵌入端,随机选择一个[1,16]区间内的整数作为认证密钥,记为Key1,随机选择一个[1,16]区间内的整数作为水印密钥,记为Key2;
①-3、对于当前需嵌入水印的H.264/AVC视频压缩比特流以片为单位进行处理,定义当前正在处理的片为当前片;
①-4、判断当前片是否为I片,如果是,则继续执行下一步,否则,执行步骤①-7;
①-5、定义当前片中当前正在处理的I宏块为当前I宏块,判断当前I宏块使用的编码模式是否为Intra_4×4编码模式,如果是,则根据认证密钥Key1选择当前I宏块中与认证密钥Key1位置相对应的4×4亮度块,当该4×4亮度块所使用的预测模式属于第一组预测模式时,生成第k个认证码,记为Ck,Ck=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个认证码,记为Ck,Ck=1,其中,k的初始值为1,1≤k≤K,K表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理;
①-6、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤①-5,直至当前片中所有I宏块处理完毕,获得一个认证码序列,记为C,C={C1,C2,…,Ck,…,CK,1≤k≤K},将该认证码序列C作为待嵌入的水印序列,将认证码作为待嵌入的水印比特位,然后执行步骤①-13;
①-7、当当前片为B片或P片时,根据水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可嵌入水印的运动子块,定义所有可嵌入水印的运动子块构成的集合为待嵌入水印的运动子块集合,记为V,V={V1 p,…,Vq p,…,VN p},其中,V1 p表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,Vq p表示当前片中第q个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,VN p表示当前片中第N个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,N表示待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数,p=Key2,q的初始值为1;
①-8、定义当前片中所有编码模式为Inter_l6×16、Inter_l6×8、Inter_8×16或P8×8的B宏块或P宏块中所有绝对值大于1的运动矢量残差生成的可变长码字构成的集合为可嵌入水印的码字集合,记为S,S={vlc1′,…,vlcq1′,…,vlcN1′},其中,vlc1′、vlcq1′、vlcN1′分别表示可嵌入水印的码字集合S中的第1个可变长码字、第q1个可变长码字、第N1个可变长码字,N1表示可嵌入水印的码字集合S中包含的不同的可变长码字的总个数,q1的初始值为1;
①-9、根据可嵌入水印的码字集合S中各个可变长码字对应的运动矢量残差的绝对值及各个可变长码字的长度,将可嵌入水印的码字集合S分为可嵌入水印的第一码字子集和可嵌入水印的第二码字子集,分别记为S1和S2;
①-10、将待嵌入水印的运动子块集合V中的各个运动子块的运动矢量残差生成的可变长码字构成的集合定义为待嵌入水印的码字集合,记为SV,SV={vlc1,…,vlcq,…,vlcN},其中,vlc1、vlcq、vlcN分别表示待嵌入水印的运动子块集合V中的第1个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第q个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第N个运动子块的运动矢量残差生成的可变长码字,N表示待嵌入水印的码字集合SV中包含的不同的可变长码字的总个数,与待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数相同,q的初始值为1;
①-11、定义待嵌入水印的码字集合SV中当前待嵌入水印的可变长码字为当前可变长码字,然后判断待嵌入的水印序列C中所有待嵌入的水印比特位是否已嵌入完毕,如果是,则重复使用待嵌入的水印序列C,否则,根据待嵌入的水印序列C中当前待嵌入的水印比特位进行码字替换,如果待嵌入的水印比特位为0,则认为当前可变长码字为可嵌入水印的第一码字子集合S1中的可变长码字,如果当前可变长码字本身为可嵌入水印的第一码字子集合S1中的可变长码字,则对当前可变长码字不进行任何修改,实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第一码字子集合S1中与之次匹配的可变长码字,实现水印嵌入;如果待嵌入的水印比特位为1,则认为当前可变长码字为可嵌入水印的第二码字子集合S2中的可变长码字,如果当前可变长码字本身为可嵌入水印的第二码字子集合S2中的可变长码字,则对当前可变长码字不进行任何修改,实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第二码字子集合S2中与之次匹配的可变长码字,实现水印嵌入;
①-12、将待嵌入水印的码字集合SV中下一个待嵌入水印的可变长码字作为当前可变长码字,并返回执行步骤①-11,直到待嵌入水印的码字集合SV中的所有可变长码字处理完毕,完成水印的嵌入,然后执行下一步;
①-13、将下一个待处理的片作为当前片,并返回执行步骤①-4,直至H.264/AVC视频压缩比特流中所有片处理完毕,得到嵌入有水印的H.264/AVC视频压缩比特流;
①-14、水印嵌入端将认证密钥Key1、水印密钥Key2、第一组预测模式M、第二组预测模式M′、可嵌入水印的第一码字集合S1和可嵌入水印的第二码字集合S2发送给水印检测端;
②-1、在水印检测端,对于当前嵌入有水印的H.264/AVC视频压缩比特流以片为单位进行处理,定义当前正在处理的片为当前片;
②-2、判断当前片是否为I片,如果是,则继续执行,否则,执行步骤②-5;
②-3、定义当前片中当前正在处理的I宏块为当前I宏块,判断当前I宏块使用的编码模式是否为Intra_4×4编码模式,如果是,则首先解码当前I宏块中各个4×4亮度块的预测模式,然后根据接收到的认证密钥Key1选择当前I宏块中位置相对应的4×4亮度块,当该4×4亮度块所使用的预测模式属于第一组预测模式时,生成第k个重建认证码,记为Ck′,Ck′=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个重建认证码,记为Ck′,Ck′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理;
②-4、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤②-3,直至当前片中所有I宏块处理完毕,获得一个重建认证码序列,记为C′,C′={C1′,C2′,…,Ck′,…,CK′′,1≤k≤K′},然后执行步骤②-10;
②-5、当当前片为B片或P片时,根据接收到的水印密钥Key2选择当前片中所有编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中运动矢量残差的绝对值大于1,且与水印密钥Key2位置相对应的运动子块作为可提取水印的运动子块,定义所有可提取水印的运动子块构成的集合为待提取水印的运动子块集合,记为V′,V′={V1 p′,…,Vq′ p′,…,VN′ p′},其中,V1 p′表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,Vq′ p′表示当前片中第q′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,VN′ p′表示当前片中第N′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,N′表示待提取水印的运动子块集合V′中包含的可提取水印的运动子块的总个数,p′=Key2,q′的初始值为1;
②-6、将待提取水印的运动子块集合V′中的各个运动子块的运动矢量残差生成的可变长码字构成的集合定义为待提取水印的码字集合,记为S′,S′={vlc1′,…,vlcq′′,…,vlcN′′},其中,vlc1′、vlcq′′、vlcN′′分别表示待提取水印的运动子块集合V′中的第1个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第q′个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第N′个运动子块的运动矢量残差生成的可变长码字,N′表示待提取水印的码字集合S′中包含的不同的可变长码字的总个数;
②-7、根据待提取水印的码字集合S′中各个可变长码字提取水印信息,定义待提取水印的码字集合S′中当前待提取的可变长码字为当前可变长码字,如果当前可变长码字属于可嵌入水印的第一码字集合S1,则提取水印比特位0;如果当前可变长码字属于可嵌入水印的第二码字集合S2,则提取水印比特位1;
②-8、将待提取水印的码字集合S′中下一个待提取水印的可变长码字作为当前可变长码字,并返回执行步骤②-7,直到待提取水印的码字集合S′中的所有可变长码字处理完毕,得到从当前片中提取出的水印序列,并记为W′,W′={W1′,W2′,...Wk′,...WN′,1≤k≤N′};
②-9、判断重建认证码序列的长度是否小于当前片中提取出的水印序列的长度,如果是,则重复排列重建认证码序列,获取一个长度与当前片中提取出的水印序列的长度相同的重组重建认证码序列,比较重组重建认证码序列和当前片中提取出的水印序列,统计两者不相同的比特位个数,记为S′,然后根据重组重建认证码序列和当前片中提取出的水印序列计算检测出错率,记为BER,其中,S表示当前片中提取出的水印序列包含的水印比特位的总个数,再判断BER≤τ是否成立,如果成立,则表示当前片中提取出的水印与水印嵌入端嵌入的水印相同,否则,表示当前片中提取出的水印与水印嵌入端嵌入的水印不相同,其中,τ为设定的阈值;
②-10、将下一个待处理的片作为当前片,并返回执行步骤②-2,直至H.264/AVC视频压缩比特流中所有片处理完毕。
2.根据权利要求1所述的一种面向H.264压缩比特流的视频水印方法,其特征在于所述的步骤①-9的具体过程为:a1.将可嵌入水印的码字集合S中当前正在处理的可变长码字定义为当前可变长码字,并将当前可变长码字归入可嵌入水印的第一码字子集S1中;b1.遍历可嵌入水印的码字集合S中未处理的所有可变长码字,找出与当前可变长码字次匹配的可变长码字;c1.将找出的可变长码字归入可嵌入水印的第二码字子集S2中;d1.将可嵌入水印的码字集合S中下一个待处理的可变长码字作为当前可变长码字,并返回步骤a1继续执行,直至可嵌入水印的码字集合S中所有可变长码字处理完毕。
3.根据权利要求2所述的一种面向H.264压缩比特流的视频水印方法,其特征在于所述的步骤b1中与当前可变长码字次匹配的可变长码字的长度与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1。
4.根据权利要求2所述的一种面向H.264压缩比特流的视频水印方法,其特征在于所述的步骤①-11中将当前可变长码字替换为可嵌入水印的第一码字子集合S1中与之次匹配的可变长码字,该次匹配的可变长码字的长度与与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1;所述的步骤①-11中将当前可变长码字替换为可嵌入水印的第二码字子集合S2中与之次匹配的可变长码字,该次匹配的可变长码字的长度与与当前可变长码字的长度相同,且该次匹配的可变长码字对应的运动矢量残差与当前可变长码字对应的运动矢量残差之差的绝对值为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010177007 CN101841700B (zh) | 2010-05-18 | 2010-05-18 | 一种面向h.264压缩比特流的视频水印方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010177007 CN101841700B (zh) | 2010-05-18 | 2010-05-18 | 一种面向h.264压缩比特流的视频水印方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101841700A CN101841700A (zh) | 2010-09-22 |
CN101841700B true CN101841700B (zh) | 2011-11-16 |
Family
ID=42744773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010177007 Expired - Fee Related CN101841700B (zh) | 2010-05-18 | 2010-05-18 | 一种面向h.264压缩比特流的视频水印方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101841700B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101791242B1 (ko) * | 2010-04-16 | 2017-10-30 | 에스케이텔레콤 주식회사 | 영상 부호화/복호화 장치 및 방법 |
CN102572609B (zh) * | 2010-12-08 | 2014-10-08 | 中国科学院声学研究所 | 一种嵌入式系统中的视频完整性认证方法 |
FR2972588A1 (fr) | 2011-03-07 | 2012-09-14 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
CN102186080A (zh) * | 2011-05-11 | 2011-09-14 | 北京航空航天大学 | 一种基于预测模式选择的h.264数字水印嵌入方法 |
CN102307320B (zh) * | 2011-08-11 | 2013-07-10 | 江苏亿通高科技股份有限公司 | 一种适用于流媒体环境的盗版追踪水印方法 |
CN102364949A (zh) * | 2011-11-10 | 2012-02-29 | 中山大学深圳研究院 | 一种基于h.264_avc视频流完整性认证脆弱水印的方法 |
CN102663668B (zh) * | 2012-04-06 | 2014-04-16 | 王涛 | 一种基于连续矢量图形的数字水印系统及实现方法 |
CN103152578B (zh) * | 2013-03-25 | 2016-05-18 | 中国传媒大学 | 基于混合编解码的h.264视频水印嵌入及提取方法 |
CN105141962B (zh) * | 2015-09-01 | 2018-04-17 | 宁波工程学院 | 一种面向h.264/avc视频码流的大容量数据隐藏方法 |
CN112637605B (zh) * | 2020-11-11 | 2022-01-11 | 中国科学院信息工程研究所 | 基于分析cavlc码字和非零dct系数个数的视频隐写分析方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100355033B1 (ko) * | 2000-12-30 | 2002-10-19 | 주식회사 실트로닉 테크놀로지 | 선형예측 분석을 이용한 워터마크 삽입/추출 장치 및 그방법 |
US7231061B2 (en) * | 2002-01-22 | 2007-06-12 | Digimarc Corporation | Adaptive prediction filtering for digital watermarking |
CN1241389C (zh) * | 2003-09-18 | 2006-02-08 | 上海交通大学 | 多媒体产品中面向对象的自同步水印检测方法 |
CN101165699A (zh) * | 2006-10-20 | 2008-04-23 | 中国科学院微电子研究所 | 一种基于数字水印的数字产品内容保护系统及方法 |
-
2010
- 2010-05-18 CN CN 201010177007 patent/CN101841700B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101841700A (zh) | 2010-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101841700B (zh) | 一种面向h.264压缩比特流的视频水印方法 | |
CN103414892B (zh) | 一种大容量抗压缩的图像信息隐藏方法 | |
CN102223540B (zh) | 一种面向h.264/avc视频的信息隐藏方法 | |
CN107493405A (zh) | 基于编码压缩的加密图像可逆信息隐藏方法 | |
CN106162195B (zh) | 一种基于单深度帧内模式的3d‑hevc深度视频信息隐藏方法 | |
CN107820098A (zh) | 对视频编码的方法和设备以及对视频解码的方法和设备 | |
CN106063274A (zh) | 多层结构化编码单元中数据隐藏的方法和装置 | |
CN101621692A (zh) | 一种基于预测模式的h.264/avc视频信息隐藏方法 | |
CN104010193B (zh) | 基于宏块划分方式扰动的视频隐写方法 | |
CN101243611A (zh) | 变换块的高效编码和解码 | |
CN103338376A (zh) | 一种基于运动矢量的视频隐写方法 | |
CN102685500B (zh) | 基于信息变长分组结构的h.264大容量信息隐藏方法 | |
CN108965887B (zh) | 一种基于块间去耦合的视频信息隐藏方法和装置 | |
CN108769700A (zh) | 减小h.264帧间漂移失真的鲁棒性视频隐写方法 | |
CN109819260A (zh) | 基于多嵌入域融合的视频隐写方法和装置 | |
CN102364949A (zh) | 一种基于h.264_avc视频流完整性认证脆弱水印的方法 | |
CN106101714A (zh) | 一种与压缩编码过程紧耦合的h.264视频信息隐藏方法 | |
CN104853215A (zh) | 基于运动向量局部最优性保持的视频隐写方法 | |
CN110677624B (zh) | 基于深度学习的面向监控视频的前景和背景并行压缩方法 | |
CN104902281B (zh) | 一种基于汉明码+1的hevc视频的信息隐藏方法 | |
CN101409830B (zh) | Dct系数块相似性判断、图像加解密方法及装置 | |
CN1717033B (zh) | 视频压缩的设备和方法 | |
Lee et al. | Information hiding based on block match coding for vector quantization-compressed images | |
CN108683921A (zh) | 一种基于零量化dct系数组的视频可逆信息隐藏方法 | |
CN105046633B (zh) | 一种图像无损变换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111116 Termination date: 20140518 |