CN103152578B - 基于混合编解码的h.264视频水印嵌入及提取方法 - Google Patents

基于混合编解码的h.264视频水印嵌入及提取方法 Download PDF

Info

Publication number
CN103152578B
CN103152578B CN201310097944.0A CN201310097944A CN103152578B CN 103152578 B CN103152578 B CN 103152578B CN 201310097944 A CN201310097944 A CN 201310097944A CN 103152578 B CN103152578 B CN 103152578B
Authority
CN
China
Prior art keywords
data
dct
video
information
rsqb
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
Application number
CN201310097944.0A
Other languages
English (en)
Other versions
CN103152578A (zh
Inventor
谢卫华
王永滨
伏文龙
谢金宝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Communication University of China
Original Assignee
Communication University of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Communication University of China filed Critical Communication University of China
Priority to CN201310097944.0A priority Critical patent/CN103152578B/zh
Publication of CN103152578A publication Critical patent/CN103152578A/zh
Application granted granted Critical
Publication of CN103152578B publication Critical patent/CN103152578B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

基于混合编解码的H.264视频水印嵌入及提取方法属于多媒体信息安全领域。本方案不需要彻底解码视频数据,在嵌入水印时充分利用原视频的编码参数,最大限度的减少了嵌入水印后的视频与原始视频的差别。在进行解码时,并不是将视频数据全部解码,而是只解码到DCT数据,在其中嵌入水印,同时保留解码过程中出来的编码参数(如:块类型,预测模式,运动矢量等),快速实现水印嵌入。本发明是一种基于264视频压缩标准的视频水印方案,相对于传统的视频水印方案需要全部解码视频数据的方案,采用了一种速度更快、效率更高的方案。

Description

基于混合编解码的H.264视频水印嵌入及提取方法
技术领域:
本发明是基于混合编解码的H.264视频格式的视频水印嵌入及提取方案,针对H.264码流中的DCT系数嵌入水印,属于多媒体信息安全领域。
背景技术:
数字水印是一种非常有效的数字版权保护技术,近些年来得到迅猛发展。它利用人眼的视觉特性,在数字载体中嵌入不影响原载体视觉效果和使用价值的标志信息,在检测时通过专门的方法又能将嵌入的水印信息提取出来。但目前针对数字水印的研究多集中在静态图像领域。现有的一些图像水印算法可以应用到视频水印算法中,但是视频水印并不是图像水印的简单延伸,视频水印应满足一些针对视频的特殊要求,例如视频水印数据量较大,与图像水印存在一定的差别,另外,视频水印还有实时性、随机检测性、盲水印等要求。
视频是由连续播放的图像序列构成,因此,相邻帧之间内容存在很大的相关性,连续帧之间存在大量的数据冗余。
因为视频数据量较大,为了节约视频存储空间和便于传输,现在视频的主要存在模式是压缩数据。不同的视频压缩格式,采用相似的数据压缩技术,同时在复杂性上存在一定的差别。H264压缩标准在传统压缩技术的基础上,引入了更多的预测模式,使时间和空间复杂度大大增加。
264标准相比于其他标准采用了分层的设计方式,分为视频编码层(VCL)和网络提取层(NAL),以更好地适应不同网络速率下的高品质图像传输。264标准采用高精度、多模块运动设计,最高支持1/8像素精度的运动矢量;为了提高运动估计的精确程度,264标准采用更灵活和细致的模式划分和多帧参考技术。因而在编、解码264压缩视频时,速度慢,耗时长。
视频水印也就是加载在数字视频上的水印,其目的主要是对数字视频作品进行版权保护,通过鉴别特有的水印信息来确认版权所有者、保护版权所有者的合法权益。
目前视频水印有三个嵌入位置:原始视频数据流中、压缩编码过程中和压缩后的视频流中。对应这三种嵌入位置,有三种水印嵌入方案:一、直接嵌入到原始视频数据流中,其优点是水印的嵌入方法多,可以使用图像水印的嵌入方法,缺点是计算量较大,增加了视频码流,降低了视频的质量;相对应的,在提取水印时也需将码流解码出来之后再对原始视频进行提取,增加了算法的复杂度。二、水印在视频的压缩编码过程中进行嵌入,常见的方法是将水印嵌入到量化系数或运动矢量上,其优点是嵌入的水印信息能很好的与视频相结合,不会增加视频流的数据比特率,缺点是会降低视频质量,并且要结合编码器选择水印嵌入算法。三、水印直接嵌入到压缩比特流中,此方案对视频信号的影响最小,且不需要经过编解码,实时性较高,但是受到了压缩比特率的限制,这种方法限定了嵌入水印的数据量的大小。
随着人们对视频版权安全的重视程度的提高,出现了许多视频水印的实现方法,大体可以分为三类:空域视频水印、频域视频水印和压缩域视频水印。空域视频水印把视频看作静止图像序列,以图像水印为基础;频域视频水印是在时间轴上嵌入水印;压缩域视频水印是以视频压缩标准存放的压缩数据,水印算法与视频压缩标准相结合。其中,利用频域法嵌入水印的办法应用较多。例如利用DCT变换的特性,可以使得水印数据分布在整个空间域中,所以具有很好的不可感知性;而且经过DCT变换后,视频图像的大多数能量都集中在低频部分,因而在较低频部分嵌入水印具有一定的鲁棒性,但是在将水印嵌入在低频部分又会引起较大的失真,而且由于人眼对亮度信号比对色度信号更加敏感,嵌入在色度信号中的数据在压缩时很容易被清除。数字水印系统的两个最大指标鲁棒性和不可感知性是一对矛盾体,所以水印系统的设计很大程度上力求使产品能够达到二者的最大妥协,而这其中水印嵌入位置的确定又是实现鲁棒性和不可感知性对立统一的核心。
如果按照水印技术与数字视频编码系统的结合方式来分类,可以将视频水印技术归为两大类:基于原始视频的方法和基于压缩视频的方法。基于原始视频的水印算法,是对经编码的视频数据完全解码后,在原始视频数据中嵌入水印。如果直接在原始视频中嵌入水印,则许多图像水印的算法都可以直接移植到视频水印中去,缺点是会增加视频码流和降低视频的质量;基于压缩视频的水印算法,则与某种视频压缩标准(如常见的MPEG-2或MPEG-4)相结合,在压缩视频中嵌入水印。
本发明受863高科技发展技术项目“面向三网融合的集成播控平台研究与示范”资助。该项目要求在基于这种高品质H264视频上嵌入水印,且水印的嵌入要有非常高的处理速度。上述的各种视频水印的实现方法都不可避免地需要对原始压缩H264进行解码后添加水印。如果按照压缩后的视频经过解码出原始的图像在之中嵌入水印然后再经过H264编码后的方法,则由于解码和编码要大量的耗时则很难到达较快的处理速度,这时就需要充分地利用解码和编码的数据来提高水印嵌入的速度,这就是本方法要解决的问题。
发明内容:
本发明是一种基于264视频压缩标准的视频水印方案,相对于传统的视频水印方案需要全部解码视频数据的方案,采用了一种速度更快、效率更高的方案。本方案不需要彻底解码视频数据,在嵌入水印时充分利用原视频的编码参数,最大限度的减少了嵌入水印后的视频与原始视频的差别。在进行解码时,并不是将视频数据全部解码,而是只解码到DCT数据,在其中嵌入水印,同时保留解码过程中出来的编码参数(如:块类型,预测模式,运动矢量等),快速实现水印嵌入。
基于混合编解码的H.264视频水印嵌入及提取方法,其特征在于:
其水印的嵌入步骤如下:
A.对于原始的H264视频,首先对原始H264视频流进行网络层NAL解码,获得相应的片SLICE解码数据头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数信息集;
B.描述H264片信息的数据存放于片的解码数据头信息里;对于片SLICE解码数据头信息,提取其中的描述H264片信息的数据作为H264的视频编码的前导数据予以保存,IDR瞬时解码参考信息,序列参数信息集数据以及图像参数信息集则完整保留原始数据流,并作为H264的图像编码数据集的辅助数据;
C1.对于宏块的类型,首先根据片SLICE解码数据头信息来判断编码片数据是否为如下的几种类型之一或者其他:
I帧类型,P帧类型,B帧类型,SI类型,SP类型;
同时判断是不是需要SKIP模式处理,如是则进入SKIP处理流程,这时要保留一个标志位;
C2.根据获得的宏块的数据类型判断是否存在8x8传输模式,如果存在8x8的传输模式,则在编码部分引入8x8DCT编码数据,如果存在16x16的传输模式,则在编码部分引入16x16DCT编码数据,否则采用4x4DCT方式编码数据;并获得交织预测模式,该模式作为下面的编码所使用的预测模式PREM,如果存在子类型则还需要相应计算子类型SUB_P;
C3.利用NAL数据即上述步骤A中获得的片SLICE解码数据头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数信息集,解码ref数据以及运动矢量数据MVD,ref数据以及运动矢量数据MVD解码后的数据在H.264解码中应当保留预备下一个宏块处理使用,故放入缓冲中,等待H264解码下一个宏块以及片数据使用;
C4.获得编码模式数据CBP,包括亮度的CBP以及色度的CBP数据以被下面编码部分D6步数据处理使用:
C5.解码获得量化步长信息QP;
C6解码H264码流获得解码后的DCT数据,该数据在解码过程中为非零的亮度DCT数据,16x16亮度DCT数据,8x8的亮度DCT数据,直流色度数据,交流色度DCT数据,以及非零DCT的位置;这时应按下面式子获得编码用的DCT数据;
luma[posluma[i]]=d.dctluma[n]
chroma_dc[poschromadc[i]]=d.dctchromadc[n]
dct.luma_16x16[posluma16[i]]=d.dctluma16x16[n]
dct..luma_8x8[posluma8[i]]=d.dctluma8x8[n]
chroma_ac[poschromaac[i]]=d.dctchromaac[n]
其中dct.luma是除了8x8和16x16的亮度的DCT信息,d.dctluma是相应的解码获得相应DCT数据,posluma[n]是其中非零的位置数据其他为零;dct.chroma_dc是直流色度DCT数据,d.dctchromadc是相应的解码得到的DCT数据,poschromadc是非零的位置;dct.luma_16x16是16x16类型的DCT数据,d.dctluma16x16是相应解码获得DCT数据,posluma16是其中非零的位置,其他为零;dct.luma_8x8是8x8类型的DCT数据,d.dctluma8x8是相应解码得到的DCT数据,posluma8是其中非零的位置其他为零;dct.chroma_ac是交流色度的DCT数据,d.dctchromaac是解码获得相应DCT数据,poschromaac是其中非零的位置;
这个式子实现解码用DCT到编码用DCT的转换;解码首先获得是非零DCT值及非零的位置,而编码用DCT需将这两个结合起来求得编码用图像的DCT数据;
C7根据片解码数据的编码类型信息如果是按CABAC编码的则按CABAC方式进行解码处理,否则按CAVLC方式进行解码处理;
D下面D1及以下各步完成基于上述解码参数进行的编码;这些数据包含在下面所述的各步中;对这些H264的编码数据按照H264基础视频流的编码顺序进入熵编码环节处理以及同时加入水印信息;
D1.采用基于DCT域的水印嵌入方法,如果上述获得的宏块的DCT数据为dct,待嵌入的水印序列w(N);w(N)表示长度为N的水印序列;
m,n为该宏块DCT数据的起始位置;则按照下述算法在亮度信息中嵌入一位水印信息:
dct _ w . luma [ m + θ ] [ n + δ ] = max ( dct . luma [ m + θ ] [ n + δ ] , dct . luma [ m + α ] [ n + β ] ) + power ; ifw ( i ) = 1 min ( dct . luma [ m + θ ] [ n + δ ] , dct . luma [ m + α ] [ n + β ] ) - power ; ifw ( i ) = 0
dct _ w . luma [ m + α ] [ n + β ] = min ( dct . luma [ m + θ ] [ n + δ ] , dct . luma [ m + α ] [ n + β ] ) ; ifw ( i ) = 1 max ( dct . luma [ m + θ ] [ n + δ ] , dct . luma [ m + α ] [ n + β ] ) ; ifw ( i ) = 0 其中[θ,δ]和[α,β]是沿H264的zigzigZ字扫描路径上相邻的两个点的位置,power是嵌入强度根据鲁棒性要求在[5-100]取值,值越小则对应嵌入水印后的视频相对原始视频质量越好,但抗攻击能力反而较低;取值越大则嵌入水印后视频相对原始视频改动较大,抗攻击能力越强;
对提取的DCT数据分析加入水印信息后,重新构建原始数据结构,准备进行H264视频流的生成;
D2.利用上述获得宏块的解码片slice头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数信息集按原始H264流的序列参数生成编码宏块的头信息,并将该数据写入对应的视频流;
D3.根据宏块类型如果是8x8传输模式,则将有该模式的标志信息写入码流;如果是SKIP模式则写入上面C1步获得标志位;
D4.根据输入H264码流的预测模型获得输入码流的预测模型PREM,由宏块的类型写入预测模式信息,包括亮度以及色度信息,并将该模式信息写入视频流;如果存在子类型SUB_P,则同样写入视频流;
D5.如果该模块的宏块的划分子类型为8x8或4x4之外的其他用于运动补偿的各种类型,其他用于运动补偿的各种类型包括16x16,16x8,8x16,4x8,8x4,则通过输入H264码流相应获得参考ref数据类型以及运动矢量MVD数据类型并顺序写入输出码流;
D6.由输入获得的亮度和色度的CBP数据写入输出码流;
D7.写入量化步长信息;
D8.由输入获得的各个不同类型DCT数据在加入水印信息后,提取其中非零系数的个数,以及每一个非零的DCT系数按照熵编码的编码方法编码后加入到输出的码流中;
E重复上面的流程直至每个片的宏块的数据全部处理完毕,然后进行下一帧的处理直到所有帧处理完毕;
其水印信息的检查方法如下:
由于水印信息只包含在视频中的亮度DCT数据中,因而水印信息的提取部分绝大部分和H264视频的解码部分相同,只是在获得DCT数据时进行检测,其方法如下:
1)对于输入的加入水印的H264视频,解码出当前帧中宏块的DCT数据;
2)根据水印检测算法的要求对亮度DCT数据进行提取水印信息的操作;按下面方法提取水印,[m,n]为宏块DCT数据起始地址,[θ,δ]和[α,β]为嵌入点的位置
w ( i ) = 1 ; dct . luma [ m + &theta; ] [ n + &delta; ] > dct . luma [ m + &alpha; ] [ n + &beta; ] ) 0 ; dct . luma [ m + &theta; ] [ n + &delta; ] < = dct . luma [ m + &alpha; ] [ n + &beta; ] )
3)重复检测各个嵌入宏块,完成后再进行下一帧的处理直至获得所有的水印信息。
这种水印嵌入方案是一种基于DCT变换域的、输入视频编码格式为H264视频、嵌入水印后输出仍然是H264视频的水印嵌入方案。该方法的特点是在不还原原始H264视频画面的基础上,通过分析该压缩域的若干参数,对于不同的参数采取不同的处理方法,从而达到水印嵌入的目的,并且兼顾原始H264视频的特征,在尽可能不影响原有视频的同时实现水印信息的嵌入。
本发明的主要特征是:不需要对264视频全部解码,而是对原有视频进行部分解码,保留原有视频的编码信息和编码参数,在嵌入水印后,在编码时充分利用保留的原有参数,节省视频解码的时间、节省重新编码过程中重新计算编码参数的时间,从而达到对264视频的水印快速嵌入。
本方案的技术方案如图1所示,输入原264视频,在NAL解码的过程中保留图像参数集(PPS)、序列参数集(SPS)和片头部信息(SliceHeader)等编码参数;然后经过CABAC解码(基于上下文的自适应二进制算术编码的解码)或CAVLC解码(基于上下文的可变长编码的解码),解码到DCT数据,同时保留宏块层编码参数等必要的编码参数,在DCT系数中嵌入水印。在编码时,充分利用部分解码时保留的编码参数,重新进行CABAC或CAVLC的熵编码和NAL编码,得到水印视频。
附图说明
图1是本发明流程图。
图2是嵌入前的视频图像。
图3是嵌入后的视频图像。
具体实施方式:
1.基于混合编解码的H.264视频水印嵌入及提取方法,其特征在于:
其水印的嵌入步骤如下:
C.对于原始的H264视频,首先对原始H264视频流进行网络层NAL解码,获得相应的片SLICE解码数据头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数信息集;
D.描述H264片信息的数据存放于片的解码数据头信息里;对于片SLICE解码数据头信息,提取其中的描述H264片信息的数据作为H264的视频编码的前导数据予以保存,IDR瞬时解码参考信息,序列参数信息集数据以及图像参数信息集则完整保留原始数据流,并作为H264的图像编码数据集的辅助数据;
C1.对于宏块的类型,首先根据片SLICE解码数据头信息来判断编码片数据是否为如下的几种类型之一或者其他:
I帧类型,P帧类型,B帧类型,SI类型,SP类型;
同时判断是不是需要SKIP模式处理,如是则进入SKIP处理流程,这时要保留一个标志位;
C2.根据获得的宏块的数据类型判断是否存在8x8传输模式,如果存在8x8的传输模式,则在编码部分引入8x8DCT编码数据,如果存在16x16的传输模式,则在编码部分引入16x16DCT编码数据,否则采用4x4DCT方式编码数据;并获得交织预测模式,该模式作为下面的编码所使用的预测模式PREM,如果存在子类型则还需要相应计算子类型SUB_P;
C3.利用NAL数据即上述步骤A中获得的片SLICE解码数据头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数信息集,解码ref数据以及运动矢量数据MVD,ref数据以及运动矢量数据MVD解码后的数据在H.264解码中应当保留预备下一个宏块处理使用,故放入缓冲中,等待H264解码下一个宏块以及片数据使用;
C4.获得编码模式数据CBP,包括亮度的CBP以及色度的CBP数据以被下面编码部分D6步数据处理使用:
C5.解码获得量化步长信息QP;
C6解码H264码流获得解码后的DCT数据,该数据在解码过程中为非零的亮度DCT数据,16x16亮度DCT数据,8x8的亮度DCT数据,直流色度数据,交流色度DCT数据,以及非零DCT的位置;这时应按下面式子获得编码用的DCT数据;
luma[posluma[i]]=d.dctluma[n]
chroma_dc[poschromadc[i]]=d.dctchromadc[n]
dct.luma_16x16[posluma16[i]]=d.dctluma16x16[n]
dct..luma_8x8[posluma8[i]]=d.dctluma8x8[n]
chroma_ac[poschromaac[i]]=d.dctchromaac[n]
其中dct.luma是除了8x8和16x16的亮度的DCT信息,d.dctluma是相应的解码获得相应DCT数据,posluma[n]是其中非零的位置数据其他为零;dct.chroma_dc是直流色度DCT数据,d.dctchromadc是相应的解码得到的DCT数据,poschromadc是非零的位置;dct.luma_16x16是16x16类型的DCT数据,d.dctluma16x16是相应解码获得DCT数据,posluma16是其中非零的位置,其他为零;dct.luma_8x8是8x8类型的DCT数据,d.dctluma8x8是相应解码得到的DCT数据,posluma8是其中非零的位置其他为零;dct.chroma_ac是交流色度的DCT数据,d.dctchromaac是解码获得相应DCT数据,poschromaac是其中非零的位置;
这个式子实现解码用DCT到编码用DCT的转换;解码首先获得是非零DCT值及非零的位置,而编码用DCT需将这两个结合起来求得编码用图像的DCT数据;
C7根据片解码数据的编码类型信息如果是按CABAC编码的则按CABAC方式进行解码处理,否则按CAVLC方式进行解码处理;
D下面D1及以下各步完成基于上述解码参数进行的编码;这些数据包含在下面所述的各步中;对这些H264的编码数据按照H264基础视频流的编码顺序进入熵编码环节处理以及同时加入水印信息;
D1.采用基于DCT域的水印嵌入方法,如果上述获得的宏块的DCT数据为dct,待嵌入的水印序列w(N);w(N)表示长度为N的水印序列;
m,n为该宏块DCT数据的起始位置;则按照下述算法在亮度信息中嵌入一位水印信息:
dct _ w . luma [ m + &theta; ] [ n + &delta; ] = max ( dct . luma [ m + &theta; ] [ n + &delta; ] , dct . luma [ m + &alpha; ] [ n + &beta; ] ) + power ; ifw ( i ) = 1 min ( dct . luma [ m + &theta; ] [ n + &delta; ] , dct . luma [ m + &alpha; ] [ n + &beta; ] ) - power ; ifw ( i ) = 0
dct _ w . luma [ m + &alpha; ] [ n + &beta; ] = min ( dct . luma [ m + &theta; ] [ n + &delta; ] , dct . luma [ m + &alpha; ] [ n + &beta; ] ) ; ifw ( i ) = 1 max ( dct . luma [ m + &theta; ] [ n + &delta; ] , dct . luma [ m + &alpha; ] [ n + &beta; ] ) ; ifw ( i ) = 0 其中[θ,δ]和[α,β]是沿H264的zigzigZ字扫描路径上相邻的两个点的位置,power是嵌入强度根据鲁棒性要求在[5-100]取值,一般取50;值越小则对应嵌入水印后的视频相对原始视频质量越好,但抗攻击能力反而较低;取值越大则嵌入水印后视频相对原始视频改动较大,抗攻击能力越强;
以[m,n]为起始的水印DCT数据块如[8,8],选取在zigzig扫描路径上相邻的[θ,δ]和[α,β]两个位置,例如[3,1]和[2,2]。则判断这两个位置DCT值的大小,假设dct.luma[13][9]<dct.luma[10][10],如果这时要嵌入水印为1,则使[13,9]处的值为更大值,[10,10]处值为小值,这需要两个值交换,假设强度为50即
dct . luma [ 13 ] [ 9 ] = dct . luma [ 10 ] [ 10 ] + 50 dct . luma [ 10 ] [ 10 ] = dct . luma [ 13 ] [ 9 ]
若嵌入水印为0,则使[13,9]处DCT值为更小值,[10,10]为原值较大
dct . luma [ 13 ] [ 9 ] = dct . luma [ 13 ] [ 9 ] - 50 dct . luma [ 10 ] [ 10 ] = dct . luma [ 10 ] [ 10 ]
以实现检测水印时通过比较就可以实现对水印信息的提取。
对提取的DCT数据分析加入水印信息后,重新构建原始数据结构,准备进行H264视频流的生成;
D2.利用上述获得宏块的解码片slice头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数信息集按原始H264流的序列参数生成编码宏块的头信息,并将该数据写入对应的视频流;
D3.根据宏块类型如果是8x8传输模式,则将有该模式的标志信息写入码流;如果是SKIP模式则写入上面C1步获得标志位;
D4.根据输入H264码流的预测模型获得输入码流的预测模型PREM,由宏块的类型写入预测模式信息,包括亮度以及色度信息,并将该模式信息写入视频流;如果存在子类型SUB_P,则同样写入视频流;
D5.如果该模块的宏块的划分子类型为8x8或4x4之外的其他用于运动补偿的各种类型,其他用于运动补偿的各种类型包括16x16,16x8,8x16,4x8,8x4,则通过输入H264码流相应获得参考ref数据类型以及运动矢量MVD数据类型并顺序写入输出码流;
D6.由输入获得的亮度和色度的CBP数据写入输出码流;
D7.写入量化步长信息;
D8.由输入获得的各个不同类型DCT数据在加入水印信息后,提取其中非零系数的个数,以及每一个非零的DCT系数按照熵编码的编码方法编码后加入到输出的码流中;
E重复上面的流程直至每个片的宏块的数据全部处理完毕,然后进行下一帧的处理直到所有帧处理完毕;
其水印信息的检查方法如下:
由于水印信息只包含在视频中的亮度DCT数据中,因而水印信息的提取部分绝大部分和H264视频的解码部分相同,只是在获得DCT数据时进行检测,其方法如下:
1)对于输入的加入水印的H264视频,解码出当前帧中宏块的DCT数据;
2)根据水印检测算法的要求对亮度DCT数据进行提取水印信息的操作;按下面方法提取水印,[m,n]为宏块DCT数据起始地址,[θ,δ]和[α,β]为嵌入点的位置
w ( i ) = 1 ; dct . luma [ m + &theta; ] [ n + &delta; ] > dct . luma [ m + &alpha; ] [ n + &beta; ] ) 0 ; dct . luma [ m + &theta; ] [ n + &delta; ] < = dct . luma [ m + &alpha; ] [ n + &beta; ] )
例如若当前要提取宏块的首地址[m,n]=[8,8],所要提取位置为[1,3][2,2]则判断两者的大小就可以得到当前i处的一位水印信息。
w ( i ) = 1 ; dct . luma [ 9 ] [ 13 ] > dct . luma [ 10 ] [ 10 ] ) 0 ; dct . luma [ 9 ] [ 13 ] < = dct . luma [ 10 ] [ 10 ] )
31重复检测各个嵌入宏块,完成后再进行下一帧的处理直至获得所有的水印信息。
1、该方法用的输入视频流是H264编码输出水印视频流也是H264编码,算法对具体的H264所采用的编码参数没有特定的要求,都通过上面的步骤获取相应的信息同时按照H264码流的顺序写入相应的码流信息。
2、该方法在分解输入的待嵌入水印的H264码流的过程中并没有生成解码后的图像,这就避免了那些基于完整图像编码过程中嵌入水印所造成的水印嵌入速度慢的问题。
3、如1所述,该方法极大程度地利用了原始待嵌入水印的H264视频所要求的参数信息,所以嵌入后的H264视频保留了原始H264视频的基本数据,对于码流的改变降到了最小。
4、该算法可以规定通行的调用接口非常易于水印算法的改变和多种水印信息的应用。
为评测本发明嵌入水印的效果,特作如下的测试。
测试视频是400帧172x144的基于H264压缩的forman视频,嵌入的信息是一组字符串“SITV"。附图2是嵌入前的视频图像,附图3是嵌入后的视频图像,该算法正确提取了嵌入信息。
对比的是基于H.264标准测试程序JMlO.1经过全部解码和全部编码后嵌入水印的程序,所采用的水印算法是同一种。测试主机配置为CPUintelcore172.8GHz经测试
时间 水印提取 嵌入前大小 嵌入后大小
本方案 0.31s 100% 284.48k 284.48k
全解全编 690.23s 100% 284.48k 165.56k
通过数据可以看出,本方案相比于传统的全部解码得到YUV图像后全部编码速度大幅提升,且视频大小变化很小,而传统方案嵌入前后对视频的改变极大。

