首页> 中国专利> 一种基于H.264/AVC视频信息内容认证的脆弱性水印方法

一种基于H.264/AVC视频信息内容认证的脆弱性水印方法

摘要

本发明公开了一种基于H.264/AVC视频信息内容认证的脆弱性水印方法,其主要分为水印嵌入和水印检测两部分,在水印嵌入端,首先根据宏块的编码模式生成认证码;然后结合宏块的编码模式调制P片中P宏块的各运动子块的最佳的1/4像素运动估计搜索点,将提取的认证码嵌入到视频帧中,在待搜索点的调制过程中引入率失真代价函数,减少了水印嵌入后对视频码率和视频质量的影响;在水印检测端,本发明方法可以实现水印的快速检测,即只需解码宏块的编码模式以及运动矢量即可,能够很好地满足视频实时处理的要求。

著录项

  • 公开/公告号CN101888548A

    专利类型发明专利

  • 公开/公告日2010-11-17

    原文格式PDF

  • 申请/专利权人 宁波大学;

    申请/专利号CN201010204568.7

  • 发明设计人 王让定;朱洪留;徐达文;

    申请日2010-06-17

  • 分类号

  • 代理机构宁波奥圣专利代理事务所(普通合伙);

  • 代理人程晓明

  • 地址 315211 浙江省宁波市江北区风华路818号

  • 入库时间 2023-12-18 01:05:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-08-12

    未缴年费专利权终止 IPC(主分类):H04N7/26 授权公告日:20120201 终止日期:20140617 申请日:20100617

    专利权的终止

  • 2012-02-01

    授权

    授权

  • 2011-03-02

    实质审查的生效 IPC(主分类):H04N7/26 申请日:20100617

    实质审查的生效

  • 2010-11-17

    公开

    公开

说明书

技术领域

本发明涉及一种多媒体信号处理技术,尤其是涉及一种基于H.264/AVC视频信息内容认证的脆弱性水印方法。

背景技术

随着多媒体网络技术的飞速发展,数字多媒体信息,特别是视频信息的交流已经达到前所未有的程度。然而,视频信息内容在传输过程中极易遭受各种无意或有意的篡改攻击,这使得人们对视频信息内容的完整性和真实性产生怀疑。如果篡改涉及国家安全、法庭举证等重要内容时,则可能会造成严重的后果。因此,如何在网络环境中对视频信息内容的真实性、完整性实施有效的保护已经成为近年来多媒体信息安全领域研究的热点。脆弱性水印作为一种保密通信技术,是解决这一问题最有效的方法之一。它将数据、图像等水印信息以人所不可感知的方式嵌入到视频信息内容中,通过对该水印信息的提取可以实现视频信息内容的完整性认证,甚至可以指出篡改的位置和攻击类型等。

目前,绝大多数用于视频信息内容认证的水印方法是在未压缩的视频载体中进行的,这类视频水印方法不能有效地抵抗压缩攻击,即未压缩的视频载体嵌入水印后再经过压缩编码后将无法正确地提取水印,不能对视频信息内容进行有效地认证;另一方面,由于未压缩的视频载体往往数据量巨大,这样对其的存储和传输造成了极大的不便,因此目前数字视频载体大都是以压缩编码的格式出现,对压缩的视频载体如果仍使用这类应用于未压缩的视频载体的水印方法,势必需要先将压缩的视频载体从压缩域还原到未压缩域,然后才能进行水印的嵌入和提取,这将使这类视频水印方法的计算复杂度和计算量显著增加,且也难以满足实时性方面的要求。因此,结合视频编码标准研究适用于视频信息内容认证的水印方法是视频水印的必然发展趋势。

目前,相关研究人员已经提出了一些基于H.264/AVC视频信息内容认证的水印方法。它们首先根据I帧的低频DCT系数或者根据不同DCT块之间的能量大小关系提取认证码,然后再将提取的认证码以水印的形式嵌入到高频DCT系数或者运动矢量中。但由于H.264的高效压缩性能,使得预测残差数据经DCT变换和量化后,非零系数稀少,且系数幅值偏小,降低了认证码的稳定性;另一方面,其提取认证码的过程具有较大的计算复杂度,不能较好地满足视频实时处理的需求;此外,将水印嵌入高频DCT系数或者运动矢量中时,对高频DCT系数和运动矢量的修改对H.264压缩比特流的影响较大。

发明内容

本发明所要解决的技术问题是提供一种能够与H.264/AVC视频压缩编码标准相兼容,具有较高的水印容量,并能够有效保证水印的安全性和不可感知性,且能够有效地对H.264/AVC视频信息内容进行认证的脆弱性水印方法。

本发明解决上述技术问题所采用的技术方案为:一种基于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和Intra_8×8三类,所述的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五类,当所述的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四类编码模式,当所述的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视频的P片中的I宏块和P宏块使用的所有编码模式构成的集合定义为模式空间,记为MS,根据H.264/AVC视频受到干扰或攻击后P片中的I宏块和P宏块使用的编码模式发生转移的模式转移概率,将模式空间MS中的所有编码模式均分为两组,分别定义为第一组编码模式和第二组编码模式;

①-2、对于当前需嵌入水印的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片;

①-3、判断当前片是否为I片,如果是,则继续执行,否则,执行步骤①-5;

①-4、根据当前片中的各个I宏块的编码模式,生成待嵌入的水印序列,记为W,然后执行步骤①-13;

待嵌入的水印序列W生成的具体过程为:a1.定义当前片中正在处理的第k个I宏块为当前I宏块;a2.判断当前I宏块的编码模式是否为Intra_4×4,如果是,则生成第k个认证码,记为Ck,Ck=0;否则,生成第k个认证码,记为Ck,Ck=1,其中,k的初始值为1,1≤k≤K,K表示当前片中包含的宏块的个数;a3.令k′=k+1,k=k′,然后返回执行步骤a1对当前片中的下一个I宏块进行处理,直至当前片中的所有I宏块处理完毕,获得当前片的认证码序列,记为C,C={C1,C2,…,Ck,…,CK,1≤k≤K};a4.将该当前片的认证码序列C作为待嵌入的水印序列W,W={W1,W2,…,Wk,…,WK,1≤k≤K},W1表示待嵌入的水印序列W中的第1个待嵌入的水印比特位,Wk表示待嵌入的水印序列W中的第k个待嵌入的水印比特位,WK表示待嵌入的水印序列W中的第K个待嵌入的水印比特位,Wk=Ck

①-5、判断当前片是否为B片,如果是,则对当前片不进行处理,并执行步骤①-13,否则,继续执行;

①-6、定义当前片中正在处理的第k个宏块为当前宏块;

①-7、判断当前宏块的编码模式属于第一组编码模式还是第二组编码模式,如果属于第一组编码模式,则生成第k个认证码,记为Ck,Ck=0,如果属于第二组编码模式,则生成第k个认证码,记为Ck,Ck=1,其中,k的初始值为1,1≤k≤K,K表示当前片中包含的宏块的总个数;

①-8、判断当前宏块的编码模式是否为Intra_4×4或Intra_16×16或Intra_8×8或SKIP,如果是,则继续执行,否则,执行步骤①-10;

①-9、定义待嵌入的水印序列W中的第k个待嵌入的水印比特位Wk为当前待嵌入的水印比特位,判断当前待嵌入的水印比特位Wk是否为0,如果是,则对当前宏块的编码模式不进行处理,否则,对当前宏块的编码模式进行调制,然后执行步骤①-12;

调制当前宏块的编码模式的具体过程为:判断当前宏块的编码模式是否属于第一组编码模式,如果是,则将当前宏块的编码模式调制修改为Inter_16×16、Inter_16×8和P8×8中率失真代价最小的编码模式,否则,将当前宏块的编码模式调制修改为Inter_8×16编码模式;

①-10、分别将当前宏块中的各个运动子块的9个1/4像素运动估计搜索点划分为两组,定义当前宏块中正在处理的运动子块为当前运动子块,将当前运动子块的9个1/4像素运动估计搜索点划分为两组,分别定义为第一组搜索点和第二组搜索点,其中,第一组搜索点中的各个1/4像素运动估计搜索点生成的运动矢量的水平分量和垂直分量具有相同的奇偶性,第二组搜索点中的各个1/4像素运动估计搜索点生成的运动矢量的水平分量和垂直分量具有不相同的奇偶性;

①-11、定义待嵌入的水印序列W中的第k个待嵌入的水印比特位Wk为当前待嵌入的水印比特位,判断当前待嵌入的水印比特位Wk是否为0,如果是,则分别将当前宏块中的各个运动子块的最佳的1/4像素运动估计搜索点调制修改为第一组搜索点中率失真代价最小的1/4像素运动估计搜索点,否则,分别将当前宏块中的各个运动子块的最佳的1/4像素运动估计搜索点调制修改为第二组搜索点中率失真代价最小的1/4像素运动估计搜索点,其中,运动子块的最佳的1/4像素运动估计搜索点为运动子块的9个1/4像素运动估计搜索点中率失真代价最小的1/4像素运动估计搜索点;

①-12、令k′=k+1,k=k′,然后返回执行步骤①-6对当前片中的下一个宏块进行处理,直至当前片中的所有宏块处理完毕,实现当前片中水印的嵌入,同时获得当前片的认证码序列,记为C,C={C1,C2,…,Ck,…,CK,1≤k≤K},将该当前片的认证码序列C作为待嵌入的水印序列W,W={W1,W2,…,Wk,…,WK,1≤k≤K},W1表示待嵌入的水印序列W中的第1个待嵌入的水印比特位,Wk表示待嵌入的水印序列W中的第k个待嵌入的水印比特位,WK表示待嵌入的水印序列W中的第K个待嵌入的水印比特位,Wk=Ck

①-13、将当前需嵌入水印的H.264/AVC视频中下一个待处理的片作为当前片,然后返回执行步骤①-3,直至H.264/AVC视频中的所有片处理完毕;

①-14、水印嵌入端将第一组编码模式、第二组编码模式发送到水印检测端;

②-1、在水印检测端,对于当前嵌入有水印的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片;

②-2、判断当前片是否为I片,如果是,则继续执行,否则,执行步骤②-4;

②-3、根据当前片中的各个I宏块的编码模式,提取当前片的认证码序列,记为C′,然后执行步骤②-12;

当前片的认证码序列C′的提取过程为:b1.定义当前片中正在处理的第k个I宏块为当前I宏块;b2.判断当前I宏块的编码模式是否为Intra_4×4,如果是,则提取第k个认证码,记为Ck′,Ck′=0;否则,提取第k个认证码,记为Ck′,Ck′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中包含的宏块的总个数;b3.令k′=k+1,k=k′,然后返回执行步骤b1对当前片中的下一个I宏块进行处理,直至当前片中包含的所有I宏块处理完毕,获得当前片的认证码序列C′,C={C1,C2,…,Ck,…,CK′,1≤k≤K′};

②-4、判断当前片是否为B片,如果是,则对当前片不进行处理,并执行步骤②-12,否则,继续执行;

②-5、定义当前片中正在处理的第k个宏块为当前宏块;

②-6、判断当前宏块的编码模式属于第一组编码模式还是第二组编码模式,如果属于第一组编码模式,则提取第k个认证码,记为Ck′,Ck′=0,如果属于第二组编码模式,则提取第k个认证码,记为Ck′,Ck′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中包含的宏块的总个数;

②-7、判断当前宏块的编码模式是否为Intra_4×4或Intra_16×16或Intra_8×8或SKIP,如果是,则提取第k个水印比特位,记为Wk′,Wk′=0,否则,根据当前宏块的各个运动子块的运动矢量提取第k个水印比特位,记为Wk′,具体过程为:c1.定义当前宏块中正在处理的第i个运动子块为当前运动子块;c2.判断当前运动子块的运动矢量的水平分量和垂直分量是否具有相同的奇偶性,如果是,则提取当前运动子块的水印信息,记为wi,wi=0,否则,提取当前运动子块的水印信息,记为wi,wi=1;c3.令i′=i+1,i=i′,并返回执行步骤c1对当前宏块中的下一个运动子块进行处理,直至当前宏块中的所有运动子块处理完毕,获得运动子块对应的水印序列,记为w,w={w1,w2,…,wi,…wN},其中,1≤i≤N,N表示当前宏块中包含的运动子块的总个数;c4.判断运动子块对应的水印序列w中1的个数是否大于等于0的个数,如果是,则提取第k个水印比特位Wk′,Wk′=1,否则,提取第k个水印比特位Wk′,Wk′=0;

②-8、令k′=k+1,k=k′,然后返回执行步骤②-5对当前片中的下一个宏块进行处理,直至当前片中的所有宏块处理完毕,提取得到当前片的水印序列,记为W′,W′={W1′,…,Wk′,…,WK′′,1≤k≤K′},同时提取得到当前片的认证码序列,记为C′,C′={C1′,…,Ck′,…,CK′′,1≤k≤K′};

②-9、定义当前片的水印序列中的第k个水印比特位Wk′为当前水印比特位,定义前一片的认证码序列中的第k个认证码Ck′为当前认证码,比较当前水印比特位Wk′与当前认证码Ck′是否相同,如果Wk′=Ck′,则将当前片中的第k个宏块认定为真实块,然后执行步骤②-10,否则,将当前片中的第k个宏块认定为不确定块,然后执行步骤②-10;

②-10、当第k个宏块为真实块时,且第k个宏块的所有相邻块均为不确定块或者第k个宏块的所有相邻块中存在至少一个相邻块为错误块时,将第k个宏块重新认定为错误块;当第k个宏块为不确定块时,且第k个宏块的所有相邻块均为不确定块或者第k个宏块的所有相邻块中存在至少一个相邻块为错误块时,将第k个宏块重新认定为错误块;

②-11、令k′=k+1,k=k′,然后返回执行步骤②-9比较当前片的水印序列中的下一个水印比特位与前一片的认证码序列中的下一认证码,直至当前片的水印序列中的所有水印比特位与前一片的认证码序列中的所有认证码比较完毕;

②-12、将当前嵌入有水印的H.264/AVC视频中下一个待处理的片作为当前片,然后返回执行步骤②-2,直至H.264/AVC视频中的所有片处理完毕;

②-13、判断H.264/AVC视频中是否存在错误块,如果存在,则认为H.264/AVC视频不完整,否则,认为H.264/AVC视频完整。

所述的步骤①-1中H.264/AVC视频受到干扰或攻击后P片中的I宏块和P宏块使用的编码模式发生转移的模式转移概率的计算过程为:记P片中当前宏块使用的编码模式为i,记当前宏块使用的编码模式i转移为编码模式j的模式转移概率为Pij,其中,i,j∈MS,Sum(i→j)表示H.264/AVC视频受到干扰或攻击后P片中从编码模式i转移为编码模式j的宏块的总个数,Sum(i)表示H.264/AVC视频受到干扰或攻击前P片中使用编码模式i的宏块的总个数。

所述的步骤①-1中将模式空间MS中的所有编码模式分为第一组编码模式和第二组编码模式是通过计算得到的,其中,max()为取最大值函数,{}表示集合,M表示第一组编码模式,M′表示第二组编码模式,Pi表示P片中的宏块使用编码模式i的概率,

与现有技术相比,本发明的优点在于:

1)、本发明方法在水印嵌入过程中生成认证码及在水印提取过程中提取认证码的过程,均是基于通过对宏块的编码模式的统计分析实现的,即通过对宏块所使用的编码模式来生成认证码或提取认证码,与常见的通过DCT系数生成认证码的方法相比,本发明方法生成认证码及提取认证码的计算复杂度低、认证码的稳定性好,更能满足视频实时处理的要求。

2)、本发明结合P片中P宏块的编码模式,对P宏块的各个运动子块的最佳的1/4像素运动估计搜索点进行调制,使得认证码的生成和水印的嵌入满足一一对应关系,保证了认证的准确性。

3)、由于P帧图像采用了基于树型构造的运动补偿方法划分宏块,支持从16×16到4×4尺寸大小范围的运动子块,具有很高的压缩比。在低比特视频流中,P帧图像的数目远大于I帧图像的数目,与直接提取认证码,并嵌入到I帧图像的DCT系数相比,本发明方法具有更大的嵌入容量。

