本发明涉及信息安全
技术领域:
,更具体地说,涉及一种基于MPEG视频压缩域的完整性水印嵌入与检测方法。
背景技术:
:随着功能强大的多媒体编辑软件的出现,对音频和视频等多媒体信息的修改变得简单容易。篡改和伪造的多媒体信息一旦被大量地用于正式媒体、科学发现、保险和法庭证物等,将带来严重后果。篡改检测主要是为了解决数字多媒体数据的完整性和原始性鉴定问题。针对数字图像的篡改检测方法已经比较成熟,而针对数字视频的篡改检测方法相对较少。对于现有的MPEG视频防伪与篡改检测方法,存在着针对视频的Hash水印及篡改检测方法,能对帧间篡改进行有效的检测,但是数字签名增加了数据传输量。而完整性水印是利用帧在整个视频中的序号作为完整性水印信息,其是一种用于检测视频是否被篡改的水印信息。然而,传统的完整性水印信息的信息容量小,使得篡改检测方法准确性和可靠性低。因此,如何提高完整性水印信息的信息容量,使得篡改检测方法准确性和可靠性高,是当今视频篡改检测的研究热点。技术实现要素:本发明的目的在于克服现有技术中的缺点与不足,提供一种基于MPEG视频压缩域的完整性水印嵌入与检测方法,该方法使得水印检测方法具有容错性,以提高水印的鲁棒性;同时该方法也提高了完整性水印的信息容量,提高了篡改检测的可靠性和准确性。为了达到上述目的,本发明通过下述技术方案予以实现:一种基于MPEG视频压缩域的完整性水印嵌入与检测方法,其特征在于:包括三个步骤:第一步,首先,生成组序水印信息,并将组序水印信息转换成二进制表示形式;然后,生成组内帧序水印信息,并将组内帧序水印信息转换成二进制表示形式,将二进制表示形式的组序水印信息和二进制表示形式的组内帧序水印信息作为完整性水印信息;第二步,首先,设定将完整性水印信息嵌入到MPEG视频时画面帧嵌入点的数量和各画面帧嵌入点的位置;然后,将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cr色度块,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cb色度块;最后,将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第一个亮度块中,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第四个亮度块中,以实现完整性水印信息的嵌入,得到带完整性水印信息的MPEG视频;第三步,对第二步得到的带完整性水印信息的MPEG视频进行完整性水印信息的提取,并对提取的完整性水印信息进行检测,判断完整性水印信息的MPEG视频中各画面帧嵌入点的完整性水印信息是否被篡改,实现判断预先在MPEG视频中嵌入完整性水印信息的MPEG视频的完整性。在上述方案中,本发明的完整性水印采用了创新型的双信息,即将帧所在的画面组序号与帧在画面组内的序号共同产生完整性水印信息,相对于以往的完整性水印(利用帧在整个视频中的序号作为完整性水印信息),本发明所采用的方法提高了完整性水印的信息容量,提高了篡改检测的可靠性。第一步中,所述生产组序水印信息,并将组序水印信息转换成二进制表示形式是指:包括以下步骤:步骤S0101:对MPEG视频画面组序号进行hash值计算,则第i个画面组内所有画面帧的组序水印信息为:其中,Gi为第i个画面组的顺序号;步骤S0102:将步骤S0101第i个画面组内所有画面帧的组序水印信息的十进制表示形式转换为二进制表示形式,当二进制表示形式的组序水印信息码元数不足9位时,在前面用“0”补足。MPEG视频的画面组数量非常多,故组序水印信息不能直接采画面用组序号,需要对画面组序号进行hash值计算。第一步中,所述生成组内帧序水印信息,并将组内帧序水印信息转换成二进制表示形式是指:包括以下步骤:步骤S0103:除了画面组内第一帧外,其它帧的组内帧序水印信息采用自身的序号;第一帧的组内帧序水印信息为该画面组内最后一个帧的序号;步骤S0104:将步骤S0103的组内帧序水印信息的十进制表示形式转换为二进制表示形式,当二进制表示形式的组内帧序水印信息码元数不足9位时,在前面用“0”补足。考虑到MPEG视频画面组内的帧数量不多,故可以直接用序号作为除画面组内第一帧以外其他帧的组内帧序水印信息。第二步中,所述设定将完整性水印信息嵌入到MPEG视频时画面帧嵌入点的数量和各画面帧嵌入点的位置是指:首先,确定画面帧嵌入点的数量N个,其中,每个画面帧嵌入点包括9个宏块,9个宏块由1个中心宏块和围绕该中心宏块的8个宏块组成;每个宏块包括一个Cr色度块、一个Cb色度块和四个亮度块;其次,按照下述规则确定每个画面帧嵌入点中心宏块的位置,以得到该画面帧嵌入点中9个宏块的位置:每个画面帧嵌入点中心宏块与最上面一行宏块的距离为4n-1(n=1,2,3,…),与最左边一列宏块的距离为4m-1(m=1,2,3,…)。,第二步,所述将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cr色度块,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cb色度块是指:包括以下步骤:步骤S0201:计算每个宏块中Cr色度块的DCT中高频系数的平方和DMH:其中,表示Cr块中第i个DCT中高频系数;步骤S0202:根据9个宏块的位置,将组序水印信息嵌入到MPEG视频的各画面I帧嵌入点每个宏块的Cr色度块中:若待嵌入的二进制表示形式的组序水印信息为“1”,且待嵌入Cr色度块的DCT中高频系数平方和DMH为0,则在当前宏块的相邻宏块中寻找最优宏块,将最优宏块中Cr色度块的DCT中高频系数替换当前宏块中Cr色度块的DCT中高频系数;其中,最优宏块是指Cr色度块的DCT中高频系数平方和DMH最小且非0;若待嵌入的二进制表示形式的组序水印信息为“0”,且待嵌入Cr色度块的DCT中高频系数平方和DMH为非0,则将待嵌入水印的宏块中Cr色度块的DCT中高频系数置为0;码元数为9位的组序水印信息依照上述方法按从左到右、从上到下的顺序嵌入到画面帧嵌入点中9个宏块的Cr色度块中;步骤S0203:计算每个宏块中Cb色度块的DCT中高频系数的平方和DMH:其中,表示Cb块中第i个DCT中高频系数;步骤S0204:根据9个宏块的位置,将组内帧序水印信息嵌入到MPEG视频的各画面I帧嵌入点每个宏块的Cb色度块中:若待嵌入的二进制表示形式的组内帧序水印信息为“1”,且待嵌入Cb色度块的DCT中高频系数平方和DMH为0,则在当前宏块的相邻宏块中寻找最优宏块,将最优宏块中Cb色度块的DCT中高频系数替换当前宏块中Cb色度块的DCT中高频系数;其中,最优宏块是指Cb色度块的DCT中高频系数平方和DMH最小且非0;若待嵌入的二进制表示形式的组内帧序水印信息为“0”,且待嵌入Cb色度块的DCT中高频系数平方和DMH为非0,则将待嵌入水印的宏块中Cb色度块的DCT中高频系数置为0;码元数为9位的组内帧序水印信息依照上述方法按从左到右、从上到下的顺序嵌入到画面帧嵌入点中9个宏块的Cb色度块中。第二步,所述将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第一个亮度块中,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第四个亮度块中是指:包括以下步骤:步骤S0205:根据9个宏块的位置,将组序水印信息嵌入到MPEG视频的各画面帧嵌入点的每个宏块第一个亮度块中:若待嵌入的二进制表示形式的组序水印信息为“0”,则按以下公式计算得到该宏块中嵌入组序水印信息的第一个亮度块:其中,Y1为原始第一个亮度块;若待嵌入的二进制表示形式的组序水印信息为“1”,则计算若Y#的值为0,则设置第一亮度块中第40个DCT中高频系数为1:若Y#的值为非0,则不进行操作;步骤S0206:根据9个宏块的位置,将组内帧序水印信息嵌入到MPEG视频的各画面帧嵌入点的每个宏块第四个亮度块中:若待嵌入的二进制表示形式的组内帧序水印信息为“0”,则按以下公式计算得到该宏块中嵌入组内帧序水印信息的第四个亮度块:其中,Y4为原始第四个亮度块;若待嵌入的二进制表示形式的组内帧序水印信息为“1”,则计算若Y#的值为0,则设置第四亮度块中第40个DCT中高频系数为1:若Y#的值为非0,则不进行操作。第三步中,所述对第二步得到的带完整性水印信息的MPEG视频进行完整性水印信息的提取是指:根据第二步得到的画面帧嵌入点的数量、各画面帧嵌入点的位置和每个画面帧嵌入点中9个宏块的位置,对带完整性水印信息的MPEG视频进行完整性水印信息的提取,包括以下步骤:步骤S0301:计算每个宏块中Cr色度块的DCT中高频系数的平方和DMH:其中,表示Cr块中第i个DCT中高频系数;若Cr色度块的DCT中高频系数平方和DMH为0,则对应Cr色度块的二进制表示形式的组序水印信息为“0”,否则对应Cr色度块的二进制表示形式的组序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的Cr色度块的组序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的Cr色度块的组序水印信息;步骤S0302:计算每个宏块中Cb色度块的DCT中高频系数的平方和DMH:其中,表示Cb块中第i个DCT中高频系数;若Cb色度块的DCT中高频系数平方和DMH为0,则对应Cb色度块的二进制表示形式的组内帧序水印信息为“0”,否则对应Cb色度块的二进制表示形式的组内帧序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的Cb色度块的组内帧序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的Cb色度块的组内帧序水印信息;步骤S0303:对各画面帧嵌入点的各个宏块第一个亮度块进行以下操作:其中,为完整性水印信息的MPEG视频中宏块的第一个亮度块;若Y#为0,则对应第一亮度块的二进制表示形式的组序水印信息为“0”,否则对应第一亮度块的二进制表示形式的组序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的第一亮度块的组序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的第一亮度块的组序水印信息;步骤S0304:对各画面帧嵌入点的各个宏块第四个亮度块进行以下操作:其中,为完整性水印信息的MPEG视频中宏块的第四个亮度块;若Y#为0,则对应第四亮度块的二进制表示形式的组内帧序水印信息为“0”,否则对应第四亮度块的二进制表示形式的组内帧序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的第四亮度块的组内帧序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的第四亮度块的组内帧序水印信息。第三步中,所述对提取的完整性水印信息进行检测,判断完整性水印信息的MPEG视频中各画面帧嵌入点的完整性水印信息是否被篡改,实现判断预先在MPEG视频中嵌入完整性水印信息的MPEG视频的完整性是指,包括以下步骤:步骤S0401:将各画面帧嵌入点9个宏块中Cr色度块的组序水印信息、Cb色度块的组内帧序水印信息、第一亮度块的组序水印信息和第四亮度块的组内帧序水印信息作为各画面帧嵌入点的完整性水印信息,并与第一步生成的完整性水印信息作比较;步骤S0402:统计各画面帧嵌入点的完整性水印信息与第一步生成的完整性水印信息相同的数量;在同一画面帧中,若完整性水印信息与第一步生成的完整性水印信息相同的嵌入点的数量大于且等于嵌入点总数的则判断该画面帧的信息未被篡改,当前画面帧为正常帧,并执行步骤S0403;否则判断该画面帧的信息被篡改;步骤S0403:将正常帧中完整性水印信息相同的嵌入点的完整性水印信息作为当前画面帧的完整性水印信息,并将完整性水印信息的二进制表示形式转换为十进制表示形式。与现有技术相比,本发明具有如下优点与有益效果:本发明基于MPEG视频压缩域的完整性水印嵌入与检测方法使得水印检测方法具有容错性,以提高水印的鲁棒性;同时该方法也提高了完整性水印的信息容量,提高了篡改检测的可靠性和准确性。附图说明图1是本发明方法中完整性水印信息生成的流程图;图2是本发明方法中完整性水印信息嵌入的流程图;图3是本发明方法中完整性水印信息检测的流程图;具体实施方式下面结合附图与具体实施方式对本发明作进一步详细的描述。实施例如图1至图3所示,本发明基于MPEG视频压缩域的完整性水印嵌入与检测方法,包括三个步骤:第一步,首先,生成组序水印信息,并将组序水印信息转换成二进制表示形式;然后,生成组内帧序水印信息,并将组内帧序水印信息转换成二进制表示形式,将二进制表示形式的组序水印信息和二进制表示形式的组内帧序水印信息作为完整性水印信息;第二步,首先,设定将完整性水印信息嵌入到MPEG视频时画面帧嵌入点的数量和各画面帧嵌入点的位置;然后,将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cr色度块,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cb色度块;最后,将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第一个亮度块中,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第四个亮度块中,以实现完整性水印信息的嵌入,得到带完整性水印信息的MPEG视频;第三步,对第二步得到的带完整性水印信息的MPEG视频进行完整性水印信息的提取,并对提取的完整性水印信息进行检测,判断完整性水印信息的MPEG视频中各画面帧嵌入点的完整性水印信息是否被篡改,实现判断预先在MPEG视频中嵌入完整性水印信息的MPEG视频的完整性。第一步中,上述生产组序水印信息,并将组序水印信息转换成二进制表示形式是指:包括以下步骤:步骤S0101:对MPEG视频画面组序号进行hash值计算,则第i个画面组内所有画面帧的组序水印信息为:其中,Gi为第i个画面组的顺序号;步骤S0102:将步骤S0101第i个画面组内所有画面帧的组序水印信息的十进制表示形式转换为二进制表示形式,当二进制表示形式的组序水印信息码元数不足9位时,在前面用“0”补足。MPEG视频的画面组数量非常多,故组序水印信息不能直接采画面用组序号,需要对画面组序号进行hash值计算。第一步中,上述生成组内帧序水印信息,并将组内帧序水印信息转换成二进制表示形式是指:包括以下步骤:步骤S0103:除了画面组内第一帧外,其它帧的组内帧序水印信息采用自身的序号;第一帧的组内帧序水印信息为该画面组内最后一个帧的序号;步骤S0104:将步骤S0103的组内帧序水印信息的十进制表示形式转换为二进制表示形式,当二进制表示形式的组内帧序水印信息码元数不足9位时,在前面用“0”补足。考虑到MPEG视频画面组内的帧数量不多,故可以直接用序号作为除画面组内第一帧以外其他帧的组内帧序水印信息。第二步中,上述设定将完整性水印信息嵌入到MPEG视频时画面帧嵌入点的数量和各画面帧嵌入点的位置是指:首先,确定画面帧嵌入点的数量4个,其中,每个画面帧嵌入点包括9个宏块,9个宏块由1个中心宏块和围绕该中心宏块的8个宏块组成;每个宏块包括一个Cr色度块、一个Cb色度块和四个亮度块;其次,按照下述规则确定每个画面帧嵌入点中心宏块的位置,以得到该画面帧嵌入点中9个宏块的位置:每个画面帧嵌入点中心宏块与最上面一行宏块的距离为4n-1(n=1,2,3,…),与最左边一列宏块的距离为4m-1(m=1,2,3,…)。,本实施例的4个嵌入点位置如表1所示。表1完整性水印默认嵌入点位置表嵌入点nmW111W212W321W422第二步,上述将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cr色度块,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面I帧嵌入点的Cb色度块是指:包括以下步骤:步骤S0201:计算每个宏块中Cr色度块的DCT中高频系数的平方和DMH:其中,表示Cr块中第i个DCT中高频系数;步骤S0202:根据9个宏块的位置,将组序水印信息嵌入到MPEG视频的各画面I帧嵌入点每个宏块的Cr色度块中:若待嵌入的二进制表示形式的组序水印信息为“1”,且待嵌入Cr色度块的DCT中高频系数平方和DMH为0,则在当前宏块的相邻宏块中寻找最优宏块,将最优宏块中Cr色度块的DCT中高频系数替换当前宏块中Cr色度块的DCT中高频系数;其中,最优宏块是指Cr色度块的DCT中高频系数平方和DMH最小且非0;若待嵌入的二进制表示形式的组序水印信息为“0”,且待嵌入Cr色度块的DCT中高频系数平方和DMH为非0,则将待嵌入水印的宏块中Cr色度块的DCT中高频系数置为0;码元数为9位的组序水印信息依照上述方法按从左到右、从上到下的顺序嵌入到画面帧嵌入点中9个宏块的Cr色度块中;步骤S0203:计算每个宏块中Cb色度块的DCT中高频系数的平方和DMH:其中,表示Cb块中第i个DCT中高频系数;步骤S0204:根据9个宏块的位置,将组内帧序水印信息嵌入到MPEG视频的各画面I帧嵌入点每个宏块的Cb色度块中:若待嵌入的二进制表示形式的组内帧序水印信息为“1”,且待嵌入Cb色度块的DCT中高频系数平方和DMH为0,则在当前宏块的相邻宏块中寻找最优宏块,将最优宏块中Cb色度块的DCT中高频系数替换当前宏块中Cb色度块的DCT中高频系数;其中,最优宏块是指Cb色度块的DCT中高频系数平方和DMH最小且非0;若待嵌入的二进制表示形式的组内帧序水印信息为“0”,且待嵌入Cb色度块的DCT中高频系数平方和DMH为非0,则将待嵌入水印的宏块中Cb色度块的DCT中高频系数置为0;码元数为9位的组内帧序水印信息依照上述方法按从左到右、从上到下的顺序嵌入到画面帧嵌入点中9个宏块的Cb色度块中。第二步,上述将完整性水印信息中的组序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第一个亮度块中,将完整性水印信息中的组内帧序水印信息嵌入到MPEG视频的各画面帧嵌入点的宏块第四个亮度块中是指:包括以下步骤:步骤S0205:根据9个宏块的位置,将组序水印信息嵌入到MPEG视频的各画面帧嵌入点的每个宏块第一个亮度块中:若待嵌入的二进制表示形式的组序水印信息为“0”,则按以下公式计算得到该宏块中嵌入组序水印信息的第一个亮度块:其中,Y1为原始第一个亮度块;若待嵌入的二进制表示形式的组序水印信息为“1”,则计算若Y#的值为0,则设置第一亮度块中第40个DCT中高频系数为1:若Y#的值为非0,则不进行操作;步骤S0206:根据9个宏块的位置,将组内帧序水印信息嵌入到MPEG视频的各画面帧嵌入点的每个宏块第四个亮度块中:若待嵌入的二进制表示形式的组内帧序水印信息为“0”,则按以下公式计算得到该宏块中嵌入组内帧序水印信息的第四个亮度块:其中,Y4为原始第四个亮度块;若待嵌入的二进制表示形式的组内帧序水印信息为“1”,则计算若Y#的值为0,则设置第四亮度块中第40个DCT中高频系数为1:若Y#的值为非0,则不进行操作。第三步中,上述对第二步得到的带完整性水印信息的MPEG视频进行完整性水印信息的提取是指:根据第二步得到的画面帧嵌入点的数量、各画面帧嵌入点的位置和每个画面帧嵌入点中9个宏块的位置,对带完整性水印信息的MPEG视频进行完整性水印信息的提取,包括以下步骤:步骤S0301:计算每个宏块中Cr色度块的DCT中高频系数的平方和DMH:其中,表示Cr块中第i个DCT中高频系数;若Cr色度块的DCT中高频系数平方和DMH为0,则对应Cr色度块的二进制表示形式的组序水印信息为“0”,否则对应Cr色度块的二进制表示形式的组序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的Cr色度块的组序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的Cr色度块的组序水印信息;步骤S0302:计算每个宏块中Cb色度块的DCT中高频系数的平方和DMH:其中,表示Cb块中第i个DCT中高频系数;若Cb色度块的DCT中高频系数平方和DMH为0,则对应Cb色度块的二进制表示形式的组内帧序水印信息为“0”,否则对应Cb色度块的二进制表示形式的组内帧序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的Cb色度块的组内帧序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的Cb色度块的组内帧序水印信息;步骤S0303:对各画面帧嵌入点的各个宏块第一个亮度块进行以下操作:其中,为完整性水印信息的MPEG视频中宏块的第一个亮度块;若Y#为0,则对应第一亮度块的二进制表示形式的组序水印信息为“0”,否则对应第一亮度块的二进制表示形式的组序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的第一亮度块的组序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的第一亮度块的组序水印信息;步骤S0304:对各画面帧嵌入点的各个宏块第四个亮度块进行以下操作:其中,为完整性水印信息的MPEG视频中宏块的第四个亮度块;若Y#为0,则对应第四亮度块的二进制表示形式的组内帧序水印信息为“0”,否则对应第四亮度块的二进制表示形式的组内帧序水印信息为“1”;依次类推计算得到画面帧嵌入点中各个宏块的第四亮度块的组内帧序水印信息;按照从左到右、从上到下的顺序排列则得到9个宏块的第四亮度块的组内帧序水印信息。第三步中,上述对提取的完整性水印信息进行检测,判断完整性水印信息的MPEG视频中各画面帧嵌入点的完整性水印信息是否被篡改,实现判断预先在MPEG视频中嵌入完整性水印信息的MPEG视频的完整性是指,包括以下步骤:步骤S0401:将各画面帧嵌入点9个宏块中Cr色度块的组序水印信息、Cb色度块的组内帧序水印信息、第一亮度块的组序水印信息和第四亮度块的组内帧序水印信息作为各画面帧嵌入点的完整性水印信息,并与第一步生成的完整性水印信息作比较;步骤S0402:统计各画面帧嵌入点的完整性水印信息与第一步生成的完整性水印信息相同的数量;在同一画面帧中,若完整性水印信息与第一步生成的完整性水印信息相同的嵌入点的数量大于且等于嵌入点总数的则判断该画面帧的信息未被篡改,当前画面帧为正常帧,并执行步骤S0403;否则判断该画面帧的信息被篡改;步骤S0403:将正常帧中完整性水印信息相同的嵌入点的完整性水印信息作为当前画面帧的完整性水印信息,并将完整性水印信息的二进制表示形式转换为十进制表示形式。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页1 2 3