Claims (1)

1.基于混合编解码的H.264视频水印嵌入及提取方法,其特征在于:
其水印的嵌入步骤如下:
A.对于原始的H.264视频,首先对原始H.264视频流进行网络层NAL解码,获得相应的片SLICE解码数据头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数集信息;
B.描述H.264片信息的数据存放于片的解码数据头信息里;对于片SLICE解码数据头信息,提取其中的描述H.264片信息的数据作为H.264的视频编码的前导数据予以保存,IDR瞬时解码参考信息,序列参数集信息以及图像参数集信息则完整保留原始数据流,并作为H.264的图像编码数据集的辅助数据;
C1.对于宏块的类型,首先根据片SLICE解码数据头信息来判断编码片数据是否为如下的几种类型之一:
I帧类型,P帧类型,B帧类型,SI类型,SP类型;
同时判断是不是需要SKIP模式处理,如是则进入SKIP处理流程,这时要保留一个标志位;
C2.根据获得的宏块的数据类型判断是否存在8x8传输模式,如果存在8x8的传输模式,则在编码部分引入8x8DCT编码数据,如果存在16x16的传输模式,则在编码部分引入16x16DCT编码数据,否则采用4x4DCT方式编码数据;并获得交织预测模式,该模式作为下面的编码所使用的预测模式PREM,如果存在子类型则还需要相应计算子类型SUB_P;
C3.利用NAL数据即上述步骤A中获得的片SLICE解码数据头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数集信息,解码运动矢量参考ref数据以及运动矢量数据MVD,运动矢量参考ref数据以及运动矢量数据MVD解码后的数据在H.264解码中应当保留预备下一个宏块处理使用,故放入缓冲中,等待H.264解码下一个宏块以及片数据使用;
C4.获得编码模式数据CBP,包括亮度的CBP以及色度的CBP数据以被下面编码部分D6步数据处理使用;
C5.解码获得量化步长信息QP;
C6.解码H.264码流获得解码后的DCT数据,该数据在解码过程中为非零的亮度DCT数据,16x16亮度DCT数据,8x8的亮度DCT数据,直流色度DCT数据,交流色度DCT数据,以及非零DCT的位置;这时应按下面式子获得编码用的DCT数据;
dct.luma[posluma[i]]=d.dctluma[n]
dct.chroma_dc[poschromadc[i]]=d.dctchromadc[n]
dct.luma_16x16[posluma16[i]]=d.dctluma16x16[n]
dct.luma_8x8[posluma8[i]]=d.dctluma8x8[n]
dct.chroma_ac[poschromaac[i]]=d.dctchromaac[n]
其中dct.luma是除了8x8和16x16的亮度的DCT信息,d.dctluma是相应的解码获得相应DCT数据,posluma[n]是其中非零的位置,其他为零;dct.chroma_dc是直流色度DCT数据,d.dctchromadc是相应的解码得到的DCT数据,poschromadc[n]是非零的位置;dct.luma_16x16是16x16类型的DCT数据,d.dctluma16x16是相应解码获得16x16类型的DCT数据,posluma16[n]是其中非零的位置,其他为零;dct.luma_8x8是8x8类型的DCT数据,d.dctluma8x8是相应解码得到的8x8类型的DCT数据,posluma8[n]是其中非零的位置,其他为零;dct.chroma_ac是交流色度的DCT数据,d.dctchromaac是解码获得相应交流色度的DCT数据,poschromaac[n]是其中非零的位置;
这个式子实现解码用DCT到编码用DCT的转换;解码首先获得是非零DCT值及非零的位置,而编码用DCT需将这两个结合起来求得编码用图像的DCT数据;
C7.根据片解码数据的编码类型信息如果是按CABAC编码的则按CABAC方式进行解码处理,否则按CAVLC方式进行解码处理;
D.下面D1及以下各步完成基于上述解码参数进行的编码;这些数据包含在下面所述的各步中;对这些H.264的编码数据按照H.264基础视频流的编码顺序进入熵编码环节处理以及同时加入水印信息;
D1.采用基于DCT域的水印嵌入方法,如果上述获得的宏块的DCT数据为dct,待嵌入的水印序列w(N);w(N)表示长度为N的水印序列;
m,n为该宏块DCT数据的起始位置;则按照下述算法在亮度信息中嵌入一位水印信息:
d c t _ w . l u m a &lsqb; m + &theta; &rsqb; &lsqb; n + &delta; &rsqb; = m a x ( d c t . l u m a &lsqb; m + &theta; &rsqb; &lsqb; n + &delta; &rsqb; , d c t . l u m a &lsqb; m + &alpha; &rsqb; &lsqb; n + &beta; &rsqb; ) + p o w e r ; i f w ( i ) = 1 m i n ( d c t . l u m a &lsqb; m + &theta; &rsqb; &lsqb; n + &delta; &rsqb; , d c t . l u m a &lsqb; m + &alpha; &rsqb; &lsqb; n + &beta; &rsqb; ) - p o w e r ; i f w ( i ) = 0
d c t _ w . l u m a &lsqb; m + &alpha; &rsqb; &lsqb; n + &beta; &rsqb; = m i n ( d c t . l u m a &lsqb; m + &theta; &rsqb; &lsqb; n + &delta; &rsqb; , d c t . l u m a &lsqb; m + &alpha; &rsqb; &lsqb; n + &beta; &rsqb; ) ; i f w ( i ) = 1 m a x ( d c t . l u m a &lsqb; m + &theta; &rsqb; &lsqb; n + &delta; &rsqb; , d c t . l u m a &lsqb; m + &alpha; &rsqb; &lsqb; n + &beta; &rsqb; ) ; i f w ( i ) = 0
其中[θ,δ]和[α,β]是沿H.264的zigzigZ字
扫描路径上相邻的两个点的位置,power是嵌入强度根据鲁棒性要求在[5-100]取值,值越小则对应嵌入水印后的视频相对原始视频质量越好,但抗攻击能力反而较低;取值越大则嵌入水印后视频相对原始视频改动较大,抗攻击能力越强;
对提取的DCT数据分析加入水印信息后,重新构建原始数据结构,准备进行H.264视频流的生成;
D2.利用上述获得宏块的解码片slice头信息,IDR瞬时解码参考信息,序列参数集信息,图像参数集信息按原始H.264流的序列参数生成编码宏块的头信息,并将该数据写入对应的视频流;
D3.根据宏块类型如果是8x8传输模式,则将有该模式的标志信息写入码流;如果是SKIP模式则写入上面C1步获得标志位;
D4.根据输入H.264码流的预测模型获得输入码流的预测模型PREM,由宏块的类型写入预测模式信息,包括亮度以及色度信息,并将该模式信息写入视频流;如果存在子类型SUB_P,则同样写入视频流;
D5.如果宏块的划分子类型为8x8或4x4之外的其他用于运动补偿的各种类型,其他用于运动补偿的各种类型包括16x16,16x8,8x16,4x8,8x4,则通过输入H.264码流相应获得运动矢量参考ref数据类型以及运动矢量MVD数据类型并顺序写入输出码流;
D6.由输入获得的亮度和色度的CBP数据写入输出码流;
D7.写入量化步长信息;
D8.由输入获得的各个不同类型DCT数据在加入水印信息后,提取其中非零系数的个数,以及每一个非零的DCT系数按照熵编码的编码方法编码后加入到输出的码流中;
E.重复上面的流程直至每个片的宏块的数据全部处理完毕,然后进行下一帧的处理直到所有帧处理完毕;
其水印信息的检查方法如下:
由于水印信息只包含在视频中的亮度DCT数据中,因而水印信息的提取部分绝大部分和H.264视频的解码部分相同,只是在获得DCT数据时进行检测,其方法如下:
1)对于输入的加入水印的H.264视频,解码出当前帧中宏块的DCT数据;
2)根据水印检测算法的要求对亮度DCT数据进行提取水印信息的操作;按下面方法提取水印,[m,n]为宏块DCT数据起始地址,[θ,δ]和[α,β]为嵌入点的位置
w ( i ) = 1 ; d c t . l u m a &lsqb; m + &theta; &rsqb; &lsqb; n + &delta; &rsqb; > d c t . l u m a &lsqb; m + &alpha; &rsqb; &lsqb; n + &beta; &rsqb; ) 0 ; d c t . l u m a &lsqb; m + &theta; &rsqb; &lsqb; n + &delta; &rsqb; < = d c t . l u m a &lsqb; m + &alpha; &rsqb; &lsqb; n + &beta; &rsqb; )
3)重复检测各个嵌入宏块,完成后再进行下一帧的处理直至获得所有的水印信息。
CN201310097944.0A 2013-03-25 2013-03-25 基于混合编解码的h.264视频水印嵌入及提取方法 Expired - Fee Related CN103152578B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310097944.0A CN103152578B (zh) 2013-03-25 2013-03-25 基于混合编解码的h.264视频水印嵌入及提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310097944.0A CN103152578B (zh) 2013-03-25 2013-03-25 基于混合编解码的h.264视频水印嵌入及提取方法

Publications (2)

Publication Number Publication Date
CN103152578A CN103152578A (zh) 2013-06-12
CN103152578B true CN103152578B (zh) 2016-05-18

Family

ID=48550419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310097944.0A Expired - Fee Related CN103152578B (zh) 2013-03-25 2013-03-25 基于混合编解码的h.264视频水印嵌入及提取方法

Country Status (1)

Country Link
CN (1) CN103152578B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428503B (zh) * 2013-07-24 2016-08-10 北京印刷学院 一种在数字媒体上水印提取的方法和装置
CN104581176B (zh) * 2014-12-26 2017-07-07 宁波大学 无帧内误差漂移的h.264/avc压缩域鲁棒视频水印嵌入及提取方法
US10958989B2 (en) * 2016-02-25 2021-03-23 Synamedia Limited Framework for embedding data in encoded video
KR102201604B1 (ko) 2016-08-04 2021-01-12 후아웨이 테크놀러지 컴퍼니 리미티드 예측 파라미터들에서의 데이터 숨김을 위한 방법 및 장치
CN106454368B (zh) * 2016-10-21 2020-02-18 浙江宇视科技有限公司 一种视频图像中叠加水印的方法及装置
CN108769828A (zh) * 2018-05-23 2018-11-06 深圳市网心科技有限公司 图片水印添加方法、电子装置及计算机可读存储介质
CN108769700A (zh) * 2018-05-31 2018-11-06 西安理工大学 减小h.264帧间漂移失真的鲁棒性视频隐写方法
CN109040853A (zh) * 2018-09-04 2018-12-18 国微集团(深圳)有限公司 一种数字流媒体指纹水印保护方法及装置
CN111182365B (zh) * 2020-01-15 2020-10-27 中南民族大学 一种基于视觉敏感块的压缩域视频水印嵌入和提取方法
CN112637605B (zh) * 2020-11-11 2022-01-11 中国科学院信息工程研究所 基于分析cavlc码字和非零dct系数个数的视频隐写分析方法和装置
CN112991476B (zh) * 2021-02-18 2021-09-28 中国科学院自动化研究所 基于深度压缩域特征的场景分类方法、系统及设备
CN117499664B (zh) * 2023-12-29 2024-03-19 南京博润类脑智能技术有限公司 一种基于比特替换的图像数据嵌入和提取方法、装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101489133A (zh) * 2009-01-16 2009-07-22 华中科技大学 一种抗几何攻击的实时视频水印方法
CN101841700A (zh) * 2010-05-18 2010-09-22 宁波大学 一种面向h.264压缩比特流的视频水印方法
CN102547297A (zh) * 2012-02-28 2012-07-04 中国传媒大学 基于dc系数的mpeg2视频水印实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7801326B2 (en) * 2005-12-22 2010-09-21 Thomson Licensing Digital watermark and film mark
CN102132247B (zh) * 2008-08-19 2014-09-10 汤姆森特许公司 传播地图

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101489133A (zh) * 2009-01-16 2009-07-22 华中科技大学 一种抗几何攻击的实时视频水印方法
CN101841700A (zh) * 2010-05-18 2010-09-22 宁波大学 一种面向h.264压缩比特流的视频水印方法
CN102547297A (zh) * 2012-02-28 2012-07-04 中国传媒大学 基于dc系数的mpeg2视频水印实现方法

Also Published As

Publication number Publication date
CN103152578A (zh) 2013-06-12

Similar Documents

Publication Publication Date Title
CN103152578B (zh) 基于混合编解码的h.264视频水印嵌入及提取方法
CN102006475B (zh) 一种视频编解码装置和方法
CN103533458B (zh) 一种视频水印的嵌入和提取方法
CN108028919A (zh) 用于图像与视频编解码中语法元素的上下文建模的方法及装置
CN104038764B (zh) 一种h.264到h.265的视频转码方法及转码器
CN102685500B (zh) 基于信息变长分组结构的h.264大容量信息隐藏方法
CN106559669A (zh) 图像预测的方法及装置
US9883200B2 (en) Method of acquiring neighboring disparity vectors for multi-texture and multi-depth video
CN108965887A (zh) 一种基于块间去耦合的视频信息隐藏方法和装置
CN106101714A (zh) 一种与压缩编码过程紧耦合的h.264视频信息隐藏方法
CN109819260A (zh) 基于多嵌入域融合的视频隐写方法和装置
Galiano et al. Efficient embedding and retrieval of information for high-resolution videos coded with HEVC
CN103237209A (zh) 一种基于区域dct系数的h264视频水印方法
CN102025997A (zh) 隐藏信息的方法和装置、提取隐藏信息的方法和装置
CN100341330C (zh) 音视频混合信号同步压缩中的音频嵌入视频及其提取方法
CN101841722B (zh) 滤波边界强度的检测装置的检测方法
CN104104948B (zh) 视频转码方法及视频转码器
CN108616757A (zh) 一种翻拍后能提取水印的视频水印嵌入与提取方法
CN102065286B (zh) 基于运动矢量的视频水印嵌入和提取方法
Jiang et al. Video watermarking scheme based on MPEG-2 for copyright protection
CN102065287B (zh) T型视频水印嵌入和提取方法
JP2001111973A (ja) 動画像電子透かし装置
Yang et al. An efficient video steganography algorithm based on sub-macroblock partition for H. 264/AVC
CN108391130A (zh) 一种面向多视点视频的形状编码方法
Liu et al. A MPEG-2 video watermarking algorithm with compensation in bit stream

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160518

Termination date: 20210325

CF01 Termination of patent right due to non-payment of annual fee