4)、水印检测过程简单、快速,水印信息的检测过程不需要原始载体视频,也无需对含水印信息的视频码流进行完全解码,只需解码宏块的编码模式和运动矢量即可,有效提高了实时性和实用性。

附图说明

图1为本发明方法的水印嵌入的流程框图;

图2为1/4像素搜索点的搜索示意图;

图3为QCIF格式的标准测试序列“Carphone”的第一帧图像。

具体实施方式

以下结合附图实施例对本发明作进一步详细描述。

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和Intra_8×8三类。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五类,当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四类编码模式,当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/AVC视频信息内容认证的脆弱性水印方法,其主要分为水印嵌入和水印检测两部分,在水印嵌入端,首先根据宏块的编码模式生成认证码;然后结合宏块的编码模式调制P片中P宏块的各运动子块的最佳的1/4像素运动估计搜索点,将提取的认证码嵌入到视频帧中,在最佳的1/4像素运动估计搜索点的调制过程中引入率失真代价函数,减少了水印嵌入后对视频码率和视频质量的影响;在水印检测端,本发明方法可以实现水印的快速检测,即只需解码宏块的编码模式以及运动矢量即可,能够很好地满足视频实时处理的要求。

在描述本发明方法的具体实施过程之前,先说明在此具体实施例中采用的原始载体视频。在此具体实施例中原始载体视频采用QCIF格式的标准测试序列“Carphone”,该测试序列“Carphone”的分辨率为176×144,帧率为30帧/秒,图像组设定“IBPBPBPBPB”结构,该测试序列“Carphone”的第一帧图像如图3所示。除在此该出的测试序列外,也可采用QCIF格式的其他测试序列,也可采用其他格式如CIF格式的其他标准测试序列。

本发明的基于H.264/AVC视频信息内容认证的脆弱性水印方法,其水印嵌入的流程框图如图1所示。本发明方法具体包括以下步骤:

①-1、在H.264编码过程中,一个P片包含若干个I宏块和若干个P宏块,因此P片不但可以采用帧内预测而且还可以采用帧间预测技术,即编码模式可以是Intra_4×4、Intra_16×16、Intra_8×8、SKIP、Inter_16×16、Inter_16×8、Inter_8×16以及P8×8八类。在P片中引入多种编码模式,可极大地提高P帧图像的编码效率,然而,当H.264/AVC视频受到干扰或攻击(如滤波处理、噪声处理、重新编码等)后,P片中的多种编码模式极有可能发生改变。表1给出了在重新编码后,P片中各个宏块使用的编码模式发生转移的模式转移概率(精确到0.0001)。表1所列数据是对10个标准测试序列,近十万个宏块进行统计获得。从表1中可以看出:1)对于任意一个编码模式,自身转移为自身的模式转移概率均不为1,即在受到重新编码攻击时,宏块的模式会发生转移;2)对于任意一个编码模式的模式转移概率,当转移后的编码模式和转移前的编码模式的分割方式和预测方式越相近时,模式转移概率的值通常也越大。

表1各编码模式之间的模式转移概率

为了便于生成认证码,本发明方法在水印嵌入端,将H.264/AVC视频的P片中的I宏块和P宏块使用的所有编码模式构成的集合定义为模式空间,记为MS,根据H.264/AVC视频受到干扰或攻击后P片中的I宏块和P宏块使用的编码模式发生转移的模式转移概率,将模式空间MS中的所有编码模式均分为两组,分别定义为第一组编码模式和第二组编码模式。为了保证认证码在受到攻击时具有较好的稳健性,最佳分组应满足模式转移尽可能发生在同组之间。根据表1中各个编码模式的模式转移概率对其进行分组,可由下式得到最佳分组:其中,max()为取最大值函数,{}表示集合,M表示第一组编码模式,M′表示第二组编码模式,Pij表示当前宏块使用的编码模式i转移为编码模式j的模式转移概率,Pi表示P片中的宏块使用编码模式i的概率,本发明方法通过对10标准测试序列,近10万个宏块的统计数据计算Pi,其结果如表2所示。

表2各编码模式出现的概率

