CN104144347A - 一种基于可逆数据隐藏的h.264/avc视频i帧错误恢复方法 - Google Patents
一种基于可逆数据隐藏的h.264/avc视频i帧错误恢复方法 Download PDFInfo
- Publication number
- CN104144347A CN104144347A CN201410287578.XA CN201410287578A CN104144347A CN 104144347 A CN104144347 A CN 104144347A CN 201410287578 A CN201410287578 A CN 201410287578A CN 104144347 A CN104144347 A CN 104144347A
- Authority
- CN
- China
- Prior art keywords
- current macro
- macro
- macro block
- vector
- characteristic information
- 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.)
- Granted
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其在编码端,先提取宏块的特征向量和确定宏块的宿主向量,然后将上一个宏块的特征向量嵌入到当前的宏块的宿主向量中;在解码端,从嵌有特征信息的I帧中的宏块中提取出特征信息,并确定宏块的编码模式和亮度预测模式,再对非正确解码块进行错误恢复;优点是在编码端,提取的宏块的特征信息由宏块的子块的亮度预测模式或由宏块的编码模式和亮度预测模式确定,能有效恢复存在场景变换时丢失的宏块,并在向宿主向量中嵌入特征向量时,根据上一个宏块的编码模式,采用广义差分扩展的方法进行嵌入,不仅使得嵌入容量可控,而且可以实现提取特征信息后,还原I帧嵌入特征信息前的原始数据。
Description
技术领域
本发明涉及一种视频网络传输过程中的错误复原及隐秘通信技术,尤其是涉及一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法。
背景技术
随着多媒体技术日趋成熟以及用户需求的驱动,无线视频通信得到了越来越多的关注。但是无线通信网络和互联网的传输信道并不可靠,H.264/AVC视频码流在通信信道上传输时,特别是在具有较大噪声干扰的窄带信道或有可能丢包的信道(Internet)上传输时,信道干扰、网络拥塞和路由选择延迟等问题会导致随机比特错误、突发性差错等误码现象的发生。
高效的H.264/AVC视频编码标准对视频码流完整性的依赖较强,一旦发生丢包或误码,对视频质量的影响非常大。这是因为:一方面,H.264/AVC采用可变长编码(VLC,Variable Length Coding)来提高编码效率,但是由于变长编码的每个VLC码字具有不同的长度,因此若其中某些比特位出现错误,则解码器无法正确跳过出错码字,从而使VLC码字失去同步,导致后面的比特流无法正确解码;另一方面,H.264/AVC采用帧内预测、运动估计、运动矢量预测等预测技术,使得后面的数据在编码时要参考前面的数据,如果某部分数据出现错误,则不仅自身不能正确解码,而且其后面的数据也将受到影响,并且这种影响会一直持续到后续多帧。上述情况都将直接地导致视频信息的错误解码,使视频信号的重建质量急剧下降,严重时甚至会导致整个视频通信完全失效。因此,如何降低或者消除传输错误的影响是低码率视频通信应用中一个重要的研究方向。
尽管目前已出现了一些针对H.264/AVC视频的错误恢复方法,例如在解码端利用视频内容相关性进行错误恢复;在编码端和解码端之间建立反馈通道的交互式错误恢复;利用信息隐藏技术,在编码端提取适于错误恢复的特征信息,通过信息隐藏的方式,将特征信息传递给解码端用于错误恢复。其中,基于信息隐藏技术进行错误恢复的方法,由于编码端的信息较解码端丰富、准确,是一种新的处理视频错误恢复的思路。Lin等人引用基于差分扩展的可逆数据隐藏方法来嵌入特征信息,但由于特征信息是像素值,导致嵌入的特征信息比特数非常多,因此使用了多层差分,计算相对复杂。Chen等人提出了一种有效的错误恢复方法,该方法将计算得到的I帧中的每个宏块的运动矢量(Motion vector,MV)作为重要特征数据,采用环路的方式嵌入到同一帧其他宏块中,嵌入方法采用的是奇偶嵌入法,由于嵌入信息后永久性的改变了视频载体原始的量化DCT(Discrete Cosine Transform)系数值,因此在提取信息后,会影响重建的视频质量。Chung等人在此基础上采用直方图平移的可逆信息隐藏方法,将宏块的运动矢量嵌入到值为零的量化DCT系数中,但该方法需要修改很多量化DCT系数,这样不仅会影响视频的不可感知性,而且会增加传输码率。因此,基于信息隐藏技术进行错误恢复的方法在提取有效特征、选择合适的嵌入方法和嵌入位置、提高视频重建质量等方面仍有改善的空间。
发明内容
本发明所要解决的技术问题是提供一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,在存在场景变换时,其提取出的特征信息能高效恢复I帧中丢失的宏块,提升了I帧错误恢复质量,且其在提取出特征信息后,能够还原I帧宏块在嵌入特征信息前的原始数据。
本发明解决上述技术问题所采用的技术方案为:一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其特征在于包括以下步骤:
①在编码端,向I帧中除第1个宏块外的每个宏块中嵌入特征信息,得到嵌有特征信息的I帧,具体过程为:
①-1、将I帧中当前预编码完成的第k个宏块定义为当前宏块,其中,1≤k≤K,在此K表示I帧中包含的宏块的总个数,k的初始值为1;
①-2、将当前宏块的CBP的十进制值转化为由6位二进制值组成的二进制串,并记为A,A=a1a2a3a4a5a6,其中,a1为A的最高位二进制值,a6为A的最低位二进制值;
①-3、提取当前宏块的特征向量:如果当前宏块的编码模式为Intra4×4,则提取当前宏块中编号为0、4、8、12这四个4×4块各自的亮度预测模式的数字标识,然后将这四个4×4块各自的亮度预测模式的数字标识量化为4个比特,之后按这四个4×4块在当前宏块中的编号的顺序将这四个4×4块的亮度预测模式以比特表示的数字标识排列构成一个包含16个元素的一维向量,再将该一维向量作为当前宏块的特征向量,记为 其中,和对应表示当前宏块的特征向量wIntra4×4(k)中的第1个元素、第2个元素和第16个元素;
如果当前宏块的编码模式为Intra16×16,则用数字9标识当前宏块的编码模式,然后将当前宏块的编码模式的数字标识量化为4个比特,并将当前宏块的亮度预测模式的数字标识量化为4个比特,之后按先后顺序将当前宏块的编码模式以比特表示的数字标识和当前宏块的亮度预测模式以比特表示的数字标识排列构成一个包含8个元素的一维向量,再将该一维向量作为当前宏块的特征向量,记为wIntra16×16(k), 其中,和对应表示当前宏块的特征向量wIntra16×16(k)中的第1个元素、第2个元素和第8个元素;
①-4、确定当前宏块的宿主向量:计算当前宏块中的每个4×4块的所有交流DCT系数的绝对值的和,将和值最大的4×4块作为特征信息嵌入块,然后以zig-zag方式扫描特征信息嵌入块中的所有量化DCT系数,之后按zig-zag方式扫描的顺序将特征信息嵌入块中的第8个至第16个量化DCT系数排列构成一个包含9个元素的一维向量,再将该一维向量作为当前宏块的宿主向量,记为x(k),x(k)=(x1x2…x9),其中,x1、x2和x9对应表示当前宏块的宿主向量x(k)中的第1个元素、第2个元素和第9个元素;
①-5、将当前宏块的上一个宏块的特征向量嵌入到当前宏块的宿主向量中:判断当前宏块是否为I帧中的第1个宏块,如果是,则对当前宏块不作处理,直接执行步骤①-7;否则,若当前宏块的上一个宏块的编码模式为Intra4×4,则采用两次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra4×4(k-1)嵌入到当前宏块的宿主向量x(k)中,得到当前宏块对应的嵌有特征信息的向量然后用中的所有元素按序替换当前宏块中的特征信息嵌入块中的第8个至第16个量化DCT系数,再执行步骤①-6;若当前宏块的上一个宏块的编码模式为Intra16×16,则采用一次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra16×16(k-1)嵌入到当前宏块的宿主向量x(k)中,得到当前宏块对应的嵌有特征信息的向量然后用中的所有元素按序替换当前宏块中的特征信息嵌入块中的第8个至第16个量化DCT系数,再执行步骤①-6;
①-6、修改当前宏块的CBP,然后执行步骤①-7;
①-7、对当前宏块进行熵编码;
①-8、令k=k+1,将I帧中下一个预编码完成的宏块作为当前宏块,再返回步骤①-2继续执行,直至I帧中的所有预编码完成的宏块处理完毕,得到嵌有特征信息的I帧的编码码流,其中,k=k+1中的“=”为赋值符号;
②在解码端,从嵌有特征信息的I帧中的每个宏块中提取出特征信息,并确定每个宏块的编码模式和亮度预测模式,再对非正确解码块进行错误恢复,具体过程为:
②-1、对嵌有特征信息的I帧中的每个宏块进行熵解码,然后确定熵解码后的每个宏块是否为正确解码块,接着确定除熵解码后的第1个宏块外的每个正确解码块的包含有特征信息的向量,再从除熵解码后的第1个宏块外的每个正确解码块的包含有特征信息的向量中提取出特征信息,并确定除熵解码后的第1个宏块外的每个正确解码块的上一个宏块的编码模式和亮度预测模式,假设熵解码后的第k'个宏块为正确解码块,则
确定该宏块的包含有特征信息的向量的具体过程为:计算该宏块中的每个4×4块的所有经反量化后为交流DCT系数的量化DCT系数的绝对值的和,将和值最大的4×4块作为特征信息提取块,然后以zig-zag方式扫描特征信息提取块中的所有量化DCT系数,之后按zig-zag方式扫描的顺序将特征信息提取块中的第8个至第16个量化DCT系数排列构成一个包含9个元素的一维向量,再将该一维向量作为该宏块的包含有特征信息的向量,记为 其中,和对应表示中的第1个元素、第2个元素和第9个元素;
从该宏块的包含有特征信息的向量中提取出特征信息,并确定该宏块的上一个宏块的编码模式和亮度预测模式;
上述,2≤k'≤K;
②-2、将解码后的I帧中的第k个宏块定义为当前宏块,其中,1≤k≤K,k的初始值为1;
②-3、判断当前宏块是否为解码后的I帧中的最后一个宏块,如果当前宏块不是最后一个宏块,则执行步骤②-4,如果当前宏块是最后一个宏块,则执行步骤②-5;
②-4、判断当前宏块为正确解码块还是为非正确解码块,如果当前宏块为正确解码块,则对当前宏块不作处理,然后执行步骤②-6;
如果当前宏块为非正确解码块,则判断当前宏块的下一个宏块为正确解码块还是为非正确解码块,如果当前宏块的下一个宏块为正确解码块,则利用当前宏块的编码模式和亮度预测模式恢复当前宏块,然后执行步骤②-6;如果当前宏块的下一个宏块为非正确解码块,则采用双线性内插法恢复当前宏块;
②-5、判断当前宏块为正确解码块还是为非正确解码块,如果当前宏块为正确解码块,则对当前宏块不作处理,至此完成解码后的I帧中的所有非正确解码块的恢复;如果当前宏块为非正确解码块,则采用双线性内插法恢复当前宏块,至此完成解码后的I帧中的所有非正确解码块的恢复;
②-6、令k=k+1,将解码后的I帧中的下一个待处理的宏块作为当前宏块,然后返回步骤②-3继续执行,其中,k=k+1中的“=”为赋值符号。
所述的步骤①-5中采用两次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra4×4(k-1)嵌入到当前宏块的宿主向量x(k)中的具体过程为:
A1、对x(k)进行正变换,得到向量y(k),y(k)=(y1y2…y9),其中,y1、y2和y9对应表示y(k)中的第1个元素、第2个元素和第9个元素,y2=x2-x1,yi'=xi'-x1,y9=x9-x1,2≤i'≤9,αi为权值,符号为向下取整符号;
A2、将wIntra4×4(k-1)中的第1个元素至第8个元素嵌入到y(k)中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9,和对应表示wIntra4×4(k-1)中的第1个元素、第i'-1个元素和第8个元素;
A3、对进行逆变换,得到嵌有部分特征信息的向量其中,和对应表示中的第1个元素、第2个元素和第9个元素,
2≤i'≤9;
A4、对进行正变换,得到向量其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值;
A5、将wIntra4×4(k-1)中的第9个元素至第16个元素嵌入到中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,和对应表示wIntra4×4(k-1)中的第9个元素、第i'+7个元素和第16个元素;
A6、对进行逆变换,得到当前宏块对应的嵌有特征信息的向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9。
所述的步骤①-5中采用一次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra16×16(k-1)嵌入到当前宏块的宿主向量x(k)中的具体过程为:
B1、对x(k)进行正变换,得到向量y(k),y(k)=(y1y2…y9),其中,y1、y2和y9对应表示y(k)中的第1个元素、第2个元素和第9个元素,yi'=xi'-x1,y9=x9-x1,2≤i'≤9,αi为权值,符号为向下取整符号;
B2、将wIntra16×16(k-1)嵌入到y(k)中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,和对应表示wIntra16×16(k-1)中的第1个元素、第i'-1个元素和第8个元素;
B3、对进行逆变换,得到当前宏块对应的嵌有特征信息的向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9。
所述的步骤①-6中修改当前宏块的CBP的具体过程为:
①-6a、如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中左上角位置的8×8块,则统计当前宏块嵌入特征信息后左上角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a6置为0,a3,a4,a5保持不变,如果不全为0,则将A中的a6置为1,a3,a4,a5保持不变;
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中右上角位置的8×8块,则统计当前宏块嵌入特征信息后右上角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a5置为0,a3,a4,a6保持不变,如果不全为0,则将A中的a5置为1,a3,a4,a6保持不变;
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中左下角位置的8×8块,则统计当前宏块嵌入特征信息后左下角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a4置为0,a3,a5,a6保持不变,如果不全为0,则将A中的a4置为1,a3,a5,a6保持不变;
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中右下角位置的8×8块,则统计当前宏块嵌入特征信息后右下角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a3置为0,a4,a5,a6保持不变,如果不全为0,则将A中的a3置为1,a4,a5,a6保持不变;
①-6b、将修改后的A转化成十进制数,得到当前宏块修改后的CBP。
所述的步骤②-1中从该宏块的包含有特征信息的向量中提取出特征信息,并确定该宏块的上一个宏块的编码模式和亮度预测模式的具体过程为:
②-1a、对进行正变换,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值,符号为向下取整符号;
②-1b、从中提取出由8个特征信息比特组成的特征信息,记为 其中,和对应表示中的第1个元素、第2个元素和第8个元素, 1≤j≤8,符号“||”为取绝对值运算符号;
②-1c、构建一个新的向量z(k'),z(k')=(z1z2…z9),其中,z1、z2和z9对应表示z(k')中的第1个元素、第2个元素和第9个元素, 2≤i'≤9;
②-1d、对z(k')进行逆变换,得到向量f(k'),f(k')=(f1f2…f9),其中,f1、f2和f9对应表示f(k')中的第1个元素、第2个元素和第9个元素,f2=z2+f1,fi'=zi'+f1,f9=z9+f1,2≤i'≤9;
②-1e、将由中的第1个元素第2个元素第3个元素和第4个元素组成的二进制串转化为十进制值,如果十进制值对应数字9,则表示该宏块的上一个宏块的编码模式为Intra16×16,然后用f(k')中的所有元素按序替换该宏块的上一个宏块中的特征信息提取块中的第8个至第16个量化DCT系数,接着确定该宏块的上一个宏块的亮度预测模式,该宏块的上一个宏块的亮度预测模式的数字标识为由中的第5个元素第6个元素第7个元素和第8个元素组成的二进制串转化而成的十进制值,结束特征信息提取及编码模式和亮度预测模式确定;
如果十进制值不对应数字9,则表示该宏块的上一个宏块的编码模式为Intra4×4,然后执行步骤②-1f;
②-1f、对f(k')进行正变换,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值,符号为向下取整符号;
②-1g、从中提取出由8个特征信息比特组成的特征信息,记为 其中,和对应表示中的第1个元素、第2个元素和第8个元素,1≤j≤8,符号“||”为取绝对值运算符号;
②-1h、构建一个新的向量z'(k'),z'(k')=(z1'z2'…z9'),其中,z1'、z2'和z9'对应表示z'(k')中的第1个元素、第2个元素和第9个元素, 2≤i'≤9;
②-1i、对z'(k')进行逆变换,得到向量x(k'),x(k')=(x1x2…x9),其中,x1、x2和x9对应表示x(k')中的第1个元素、第2个元素和第9个元素,x2=z2'+x1,xi'=zi''+x1,x9=z9'+x1,2≤i'≤9;
②-1j、用x(k')中的所有元素按序替换该宏块的上一个宏块中的特征信息提取块中的第8个至第16个量化DCT系数;
②-1k、构建一个包含16个元素的向量w(k'),w(k')的前8个元素为的8个元素,w(k')的后8个元素为的8个元素;
②-1l、确定该宏块的上一个宏块中编号为0的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第1个元素、第2个元素、第3个元素和第4个元素组成的二进制串转化而成的十进制值;
确定该宏块的上一个宏块中编号为4的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第5个元素、第6个元素、第7个元素和第8个元素组成的二进制串转化而成的十进制值;
确定该宏块的上一个宏块中编号为8的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第9个元素、第10个元素、第11个元素和第12个元素组成的二进制串转化而成的十进制值;
确定该宏块的上一个宏块中编号为12的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第13个元素、第14个元素、第15个元素和第16个元素组成的二进制串转化而成的十进制值;
结束特征信息提取及编码模式和亮度预测模式确定。
所述的步骤②-4中利用当前宏块的编码模式和亮度预测模式恢复当前宏块的具体过程为:
②-4a、如果当前宏块的编码模式为Intra16×16,则利用当前宏块的亮度预测模式对当前宏块中的每个像素点的像素值进行预测,然后将当前宏块中的每个像素点的预测值作为对应像素点的最终恢复的像素值,完成当前宏块的恢复;
②-4b、如果当前宏块的编码模式为Intra4×4,则利用当前宏块中编号为0的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值;
利用当前宏块中编号为4的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值;
利用当前宏块中编号为8的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值;
利用当前宏块中编号为12的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值。
与现有技术相比,本发明的优点在于:
1)在编码端,提取的宏块的特征信息由宏块(编码模式为Intra4×4)的子块的亮度预测模式确定或由宏块(编码模式为Intra16×16)的编码模式和亮度预测模式确定,不仅提取方便,而且能有效恢复存在场景变换时丢失的宏块,从而提升了I帧错误恢复质量。
2)在编码端,在向宿主向量中嵌入特征向量时,根据当前处理的宏块的上一个宏块的编码模式,采用两次广义差分扩展的方法或一次广义差分扩展的方法进行嵌入,广义差分扩展方法不仅使得嵌入容量可控,而且可以实现提取特征信息后,还原I帧嵌入特征信息前的原始数据。
3)本发明方法采用的广义差分扩展方法的差分对象为量化DCT系数,对其差分不存在溢出的情况,计算复杂度大大降低。
4)本发明方法借助信息隐藏技术进行I帧错误恢复,充分利用编码端的信息,相比仅在解码端进行错误隐藏,可利用的视频资源更丰富、准确,灵活性更高。
附图说明
图1为本发明方法的总体实现框图;
图2为一个宏块中的16个4×4块的编号示意图;
图3a为编码量化参数QP=28时,Foreman标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图3b为编码量化参数QP=28时,Carphone标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图3c为编码量化参数QP=28时,Container标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图3d为编码量化参数QP=28时,Akyio标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图3e为编码量化参数QP=28时,Silent标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图3f为编码量化参数QP=28时,Mobile标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图4a为编码量化参数QP=38时,Foreman标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图4b为编码量化参数QP=38时,Carphone标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图4c为编码量化参数QP=38时,Container标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图4d为编码量化参数QP=38时,Akyio标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图4e为编码量化参数QP=38时,Silent标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图4f为编码量化参数QP=38时,Mobile标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图5a为Carphone标准测试序列的第20帧(I帧)的原图;
图5b为图5a丢块后的图(丢块率为20%);
图5c为采用现有的JM方法对图5b进行恢复后的图;
图5d为采用现有的RH方法对图5b进行恢复后的图;
图5e为采用本发明方法对图5b进行恢复后的图;
图6a为编码量化参数QP=28时,合成序列的前150帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图6b为编码量化参数QP=38时,合成序列的前150帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图;
图7a为合成序列的第29帧的原图;
图7b为合成序列的第30帧(I帧)的原图;
图7c为图7b所示的图像丢块后的图(丢块率为20%);
图7d为采用现有的JM方法对图7c进行恢复后的主观质量图;
图7e为采用现有的RH方法对图7c进行恢复后的主观质量图;
图7f为采用本发明方法对图7c进行恢复后的主观质量图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
本发明提出的一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其总体实现框图如图1所示,其包括以下步骤:
①在编码端,向I帧中除第1个宏块外的每个宏块中嵌入特征信息,得到嵌有特征信息的I帧,具体过程为:
①-1、将I帧中当前预编码完成的第k个宏块定义为当前宏块,其中,1≤k≤K,在此K表示I帧中包含的宏块的总个数,k的初始值为1。
①-2、将当前宏块的CBP的十进制值转化为由6位二进制值组成的二进制串,并记为A,A=a1a2a3a4a5a6,其中,a1为A的最高位二进制值,a6为A的最低位二进制值。
宏块的CBP对应的二进制串的高两位用于代表色度,低四位用于代表亮度;a6代表宏块的左上角位置的8×8块的量化DCT系数的统计情况,如果a6为0,则表示该8×8块中的4个4×4块的量化DCT系数全部为0,如果a6为1,则表示该8×8块中的4个4×4块的量化DCT系数不全部为0;a5代表宏块的右上角位置的8×8块的量化DCT系数的统计情况,a4代表宏块的左下角位置的8×8块的量化DCT系数的统计情况,a3代表宏块的右下角位置的8×8块的量化DCT系数的统计情况。
①-3、提取当前宏块的特征向量:如果当前宏块的编码模式为Intra4×4,则提取当前宏块中编号为0、4、8、12(如图2所示)这四个4×4块各自的亮度预测模式的数字标识,然后将这四个4×4块各自的亮度预测模式的数字标识量化为4个比特,之后按这四个4×4块在当前宏块中的编号的顺序将这四个4×4块的亮度预测模式以比特表示的数字标识排列构成一个包含16个元素的一维向量,再将该一维向量作为当前宏块的特征向量,记为 其中,和对应表示当前宏块的特征向量wIntra4×4(k)中的第1个元素、第2个元素和第16个元素。
如果当前宏块的编码模式为Intra16×16,则用数字9标识当前宏块的编码模式,然后将当前宏块的编码模式的数字标识量化为4个比特,并将当前宏块的亮度预测模式的数字标识量化为4个比特,之后按先后顺序将当前宏块的编码模式以比特表示的数字标识和当前宏块的亮度预测模式以比特表示的数字标识排列构成一个包含8个元素的一维向量,再将该一维向量作为当前宏块的特征向量,记为wIntra16×16(k), 其中,和对应表示当前宏块的特征向量wIntra16×16(k)中的第1个元素、第2个元素和第8个元素。
在H.264/AVC视频中,编码模式为Intra4×4的宏块中的4×4块的亮度预测模式共有9种,分别用数字标识0~8来表示;编码模式为Intra16×16的宏块的亮度预测模式共有4种,分别用数字标识0~3来表示。
①-4、确定当前宏块的宿主向量:计算当前宏块中的每个4×4块的所有交流DCT系数的绝对值的和,将和值最大的4×4块作为特征信息嵌入块,然后以zig-zag方式扫描特征信息嵌入块中的所有量化DCT系数,之后按zig-zag方式扫描的顺序将特征信息嵌入块中的第8个至第16个量化DCT系数(位于zig-zag扫描中第8个至第16个量化DCT系数为中高频量化DCT系数)排列构成一个包含9个元素的一维向量,再将该一维向量作为当前宏块的宿主向量,记为x(k),x(k)=(x1x2…x9),其中,x1、x2和x9对应表示当前宏块的宿主向量x(k)中的第1个元素、第2个元素和第9个元素。
①-5、将当前宏块的上一个宏块的特征向量嵌入到当前宏块的宿主向量中:判断当前宏块是否为I帧中的第1个宏块,如果是,则对当前宏块不作处理,直接执行步骤①-7;否则,若当前宏块的上一个宏块的编码模式为Intra4×4,则采用两次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra4×4(k-1)嵌入到当前宏块的宿主向量x(k)中,得到当前宏块对应的嵌有特征信息的向量然后用中的所有元素按序替换当前宏块中的特征信息嵌入块中的第8个至第16个量化DCT系数,再执行步骤①-6;若当前宏块的上一个宏块的编码模式为Intra16×16,则采用一次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra16×16(k-1)嵌入到当前宏块的宿主向量x(k)中,得到当前宏块对应的嵌有特征信息的向量然后用中的所有元素按序替换当前宏块中的特征信息嵌入块中的第8个至第16个量化DCT系数,再执行步骤①-6。
在此具体实施例中,步骤①-5中采用两次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra4×4(k-1)嵌入到当前宏块的宿主向量x(k)中的具体过程为:
A1、对x(k)进行正变换,得到向量y(k),y(k)=(y1y2…y9),其中,y1、y2和y9对应表示y(k)中的第1个元素、第2个元素和第9个元素,y2=x2-x1,yi'=xi'-x1,y9=x9-x1,2≤i'≤9,αi为权值,在具体实施时取αi=1,符号为向下取整符号。
A2、将wIntra4×4(k-1)中的第1个元素至第8个元素嵌入到y(k)中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9,和对应表示wIntra4×4(k-1)中的第1个元素、第i'-1个元素和第8个元素。
A3、对进行逆变换,得到嵌有部分特征信息的向量其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9。
A4、对进行正变换,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值。
A5、将wIntra4×4(k-1)中的第9个元素至第16个元素嵌入到中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,和对应表示wIntra4×4(k-1)中的第9个元素、第i'+7个元素和第16个元素。
A6、对进行逆变换,得到当前宏块对应的嵌有特征信息的向量完成将当前宏块的上一个宏块的特征向量wIntra4×4(k-1)嵌入到当前宏块的宿主向量x(k)中,其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9。
在此具体实施例中,步骤①-5中采用一次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra16×16(k-1)嵌入到当前宏块的宿主向量x(k)中的具体过程为:
B1、对x(k)进行正变换,得到向量y(k),y(k)=(y1y2…y9),其中,y1、y2和y9对应表示y(k)中的第1个元素、第2个元素和第9个元素,yi'=xi'-x1,y9=x9-x1,2≤i'≤9,αi为权值,在具体实施时取αi=1,符号为向下取整符号。
B2、将wIntra16×16(k-1)嵌入到y(k)中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,和对应表示wIntra16×16(k-1)中的第1个元素、第i'-1个元素和第8个元素。
B3、对进行逆变换,得到当前宏块对应的嵌有特征信息的向量完成将当前宏块的上一个宏块的特征向量wIntra16×16(k-1)嵌入到当前宏块的宿主向量x(k)中,其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9。
①-6、修改当前宏块的CBP(CodedBlockPattern),然后执行步骤①-7。
在此具体实施例中,步骤①-6中修改当前宏块的CBP的具体过程为:
①-6a、如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中左上角位置的8×8块,则统计当前宏块嵌入特征信息后左上角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a6置为0,a3,a4,a5保持不变,如果不全为0,则将A中的a6置为1,a3,a4,a5保持不变。
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中右上角位置的8×8块,则统计当前宏块嵌入特征信息后右上角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a5置为0,a3,a4,a6保持不变,如果不全为0,则将A中的a5置为1,a3,a4,a6保持不变。
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中左下角位置的8×8块,则统计当前宏块嵌入特征信息后左下角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a4置为0,a3,a5,a6保持不变,如果不全为0,则将A中的a4置为1,a3,a5,a6保持不变。
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中右下角位置的8×8块,则统计当前宏块嵌入特征信息后右下角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a3置为0,a4,a5,a6保持不变,如果不全为0,则将A中的a3置为1,a4,a5,a6保持不变。
①-6b、将修改后的A转化成十进制数,得到当前宏块修改后的CBP。
①-7、对当前宏块进行熵编码;在具体实施时可采用现有的基于上下文自适应的可变长编码(CAVLC)技术对当前宏块进行熵编码。
①-8、令k=k+1,将I帧中下一个预编码完成的宏块作为当前宏块,再返回步骤①-2继续执行,直至I帧中的所有预编码完成的宏块处理完毕,得到嵌有特征信息的I帧的编码码流,其中,k=k+1中的“=”为赋值符号。
②在解码端,从嵌有特征信息的I帧中的每个宏块中提取出特征信息,并确定每个宏块的编码模式和亮度预测模式,再对非正确解码块进行错误恢复,具体过程为:
②-1、对嵌有特征信息的I帧中的每个宏块进行熵解码,然后确定熵解码后的每个宏块是否为正确解码块,接着确定除熵解码后的第1个宏块外(第1个宏块可能是正确解码块也可能是非正确解码块,而此处对第1个宏块不作处理)的每个正确解码块的包含有特征信息的向量,再从除熵解码后的第1个宏块外的每个正确解码块的包含有特征信息的向量中提取出特征信息,并确定除熵解码后的第1个宏块外的每个正确解码块的上一个宏块的编码模式和亮度预测模式,假设熵解码后的第k'个宏块为正确解码块,则
确定该宏块的包含有特征信息的向量的具体过程为:计算该宏块中的每个4×4块的所有经反量化后为交流DCT系数的量化DCT系数的绝对值的和,即计算该宏块中的每个4×4块的部分量化DCT系数的绝对值的和,此处部分量化DCT系数中的每个量化DCT系数经反量化后为交流DCT系数,将和值最大的4×4块作为特征信息提取块,然后以zig-zag方式扫描特征信息提取块中的所有量化DCT系数,之后按zig-zag方式扫描的顺序将特征信息提取块中的第8个至第16个量化DCT系数(位于zig-zag扫描中第8个至第16个量化DCT系数为中高频量化DCT系数)排列构成一个包含9个元素的一维向量,再将该一维向量作为该宏块的包含有特征信息的向量,记为 其中,和对应表示中的第1个元素、第2个元素和第9个元素。
从该宏块的包含有特征信息的向量中提取出特征信息,并确定该宏块的上一个宏块的编码模式和亮度预测模式。
在此具体实施例中,步骤②-1中从该宏块的包含有特征信息的向量中提取出特征信息,并确定该宏块的上一个宏块的编码模式和亮度预测模式的具体过程为:
②-1a、对进行正变换,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值,在具体实施时取αi=1,符号为向下取整符号。
②-1b、从中提取出由8个特征信息比特组成的特征信息,记为 其中,和对应表示中的第1个元素、第2个元素和第8个元素, 1≤j≤8,符号“||”为取绝对值运算符号。
②-1c、构建一个新的向量z(k'),z(k')=(z1z2…z9),其中,z1、z2和z9对应表示z(k')中的第1个元素、第2个元素和第9个元素, 2≤i'≤9。
②-1d、对z(k')进行逆变换,得到向量f(k'),f(k')=(f1f2…f9),其中,f1、f2和f9对应表示f(k')中的第1个元素、第2个元素和第9个元素,f2=z2+f1,fi'=zi'+f1,f9=z9+f1,2≤i'≤9。
②-1e、将由中的第1个元素第2个元素第3个元素和第4个元素组成的二进制串转化为十进制值,如果十进制值对应数字9,则表示该宏块的上一个宏块的编码模式为Intra16×16,然后用f(k')中的所有元素按序替换该宏块的上一个宏块中的特征信息提取块中的第8个至第16个量化DCT系数,即恢复原始的量化DCT系数,接着确定该宏块的上一个宏块的亮度预测模式,该宏块的上一个宏块的亮度预测模式的数字标识为由中的第5个元素第6个元素第7个元素和第8个元素组成的二进制串转化而成的十进制值,结束特征信息提取及编码模式和亮度预测模式确定。
如果十进制值不对应数字9,则表示该宏块的上一个宏块的编码模式为Intra4×4,然后执行步骤②-1f。
②-1f、对f(k')进行正变换,得到向量其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值,在具体实施时取αi=1,符号为向下取整符号。
②-1g、从中提取出由8个特征信息比特组成的特征信息,记为 其中,和对应表示中的第1个元素、第2个元素和第8个元素, 1≤j≤8,符号“||”为取绝对值运算符号。
②-1h、构建一个新的向量z'(k'),z'(k')=(z1'z2'…z9'),其中,z1'、z2'和z9'对应表示z'(k')中的第1个元素、第2个元素和第9个元素, 2≤i'≤9。
②-1i、对z'(k')进行逆变换,得到向量x(k'),x(k')=(x1x2…x9),其中,x1、x2和x9对应表示x(k')中的第1个元素、第2个元素和第9个元素,x2=z2'+x1,xi'=zi''+x1,x9=z9'+x1,2≤i'≤9。
②-1j、用x(k')中的所有元素按序替换该宏块的上一个宏块中的特征信息提取块中的第8个至第16个量化DCT系数,即恢复原始的量化DCT系数。
②-1k、构建一个包含16个元素的向量w(k'),w(k')的前8个元素为的8个元素,w(k')的后8个元素为的8个元素。
②-1l、确定该宏块的上一个宏块中编号为0的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第1个元素、第2个元素、第3个元素和第4个元素组成的二进制串转化而成的十进制值。
确定该宏块的上一个宏块中编号为4的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第5个元素、第6个元素、第7个元素和第8个元素组成的二进制串转化而成的十进制值。
确定该宏块的上一个宏块中编号为8的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第9个元素、第10个元素、第11个元素和第12个元素组成的二进制串转化而成的十进制值。
确定该宏块的上一个宏块中编号为12的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第13个元素、第14个元素、第15个元素和第16个元素组成的二进制串转化而成的十进制值。
结束特征信息提取及编码模式和亮度预测模式确定。
上述,2≤k'≤K。
在具体实施时可采用现有的CAVLC熵解码技术对嵌有特征信息的I帧中的每个宏块进行熵解码;确定熵解码后的每个宏块是否为正确解码块直接采用现有技术。
②-2、将解码后的I帧中的第k个宏块定义为当前宏块,其中,1≤k≤K,k的初始值为1。
②-3、判断当前宏块是否为解码后的I帧中的最后一个宏块,如果当前宏块不是最后一个宏块,则执行步骤②-4,如果当前宏块是最后一个宏块,则执行步骤②-5。
②-4、判断当前宏块为正确解码块还是为非正确解码块,如果当前宏块为正确解码块,则对当前宏块不作处理,然后执行步骤②-6。
如果当前宏块为非正确解码块,则判断当前宏块的下一个宏块为正确解码块还是为非正确解码块,如果当前宏块的下一个宏块为正确解码块,则利用当前宏块的编码模式和亮度预测模式恢复当前宏块,然后执行步骤②-6;如果当前宏块的下一个宏块为非正确解码块,则采用现有的双线性内插法恢复当前宏块。
在此具体实施例中,步骤②-4中利用当前宏块的编码模式和亮度预测模式恢复当前宏块的具体过程为:
②-4a、如果当前宏块的编码模式为Intra16×16,则利用当前宏块的亮度预测模式对当前宏块中的每个像素点的像素值进行预测,然后将当前宏块中的每个像素点的预测值作为对应像素点的最终恢复的像素值,完成当前宏块的恢复。
②-4b、如果当前宏块的编码模式为Intra4×4,则利用当前宏块中编号为0的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值。
利用当前宏块中编号为4的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值。
利用当前宏块中编号为8的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值。
利用当前宏块中编号为12的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值。
②-5、判断当前宏块为正确解码块还是为非正确解码块,如果当前宏块为正确解码块,则对当前宏块不作处理,至此完成解码后的I帧中的所有非正确解码块的恢复;如果当前宏块为非正确解码块,则采用现有的双线性内插法恢复当前宏块,至此完成解码后的I帧中的所有非正确解码块的恢复。
②-6、令k=k+1,将解码后的I帧中的下一个待处理的宏块作为当前宏块,然后返回步骤②-3继续执行,其中,k=k+1中的“=”为赋值符号。
本发明方法选择在H.264/AVC的测试模型JM-12.0上进行仿真实验。仿真中采用H.264/AVC基本档次对标准QCIF格式(176×144)视频序列Foreman、Carphone、Container、Akyio、Silent和Mobile进行编码测试。为了验证本发明方法对存在场景变化的有效性,采用由Akiyo、Bridge-close、Carphone合成的混合序列来模拟存在场景变化情况。两组测试实验分别在丢失率为10%、20%时,将本发明方法与现有的测试模型JM-12.0自带的帧内恢复方法(JM方法)和现有的Chung等人提出的基于直方图平移可逆信息隐藏的错误恢复算法(RH方法)做了对比实验。表1给出了设置的一些基本的编码参数。
表1 编码参数设置
档次 | 基本档次 |
编码结构 | IPPPP |
编码帧数 | 150 |
帧率(帧/秒) | 15 |
熵编码方式 | CAVLC |
为了验证本发明方法的错误恢复效果,特别是存在场景变化情况时视频错误恢复的质量,做了两组实验。一组是对标准的视频测试序列Foreman、Carphone、Container、Akyio、Silent和Mobile进行编码,在丢包率分别为10%、20%时测试实验,对比采用本发明方法与现有的JM方法和RH方法处理后的I帧图像的主客观质量;另一组是模拟存在场景变换的情况,即采用合成的序列进行编码测试,同样是在丢包率分别为10%、20%时测试实验,对比采用本发明方法与现有的JM方法和RH方法处理后的I帧图像的主客观质量。
图3a至图3f分别给出了编码量化参数QP=28时,Foreman、Carphone、Container、Akyio、Silent和Mobile标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图。从图3a至图3f中可以看出,在丢失率为10%、20%时,采用本发明方法的错误恢复客观质量均高于采用现有的JM方法的错误恢复客观质量,分别平均高出3.24dB、2.79dB。
图4a至图4f分别给出了编码量化参数QP=38时,Foreman、Carphone、Container、Akyio、Silent和Mobile标准测试序列的I帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图。
图5a给出了Carphone标准测试序列的第20帧(I帧)的原图,图5b给出了图5a丢块后的图(丢块率为20%),图5c给出了采用现有的JM方法对图5b进行恢复后的图,图5d给出了采用现有的RH方法对图5b进行恢复后的图,图5e给出了采用本发明方法对图5b进行恢复后的图。从图5c至图5e中可以看出,采用JM平台使用的加权内插法容易使丢失宏块图像模糊,采用RH方法恢复的图容易产生块效应,相比之下,采用本发明方法可以较好地恢复图像的边缘和纹理,避免块效应,主观质量明显好于现有的JM方法和RH方法。
图6a和图6b分别给出了编码量化参数QP=28和QP=38时,由Akiyo、Carphone、Bridge-close三个标准测试序列以30帧为间隔合成的合成序列的前150帧在不同宏块丢失率下,采用本发明方法与现有的JM方法和RH方法处理后的错误恢复客观质量比较示意图。从图6a和图6b中可以看出,存在场景变化时,采用本发明方法的客观恢复质量明显高于采用现有的JM方法和RH方法。在QP=28、宏块丢失率为10%时,采用本发明方法的客观恢复质量高出采用现有的JM方法的客观恢复质量2.14dB;在QP=28、宏块丢失率为20%时,采用本发明方法的客观恢复质量高出采用现有的JM方法的客观恢复质量0.93dB。与现有的RH方法相比,采用本发明方法的客观恢复质量平均高出大约1dB,这是因为采用RH方法,其特征是两个I帧宏块的运动矢量,这样存在场景变换时,RH方法会将前面的I帧的场景图像块,错误地引入到当前帧,不可避免的造成PSNR值下降,影响重建质量。
图7a给出了合成序列的第29帧的原图,图7b给出了合成序列的第30帧(I帧)的原图,图7c给出了合成序列的第30帧的丢块后的图(丢块率为20%),图7d给出了采用现有的JM方法对图7c进行恢复后的主观质量图,图7e给出了采用现有的RH方法对图7c进行恢复后的主观质量图,图7f给出了采用本发明方法对图7c进行恢复后的主观质量图。从图7d至图7f所示的主观质量图中不难发现,本发明方法在存在场景变换时,可以保证重建质量以缓和的方式下降,避免产生块效应和图像模糊等。综合上述,对仿真结果分析发现:在存在场景变换时,利用本发明方法重建的视频的客观质量和主观质量明显好于利用现有的JM方法和RH方法重建的视频的客观质量和主观质量;在不存在场景变换时,本发明方法同样取得了很好的效果。
Claims (6)
1.一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其特征在于包括以下步骤:
①在编码端,向I帧中除第1个宏块外的每个宏块中嵌入特征信息,得到嵌有特征信息的I帧,具体过程为:
①-1、将I帧中当前预编码完成的第k个宏块定义为当前宏块,其中,1≤k≤K,在此K表示I帧中包含的宏块的总个数,k的初始值为1;
①-2、将当前宏块的CBP的十进制值转化为由6位二进制值组成的二进制串,并记为A,A=a1a2a3a4a5a6,其中,a1为A的最高位二进制值,a6为A的最低位二进制值;
①-3、提取当前宏块的特征向量:如果当前宏块的编码模式为Intra4×4,则提取当前宏块中编号为0、4、8、12这四个4×4块各自的亮度预测模式的数字标识,然后将这四个4×4块各自的亮度预测模式的数字标识量化为4个比特,之后按这四个4×4块在当前宏块中的编号的顺序将这四个4×4块的亮度预测模式以比特表示的数字标识排列构成一个包含16个元素的一维向量,再将该一维向量作为当前宏块的特征向量,记为wIntra4×4(k), 其中,和对应表示当前宏块的特征向量wIntra4×4(k)中的第1个元素、第2个元素和第16个元素;
如果当前宏块的编码模式为Intra16×16,则用数字9标识当前宏块的编码模式,然后将当前宏块的编码模式的数字标识量化为4个比特,并将当前宏块的亮度预测模式的数字标识量化为4个比特,之后按先后顺序将当前宏块的编码模式以比特表示的数字标识和当前宏块的亮度预测模式以比特表示的数字标识排列构成一个包含8个元素的一维向量,再将该一维向量作为当前宏块的特征向量,记为wIntra16×16(k), 其中,和对应表示当前宏块的特征向量wIntra16×16(k)中的第1个元素、第2个元素和第8个元素;
①-4、确定当前宏块的宿主向量:计算当前宏块中的每个4×4块的所有交流DCT系数的绝对值的和,将和值最大的4×4块作为特征信息嵌入块,然后以zig-zag方式扫描特征信息嵌入块中的所有量化DCT系数,之后按zig-zag方式扫描的顺序将特征信息嵌入块中的第8个至第16个量化DCT系数排列构成一个包含9个元素的一维向量,再将该一维向量作为当前宏块的宿主向量,记为x(k),x(k)=(x1x2…x9),其中,x1、x2和x9对应表示当前宏块的宿主向量x(k)中的第1个元素、第2个元素和第9个元素;
①-5、将当前宏块的上一个宏块的特征向量嵌入到当前宏块的宿主向量中:判断当前宏块是否为I帧中的第1个宏块,如果是,则对当前宏块不作处理,直接执行步骤①-7;否则,若当前宏块的上一个宏块的编码模式为Intra4×4,则采用两次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra4×4(k-1)嵌入到当前宏块的宿主向量x(k)中,得到当前宏块对应的嵌有特征信息的向量然后用中的所有元素按序替换当前宏块中的特征信息嵌入块中的第8个至第16个量化DCT系数,再执行步骤①-6;若当前宏块的上一个宏块的编码模式为Intra16×16,则采用一次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra16×16(k-1)嵌入到当前宏块的宿主向量x(k)中,得到当前宏块对应的嵌有特征信息的向量然后用中的所有元素按序替换当前宏块中的特征信息嵌入块中的第8个至第16个量化DCT系数,再执行步骤①-6;
①-6、修改当前宏块的CBP,然后执行步骤①-7;
①-7、对当前宏块进行熵编码;
①-8、令k=k+1,将I帧中下一个预编码完成的宏块作为当前宏块,再返回步骤①-2继续执行,直至I帧中的所有预编码完成的宏块处理完毕,得到嵌有特征信息的I帧的编码码流,其中,k=k+1中的“=”为赋值符号;
②在解码端,从嵌有特征信息的I帧中的每个宏块中提取出特征信息,并确定每个宏块的编码模式和亮度预测模式,再对非正确解码块进行错误恢复,具体过程为:
②-1、对嵌有特征信息的I帧中的每个宏块进行熵解码,然后确定熵解码后的每个宏块是否为正确解码块,接着确定除熵解码后的第1个宏块外的每个正确解码块的包含有特征信息的向量,再从除熵解码后的第1个宏块外的每个正确解码块的包含有特征信息的向量中提取出特征信息,并确定除熵解码后的第1个宏块外的每个正确解码块的上一个宏块的编码模式和亮度预测模式,假设熵解码后的第k'个宏块为正确解码块,则
确定该宏块的包含有特征信息的向量的具体过程为:计算该宏块中的每个4×4块的所有经反量化后为交流DCT系数的量化DCT系数的绝对值的和,将和值最大的4×4块作为特征信息提取块,然后以zig-zag方式扫描特征信息提取块中的所有量化DCT系数,之后按zig-zag方式扫描的顺序将特征信息提取块中的第8个至第16个量化DCT系数排列构成一个包含9个元素的一维向量,再将该一维向量作为该宏块的包含有特征信息的向量,记为 其中,和对应表示中的第1个元素、第2个元素和第9个元素;
从该宏块的包含有特征信息的向量中提取出特征信息,并确定该宏块的上一个宏块的编码模式和亮度预测模式;
上述,2≤k'≤K;
②-2、将解码后的I帧中的第k个宏块定义为当前宏块,其中,1≤k≤K,k的初始值为1;
②-3、判断当前宏块是否为解码后的I帧中的最后一个宏块,如果当前宏块不是最后一个宏块,则执行步骤②-4,如果当前宏块是最后一个宏块,则执行步骤②-5;
②-4、判断当前宏块为正确解码块还是为非正确解码块,如果当前宏块为正确解码块,则对当前宏块不作处理,然后执行步骤②-6;
如果当前宏块为非正确解码块,则判断当前宏块的下一个宏块为正确解码块还是为非正确解码块,如果当前宏块的下一个宏块为正确解码块,则利用当前宏块的编码模式和亮度预测模式恢复当前宏块,然后执行步骤②-6;如果当前宏块的下一个宏块为非正确解码块,则采用双线性内插法恢复当前宏块;
②-5、判断当前宏块为正确解码块还是为非正确解码块,如果当前宏块为正确解码块,则对当前宏块不作处理,至此完成解码后的I帧中的所有非正确解码块的恢复;如果当前宏块为非正确解码块,则采用双线性内插法恢复当前宏块,至此完成解码后的I帧中的所有非正确解码块的恢复;
②-6、令k=k+1,将解码后的I帧中的下一个待处理的宏块作为当前宏块,然后返回步骤②-3继续执行,其中,k=k+1中的“=”为赋值符号。
2.根据权利要求1所述的一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其特征在于所述的步骤①-5中采用两次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra4×4(k-1)嵌入到当前宏块的宿主向量x(k)中的具体过程为:
A1、对x(k)进行正变换,得到向量y(k),y(k)=(y1y2…y9),其中,y1、y2和y9对应表示y(k)中的第1个元素、第2个元素和第9个元素,y2=x2-x1,yi'=xi'-x1,y9=x9-x1,2≤i'≤9,αi为权值,符号为向下取整符号;
A2、将wIntra4×4(k-1)中的第1个元素至第8个元素嵌入到y(k)中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9,和对应表示wIntra4×4(k-1)中的第1个元素、第i'-1个元素和第8个元素;
A3、对进行逆变换,得到嵌有部分特征信息的向量其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9;
A4、对进行正变换,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值;
A5、将wIntra4×4(k-1)中的第9个元素至第16个元素嵌入到中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,和对应表示wIntra4×4(k-1)中的第9个元素、第i'+7个元素和第16个元素;
A6、对进行逆变换,得到当前宏块对应的嵌有特征信息的向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9。
3.根据权利要求2所述的一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其特征在于所述的步骤①-5中采用一次广义差分扩展的方法将当前宏块的上一个宏块的特征向量wIntra16×16(k-1)嵌入到当前宏块的宿主向量x(k)中的具体过程为:
B1、对x(k)进行正变换,得到向量y(k),y(k)=(y1y2…y9),其中,y1、y2和y9对应表示y(k)中的第1个元素、第2个元素和第9个元素,yi'=xi'-x1,y9=x9-x1,2≤i'≤9,αi为权值,符号为向下取整符号;
B2、将wIntra16×16(k-1)嵌入到y(k)中,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,和对应表示wIntra16×16(k-1)中的第1个元素、第i'-1个元素和第8个元素;
B3、对进行逆变换,得到当前宏块对应的嵌有特征信息的向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素,2≤i'≤9。
4.根据权利要求1至3中任一项所述的一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其特征在于所述的步骤①-6中修改当前宏块的CBP的具体过程为:
①-6a、如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中左上角位置的8×8块,则统计当前宏块嵌入特征信息后左上角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a6置为0,a3,a4,a5保持不变,如果不全为0,则将A中的a6置为1,a3,a4,a5保持不变;
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中右上角位置的8×8块,则统计当前宏块嵌入特征信息后右上角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a5置为0,a3,a4,a6保持不变,如果不全为0,则将A中的a5置为1,a3,a4,a6保持不变;
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中左下角位置的8×8块,则统计当前宏块嵌入特征信息后左下角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a4置为0,a3,a5,a6保持不变,如果不全为0,则将A中的a4置为1,a3,a5,a6保持不变;
如果当前宏块中的特征信息嵌入块所在的8×8块为当前宏块中右下角位置的8×8块,则统计当前宏块嵌入特征信息后右下角位置的8×8块中的所有量化DCT系数是否全为0,如果全为0,则将A中的a3置为0,a4,a5,a6保持不变,如果不全为0,则将A中的a3置为1,a4,a5,a6保持不变;
①-6b、将修改后的A转化成十进制数,得到当前宏块修改后的CBP。
5.根据权利要求4所述的一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其特征在于所述的步骤②-1中从该宏块的包含有特征信息的向量中提取出特征信息,并确定该宏块的上一个宏块的编码模式和亮度预测模式的具体过程为:
②-1a、对进行正变换,得到向量 其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值,符号为向下取整符号;
②-1b、从中提取出由8个特征信息比特组成的特征信息,记为 其中,和对应表示中的第1个元素、第2个元素和第8个元素, 1≤j≤8,符号“||”为取绝对值运算符号;
②-1c、构建一个新的向量z(k'),z(k')=(z1z2…z9),其中,z1、z2和z9对应表示z(k')中的第1个元素、第2个元素和第9个元素, 2≤i'≤9;
②-1d、对z(k')进行逆变换,得到向量f(k'),f(k')=(f1f2…f9),其中,f1、f2和f9对应表示f(k')中的第1个元素、第2个元素和第9个元素,f2=z2+f1,fi'=zi'+f1,f9=z9+f1,2≤i'≤9;
②-1e、将由中的第1个元素第2个元素第3个元素和第4个元素组成的二进制串转化为十进制值,如果十进制值对应数字9,则表示该宏块的上一个宏块的编码模式为Intra16×16,然后用f(k')中的所有元素按序替换该宏块的上一个宏块中的特征信息提取块中的第8个至第16个量化DCT系数,接着确定该宏块的上一个宏块的亮度预测模式,该宏块的上一个宏块的亮度预测模式的数字标识为由中的第5个元素第6个元素第7个元素和第8个元素组成的二进制串转化而成的十进制值,结束特征信息提取及编码模式和亮度预测模式确定;
如果十进制值不对应数字9,则表示该宏块的上一个宏块的编码模式为Intra4×4,然后执行步骤②-1f;
②-1f、对f(k')进行正变换,得到向量其中,和对应表示中的第1个元素、第2个元素和第9个元素, 2≤i'≤9,αi为权值,符号为向下取整符号;
②-1g、从中提取出由8个特征信息比特组成的特征信息,记为 其中,和对应表示中的第1个元素、第2个元素和第8个元素,1≤j≤8,符号“||”为取绝对值运算符号;
②-1h、构建一个新的向量z'(k'),z'(k')=(z1'z2'…z9'),其中,z1'、z2'和z9'对应表示z'(k')中的第1个元素、第2个元素和第9个元素, 2≤i'≤9;
②-1i、对z'(k')进行逆变换,得到向量x(k'),x(k')=(x1x2…x9),其中,x1、x2和x9对应表示x(k')中的第1个元素、第2个元素和第9个元素,x2=z2'+x1,xi'=zi''+x1,x9=z9'+x1,2≤i'≤9;
②-1j、用x(k')中的所有元素按序替换该宏块的上一个宏块中的特征信息提取块中的第8个至第16个量化DCT系数;
②-1k、构建一个包含16个元素的向量w(k'),w(k')的前8个元素为的8个元素,w(k')的后8个元素为的8个元素;
②-1l、确定该宏块的上一个宏块中编号为0的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第1个元素、第2个元素、第3个元素和第4个元素组成的二进制串转化而成的十进制值;
确定该宏块的上一个宏块中编号为4的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第5个元素、第6个元素、第7个元素和第8个元素组成的二进制串转化而成的十进制值;
确定该宏块的上一个宏块中编号为8的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第9个元素、第10个元素、第11个元素和第12个元素组成的二进制串转化而成的十进制值;
确定该宏块的上一个宏块中编号为12的4×4块的亮度预测模式,该4×4块的亮度预测模式的数字标识为由w(k')中的第13个元素、第14个元素、第15个元素和第16个元素组成的二进制串转化而成的十进制值;
结束特征信息提取及编码模式和亮度预测模式确定。
6.根据权利要求5所述的一种基于可逆数据隐藏的H.264/AVC视频I帧错误恢复方法,其特征在于所述的步骤②-4中利用当前宏块的编码模式和亮度预测模式恢复当前宏块的具体过程为:
②-4a、如果当前宏块的编码模式为Intra16×16,则利用当前宏块的亮度预测模式对当前宏块中的每个像素点的像素值进行预测,然后将当前宏块中的每个像素点的预测值作为对应像素点的最终恢复的像素值,完成当前宏块的恢复;
②-4b、如果当前宏块的编码模式为Intra4×4,则利用当前宏块中编号为0的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值;
利用当前宏块中编号为4的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值;
利用当前宏块中编号为8的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值;
利用当前宏块中编号为12的4×4块的亮度预测模式对该4×4块所在的8×8块中的每个4×4块中的每个像素点的像素值进行预测,然后将每个4×4块中的每个像素点的预测值作为对应4×4块中的每个像素点的最终恢复的像素值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410287578.XA CN104144347B (zh) | 2014-06-24 | 2014-06-24 | 一种基于可逆数据隐藏的h.264/avc视频i帧错误恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410287578.XA CN104144347B (zh) | 2014-06-24 | 2014-06-24 | 一种基于可逆数据隐藏的h.264/avc视频i帧错误恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104144347A true CN104144347A (zh) | 2014-11-12 |
CN104144347B CN104144347B (zh) | 2017-12-15 |
Family
ID=51853404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410287578.XA Active CN104144347B (zh) | 2014-06-24 | 2014-06-24 | 一种基于可逆数据隐藏的h.264/avc视频i帧错误恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104144347B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337514A (zh) * | 2017-12-28 | 2018-07-27 | 宁波工程学院 | 一种加密域hevc视频数据隐藏方法 |
CN108683921A (zh) * | 2018-06-07 | 2018-10-19 | 四川大学 | 一种基于零量化dct系数组的视频可逆信息隐藏方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621692A (zh) * | 2009-07-27 | 2010-01-06 | 宁波大学 | 一种基于预测模式的h.264/avc视频信息隐藏方法 |
CN102223540A (zh) * | 2011-07-01 | 2011-10-19 | 宁波大学 | 一种面向h.264/avc视频的信息隐藏方法 |
-
2014
- 2014-06-24 CN CN201410287578.XA patent/CN104144347B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621692A (zh) * | 2009-07-27 | 2010-01-06 | 宁波大学 | 一种基于预测模式的h.264/avc视频信息隐藏方法 |
CN102223540A (zh) * | 2011-07-01 | 2011-10-19 | 宁波大学 | 一种面向h.264/avc视频的信息隐藏方法 |
Non-Patent Citations (2)
Title |
---|
RANRAN LI等: "An Intra-frame Error Resilience Algorithm Based on Reversible Data Embedding in H.264/AVC", 《JOURNAL OF COMPUTATIONAL INFORMATION SYSTEMS》 * |
RANRAN LI等: "Video Error Resilience Scheme using Reversible Data Hiding Technique for Intra-Frame in H.264/AVC", 《THE 3RD INTERNATIONAL CONFERENCE ON MULTIMEDIA TECHNOLOGY (ICMT 2013)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337514A (zh) * | 2017-12-28 | 2018-07-27 | 宁波工程学院 | 一种加密域hevc视频数据隐藏方法 |
CN108683921A (zh) * | 2018-06-07 | 2018-10-19 | 四川大学 | 一种基于零量化dct系数组的视频可逆信息隐藏方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104144347B (zh) | 2017-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107197260B (zh) | 基于卷积神经网络的视频编码后置滤波方法 | |
CN101835044B (zh) | 一种频率域分布式视频编码中的分类组合方法 | |
CN101835042B (zh) | 基于无反馈速率控制的Wyner-Ziv视频编码***及方法 | |
US8285064B2 (en) | Method for processing images and the corresponding electronic device | |
CN104065976B (zh) | 一种基于视频的图像压缩及保密传输方法 | |
CN107027029A (zh) | 基于帧率变换的高性能视频编码改进方法 | |
CN104602028B (zh) | 一种立体视频b帧整帧丢失错误隐藏方法 | |
KR100612691B1 (ko) | 동영상 화질 평가시스템 및 방법 | |
CN104159117A (zh) | 一种hevc视频的信息隐藏方法 | |
CN107071422A (zh) | 基于图像相关模型的低复杂度hevc码率适配转换编码方法 | |
US20170374361A1 (en) | Method and System Of Controlling A Video Content System | |
CN110062231A (zh) | 基于多层卷积神经网络的图像压缩方法 | |
CN101163250A (zh) | 一种基于边界梯度的视频流容错方法 | |
CN109819260A (zh) | 基于多嵌入域融合的视频隐写方法和装置 | |
CN107343202B (zh) | 基于附加码率的无反馈分布式视频编解码方法 | |
CN104144347A (zh) | 一种基于可逆数据隐藏的h.264/avc视频i帧错误恢复方法 | |
CN103391439A (zh) | 一种基于主动宏块隐藏的h.264/avc码率控制方法 | |
CN106657961A (zh) | 立体视频的混合数字-模拟编码 | |
CN103974079B (zh) | 基于全相位双正交变换的mpeg‑4简单档次编码方法和装置 | |
CN1809166B (zh) | 图像编码和解码装置及其方法 | |
CN104135662B (zh) | 用于在有限带宽和发射速率条件下对视频文件的改进型h.264压缩编码方法 | |
CN103313064B (zh) | 基于帧间模式和运动修补的时域错误隐藏方法 | |
CN102790881B (zh) | 基于帧级编码端速率控制的变换域分布式视频编解码器 | |
CN102300098A (zh) | 一种基于可逆信息隐藏和冗余技术的视频容错编码方法 | |
CN115150628A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |