发明名称 一种面向H.264压缩比特流的视频水印方法
摘要 本发明公开了一种面向H.264压缩比特流的视频水印方法,首先根据I片中4×4亮度块的预测模式生成认证码,然后通过调制B片和P片中某些运动子块的可变长码字将其嵌入到片级码流中,这种调制是基于可变长码字和待嵌入的比特位之间的映射规则进行的,映射后的可变长码字与原可变长码字具有很好的相似性,由于本方法不需要对视频比特流进行预处理,且水印嵌入过程仅在H.264/AVC压缩比特流中选取适当的可变长码字进行一些比较和替换操作,没有涉及大量的运算,使得本方法计算复杂度低、安全性好、实用性强,并能够较好地满足视频实时处理的要求。
申请公布号 CN101841700B 申请公布日期 2011.11.16
申请号 CN201010177007.2 申请日期 2010.05.18
申请人 宁波大学 发明人 王让定;朱洪留;徐达文
分类号 H04N7/24(2006.01)I;H04N7/50(2006.01)I 主分类号 H04N7/24(2006.01)I
代理机构 宁波奥圣专利代理事务所(普通合伙) 33226 代理人 程晓明
主权项 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的预测模式的模式转移概率为P<sub>ij</sub>,<img file="FSB00000571664200021.GIF" wi="372" he="137" />其中,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亮度块具有的预测模式分为第一组预测模式和第二组预测模式是通过计算<img file="FSB00000571664200022.GIF" wi="811" he="187" />得到的,其中,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个认证码,记为C<sub>k</sub>,C<sub>k</sub>=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个认证码,记为C<sub>k</sub>,C<sub>k</sub>=1,其中,k的初始值为1,1≤k≤K,K表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理;①-6、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤①-5,直至当前片中所有I宏块处理完毕,获得一个认证码序列,记为C,C={C<sub>1</sub>,C<sub>2</sub>,…,C<sub>k</sub>,…,C<sub>K</sub>,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={V<sub>1</sub><sup>p</sup>,…,V<sub>q</sub><sup>p</sup>,…,V<sub>N</sub><sup>p</sup>},其中,V<sub>1</sub><sup>p</sup>表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,V<sub>q</sub><sup>p</sup>表示当前片中第q个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p个运动子块,V<sub>N</sub><sup>p</sup>表示当前片中第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={vlc<sub>1</sub>′,…,vlc<sub>q1</sub>′,…,vlc<sub>N1</sub>′},其中,vlc<sub>1</sub>′、vlc<sub>q1</sub>′、vlc<sub>N1</sub>′分别表示可嵌入水印的码字集合S中的第1个可变长码字、第q1个可变长码字、第N1个可变长码字,N1表示可嵌入水印的码字集合S中包含的不同的可变长码字的总个数,q1的初始值为1;①-9、根据可嵌入水印的码字集合S中各个可变长码字对应的运动矢量残差的绝对值及各个可变长码字的长度,将可嵌入水印的码字集合S分为可嵌入水印的第一码字子集和可嵌入水印的第二码字子集,分别记为S<sub>1</sub>和S<sub>2</sub>;①-10、将待嵌入水印的运动子块集合V中的各个运动子块的运动矢量残差生成的可变长码字构成的集合定义为待嵌入水印的码字集合,记为SV,SV={vlc<sub>1</sub>,…,vlc<sub>q</sub>,…,vlc<sub>N</sub>},其中,vlc<sub>1</sub>、vlc<sub>q</sub>、vlc<sub>N</sub>分别表示待嵌入水印的运动子块集合V中的第1个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第q个运动子块的运动矢量残差生成的可变长码字、待嵌入水印的运动子块集合V中的第N个运动子块的运动矢量残差生成的可变长码字,N表示待嵌入水印的码字集合SV中包含的不同的可变长码字的总个数,与待嵌入水印的运动子块集合V中包含的可嵌入水印的运动子块的总个数相同,q的初始值为1;①-11、定义待嵌入水印的码字集合SV中当前待嵌入水印的可变长码字为当前可变长码字,然后判断待嵌入的水印序列C中所有待嵌入的水印比特位是否已嵌入完毕,如果是,则重复使用待嵌入的水印序列C,否则,根据待嵌入的水印序列C中当前待嵌入的水印比特位进行码字替换,如果待嵌入的水印比特位为0,则认为当前可变长码字为可嵌入水印的第一码字子集合S<sub>1</sub>中的可变长码字,如果当前可变长码字本身为可嵌入水印的第一码字子集合S<sub>1</sub>中的可变长码字,则对当前可变长码字不进行任何修改,实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第一码字子集合S<sub>1</sub>中与之次匹配的可变长码字,实现水印嵌入;如果待嵌入的水印比特位为1,则认为当前可变长码字为可嵌入水印的第二码字子集合S<sub>2</sub>中的可变长码字,如果当前可变长码字本身为可嵌入水印的第二码字子集合S<sub>2</sub>中的可变长码字,则对当前可变长码字不进行任何修改,实现水印嵌入,否则将当前可变长码字替换为可嵌入水印的第二码字子集合S<sub>2</sub>中与之次匹配的可变长码字,实现水印嵌入;①-12、将待嵌入水印的码字集合SV中下一个待嵌入水印的可变长码字作为当前可变长码字,并返回执行步骤①-11,直到待嵌入水印的码字集合SV中的所有可变长码字处理完毕,完成水印的嵌入,然后执行下一步;①-13、将下一个待处理的片作为当前片,并返回执行步骤①-4,直至H.264/AVC视频压缩比特流中所有片处理完毕,得到嵌入有水印的H.264/AVC视频压缩比特流;①-14、水印嵌入端将认证密钥Key1、水印密钥Key2、第一组预测模式M、第二组预测模式M′、可嵌入水印的第一码字集合S<sub>1</sub>和可嵌入水印的第二码字集合S<sub>2</sub>发送给水印检测端;②-1、在水印检测端,对于当前嵌入有水印的H.264/AVC视频压缩比特流以片为单位进行处理,定义当前正在处理的片为当前片;②-2、判断当前片是否为I片,如果是,则继续执行,否则,执行步骤②-5;②-3、定义当前片中当前正在处理的I宏块为当前I宏块,判断当前I宏块使用的编码模式是否为Intra_4×4编码模式,如果是,则首先解码当前I宏块中各个4×4亮度块的预测模式,然后根据接收到的认证密钥Key1选择当前I宏块中位置相对应的4×4亮度块,当该4×4亮度块所使用的预测模式属于第一组预测模式时,生成第k个重建认证码,记为C<sub>k</sub>′,C<sub>k</sub>′=0,当该4×4亮度块所使用的预测模式属于第二组预测模式时,生成第k个重建认证码,记为C<sub>k</sub>′,C<sub>k</sub>′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中使用Intra_4×4编码模式的所有I宏块的个数;否则,对当前I宏块不进行处理;②-4、将当前片中下一个待处理的I宏块作为当前I宏块,返回执行步骤②-3,直至当前片中所有I宏块处理完毕,获得一个重建认证码序列,记为C′,C′={C<sub>1</sub>′,C<sub>2</sub>′,…,C<sub>k</sub>′,…,C<sub>K</sub>′′,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′={V<sub>1</sub><sup>p</sup>′,…,V<sub>q′</sub><sup>p</sup>′,…,V<sub>N′</sub><sup>p</sup>′},其中,V<sub>1</sub><sup>p</sup>′表示当前片中第1个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,V<sub>q′</sub><sup>p</sup>′表示当前片中第q′个编码模式为Inter_16×16、Inter_16×8、Inter_8×16或P8×8的B宏块或P宏块中的第p′个运动子块,V<sub>N′</sub><sup>p</sup>′表示当前片中第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′={vlc<sub>1</sub>′,…,vlc<sub>q′</sub>′,…,vlc<sub>N′</sub>′},其中,vlc<sub>1</sub>′、vlc<sub>q′</sub>′、vlc<sub>N′</sub>′分别表示待提取水印的运动子块集合V′中的第1个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第q′个运动子块的运动矢量残差生成的可变长码字、待提取水印的运动子块集合V′中的第N′个运动子块的运动矢量残差生成的可变长码字,N′表示待提取水印的码字集合S′中包含的不同的可变长码字的总个数;②-7、根据待提取水印的码字集合S′中各个可变长码字提取水印信息,定义待提取水印的码字集合S′中当前待提取的可变长码字为当前可变长码字,如果当前可变长码字属于可嵌入水印的第一码字集合S<sub>1</sub>,则提取水印比特位0;如果当前可变长码字属于可嵌入水印的第二码字集合S<sub>2</sub>,则提取水印比特位1;②-8、将待提取水印的码字集合S′中下一个待提取水印的可变长码字作为当前可变长码字,并返回执行步骤②-7,直到待提取水印的码字集合S′中的所有可变长码字处理完毕,得到从当前片中提取出的水印序列,并记为W′,W′={W<sub>1</sub>′,W<sub>2</sub>′,...W<sub>k</sub>′,...W<sub>N</sub>′,1≤k≤N′};②-9、判断重建认证码序列的长度是否小于当前片中提取出的水印序列的长度,如果是,则重复排列重建认证码序列,获取一个长度与当前片中提取出的水印序列的长度相同的重组重建认证码序列,比较重组重建认证码序列和当前片中提取出的水印序列,统计两者不相同的比特位个数,记为S′,然后根据重组重建认证码序列和当前片中提取出的水印序列计算检测出错率,记为BER,<img file="FSB00000571664200071.GIF" wi="213" he="117" />其中,S表示当前片中提取出的水印序列包含的水印比特位的总个数,再判断BER≤τ是否成立,如果成立,则表示当前片中提取出的水印与水印嵌入端嵌入的水印相同,否则,表示当前片中提取出的水印与水印嵌入端嵌入的水印不相同,其中,τ为设定的阈值;②-10、将下一个待处理的片作为当前片,并返回执行步骤②-2,直至H.264/AVC视频压缩比特流中所有片处理完毕。
地址 315211 浙江省宁波市江北区风华路818号