根据上述分组方式得到的第一组编码模式M包含SKIP、Inter_16×16、Inter_16×8、P8×8,第二组编码模式M′包含Inter_8×16、Intra_4×4、Intra_16×16、Intra_8×8。

在此具体实施例中,H.264/AVC视频受到干扰或攻击后P片中的I宏块和P宏块使用的编码模式发生转移的模式转移概率的计算过程为:记P片中当前宏块使用的编码模式为i,记当前宏块使用的编码模式i转移为编码模式j的模式转移概率为Pij,其中,i,j∈MS,Sum(i→j)表示H.264/AVC视频受到干扰或攻击后P片中从编码模式i转移为编码模式j的宏块的总个数,Sum(i)表示H.264/AVC视频受到干扰或攻击前P片中使用编码模式i的宏块的总个数。

①-2、对于当前需嵌入水印的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片。

①-3、判断当前片是否为I片,如果是,则继续执行,否则,执行步骤①-5。

①-4、根据当前片中的各个I宏块的编码模式,生成待嵌入的水印序列,记为W,然后执行步骤①-13。

待嵌入的水印序列W生成的具体过程为:a1.定义当前片中正在处理的第k个I宏块为当前I宏块;a2.判断当前I宏块的编码模式是否为Intra_4×4,如果是,则生成第k个认证码,记为Ck,Ck=0;否则,生成第k个认证码,记为Ck,Ck=1,其中,k的初始值为1,1≤k≤K,K表示当前片中包含的宏块的总个数;a3.令k′=k+1,k=k′,然后返回执行步骤a1对当前片中的下一个I宏块进行处理,直至当前片中的所有I宏块处理完毕,获得当前片的认证码序列,记为C,C={C1,C2,…,Ck,…,CK,1≤k≤K};a4.将该当前片的认证码序列C作为待嵌入的水印序列W,W={W1,W2,…,Wk,…,WK,1≤k≤K},W1表示待嵌入的水印序列W中的第1个待嵌入的水印比特位,Wk表示待嵌入的水印序列W中的第k个待嵌入的水印比特位,WK表示待嵌入的水印序列W中的第K个待嵌入的水印比特位,Wk=Ck

①-5、判断当前片是否为B片,如果是,则对当前片不进行处理,并执行步骤①-13,否则,继续执行。

①-6、定义当前片中正在处理的第k个宏块为当前宏块。

①-7、判断当前宏块的编码模式属于第一组编码模式还是第二组编码模式,如果属于第一组编码模式,则生成第k个认证码,记为Ck,Ck=0,如果属于第二组编码模式,则生成第k个认证码,记为Ck,Ck=1,其中,k的初始值为1,1≤k≤K,K表示当前片中包含的宏块的总个数。

①-8、判断当前宏块的编码模式是否为Intra_4×4或Intra_16×16或Intra_8×8或SKIP,如果是,则继续执行,否则,执行步骤①-10。

①-9、定义待嵌入的水印序列W中的第k个待嵌入的水印比特位Wk为当前待嵌入的水印比特位,判断当前待嵌入的水印比特位Wk是否为0,如果是,则对当前宏块的编码模式不进行处理,否则,对当前宏块的编码模式进行调制,然后执行步骤①-12。

调制当前宏块的编码模式的具体过程为:判断当前宏块的编码模式是否属于第一组编码模式,如果是,则将当前宏块的编码模式调制修改为Inter_16×16、Inter_16×8和P8×8中率失真代价最小的编码模式,否则,将当前宏块的编码模式调制修改为Inter_8×16编码模式。

①-10、在H.264运动估计过程中不但采用了基于树型构造的运动补偿方法划分P宏块,支持从16×16到4×4尺寸大小范围的运动子块,即每个P宏块可以有1~16个运动子块,例如,如果当前P宏块采用的编码模式为Inter_16×16,则当前P宏块可分为1个16×16尺寸大小的运动子块,而如果当前P宏块采用的编码模式为Inter_16×8,则当前P宏块可分为2个16×8尺寸大小的运动子块,而且采用了更高像素精度的运动估计(1/4像素精度运动估计)。在H.264运动估计过程中,首先搜索整像素位置,获得最佳的整像素运动估计搜索点,然后搜索围绕在最佳的整像素运动估计搜索点周围的9个亚像素位置,获得最佳的亚像素运动估计搜索点,最后搜索围绕在最佳的亚像素运动估计搜索点周围的9个1/4像素位置,从而获得最佳的1/4像素运动估计搜索点,并生成相应的运动矢量。图2为1/4像素运动估计搜索点的搜索图,图2中数字0~8分别表示9个1/4像素运动估计搜索点。

上述整像素运动估计搜索点就是指实际的编码像素点,最佳的整像素运动估计搜索点是指满足率失真代价最小的整像素运动估计搜索点,亚像素运动估计搜索点实际上并不存在于参考图像中,而是利用邻近的已编码的整像素运动估计搜索点进行内插而得到的,最佳的亚像素运动估计搜索点是满足率失真代价最小的亚像素运动估计搜索点,1/4像素运动估计搜索点实际上并不存在于参考图像中,而是利用邻近的已内插的亚像素运动估计搜索点进行内插而得到的,最佳的1/4像素运动估计搜索点是满足率失真代价最小的1/4像素运动估计搜索点。

本发明方法结合当前宏块的编码模式,调制当前宏块中各个运动子块的9个1/4像素运动估计搜索点进行水印嵌入,首先分别将当前宏块中的各个运动子块的9个1/4像素运动估计搜索点分别划分为两组,定义当前宏块中正在处理的运动子块为当前运动子块,将当前运动子块的9个1/4像素运动估计搜索点划分为两组,分别定义为第一组搜索点和第二组搜索点,其中,第一组搜索点中的各个1/4像素运动估计搜索点生成的运动矢量的水平分量和垂直分量具有相同的奇偶性,第二组搜索点中的各个1/4像素运动估计搜索点生成的运动矢量的水平分量和垂直分量具有不相同的奇偶性,图2中用数字0~8表示的9个1/4像素运动估计搜索点分组后,得到的第一组搜索点包含待搜索点0、1、3、6、8,第二组搜索点包含待搜索点2、4、5、7。

①-11、定义待嵌入的水印序列W中的第k个待嵌入的水印比特位Wk为当前待嵌入的水印比特位,判断当前待嵌入的水印比特位Wk是否为0,如果是,则分别将当前宏块中的各个运动子块的最佳的1/4像素运动估计搜索点调制修改为第一组搜索点中率失真代价最小的1/4像素运动估计搜索点,否则,分别将当前宏块中的各个运动子块的最佳的1/4像素运动估计搜索点调制修改为第二组搜索点中率失真代价最小的1/4像素运动估计搜索点。

①-12、令k′=k+1,k=k′,然后返回执行步骤①-6对当前片中的下一个宏块进行处理,直至当前片中的所有宏块处理完毕,实现当前片中水印的嵌入,同时获得当前片的认证码序列,记为C,C={C1,C2,…,Ck,…,CK,1≤k≤K},将该当前片的认证码序列C作为待嵌入的水印序列W,W={W1,W2,…,Wk,…,WK,1≤k≤K},W1表示待嵌入的水印序列W中的第1个待嵌入的水印比特位,Wk表示待嵌入的水印序列W中的第k个待嵌入的水印比特位,WK表示待嵌入的水印序列W中的第K个待嵌入的水印比特位,Wk=Ck

①-13、将当前需嵌入水印的H.264/AVC视频中下一个待处理的片作为当前片,然后返回执行步骤①-3,直至H.264/AVC视频中的所有片处理完毕。

①-14、水印嵌入端将第一组编码模式、第二组编码模式发送到水印检测端。

②-1、在水印检测端,对于当前嵌入有水印的H.264/AVC视频以片为单位进行处理,定义当前正在处理的片为当前片。

②-2、判断当前片是否为I片,如果是,则继续执行,否则,执行步骤②-4。

②-3、根据当前片中的各个I宏块的编码模式,提取当前片的认证码序列,记为C′,然后执行步骤②-12。

当前片的认证码序列C′的提取过程为:b1.定义当前片中正在处理的第k个I宏块为当前I宏块;b2.判断当前I宏块的编码模式是否为Intra_4×4,如果是,则提取第k个认证码,记为Ck′,Ck′=0;否则,提取第k个认证码,记为Ck′,Ck′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中包含的宏块的总个数;b3.令k′=k+1,k=k′,然后返回执行步骤b1对当前片中的下一个I宏块进行处理,直至当前片中包含的所有I宏块处理完毕,获得当前片的认证码序列C′,C={C1,C2,…,Ck,…,CK′,1≤k≤K′}。

②-4、判断当前片是否为B片,如果是,则对当前片不进行处理,并执行步骤②-12,否则,继续执行。

②-5、定义当前片中正在处理的第k个宏块为当前宏块。

②-6、判断当前宏块的编码模式属于第一组编码模式还是第二组编码模式,如果属于第一组编码模式,则提取第k个认证码,记为Ck′,Ck′=0,如果属于第二组编码模式,则提取第k个认证码,记为Ck′,Ck′=1,其中,k的初始值为1,1≤k≤K′,K′表示当前片中包含的宏块的总个数。

②-7、判断当前宏块的编码模式是否为Intra_4×4或Intra_16×16或Intra_8×8或SKIP,如果是,则提取第k个水印比特位,记为Wk′,Wk′=0,否则,根据当前宏块的各个运动子块的运动矢量提取第k个水印比特位,记为Wk′,具体过程为:c1.定义当前宏块中正在处理的第i个运动子块为当前运动子块;c2.判断当前运动子块的运动矢量的水平分量和垂直分量是否具有相同的奇偶性,如果是,则提取当前运动子块的水印信息,记为wi,wi=0,否则,提取当前运动子块的水印信息,记为wi,wi=1;c3.令i′=i+1,i=i′,并返回执行步骤c1对当前宏块中的下一个运动子块进行处理,直至当前宏块中的所有运动子块处理完毕,获得运动子块对应的水印序列,记为w,w={w1,w2,…,wi,…wN},其中,1≤i≤N,N表示当前宏块中包含的运动子块的总个数;c4.判断运动子块对应的水印序列w中1的个数是否大于等于0的个数,如果是,则提取第k个水印比特位Wk′,Wk′=1,否则,提取第k个水印比特位Wk′,Wk′=0。

②-8、令k′=k+1,k=k′,然后返回执行步骤②-5对当前片中的下一个宏块进行处理,直至当前片中的所有宏块处理完毕,提取得到当前片的水印序列,记为W′,W′={W1′,…,Wk′,…,WK′′,1≤k≤K′},同时提取得到当前片的认证码序列,记为C′,C′={C1′,…,Ck′,…,CK′′,1≤k≤K′}。

②-9、定义当前片的水印序列中的第k个水印比特位Wk′为当前水印比特位,定义前一片的认证码序列中的第k个认证码Ck′为当前认证码,比较当前水印比特位Wk′与当前认证码Ck′是否相同,如果Wk′=Ck′,则将当前片中的第k个宏块认定为真实块,然后执行步骤②-10,否则,将当前片中的第k个宏块认定为不确定块,然后执行步骤②-10。

②-10、当第k个宏块为真实块时,且第k个宏块的所有相邻块均为不确定块或者第k个宏块的所有相邻块中存在至少一个相邻块为错误块时,将第k个宏块重新认定为错误块;当第k个宏块为不确定块时,且第k个宏块的所有相邻块均为不确定块或者第k个宏块的所有相邻块中存在至少一个相邻块为错误块时,将第k个宏块重新认定为错误块。

②-11、令k′=k+1,k=k′,然后返回执行步骤②-9比较当前片的水印序列中的下一个水印比特位与前一片的认证码序列中的下一认证码,直至当前片的水印序列中的所有水印比特位与前一片的认证码序列中的所有认证码比较完毕。

②-12、将当前嵌入有水印的H.264/AVC视频中下一个待处理的片作为当前片,然后返回执行步骤②-2,直至H.264/AVC视频中的所有片处理完毕。

②-13、判断H.264/AVC视频中是否存在错误块,如果存在,则认为H.264/AVC视频不完整,否则,认为H.264/AVC视频完整。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号