摘 要:针对H.264编码比特流,本文提出了一种在压缩比特流中使用脆弱水印技术来检测传输中错误宏块的检测方案。在编码端的DCT非零系数的有效位(LSB)以数字水印的形式嵌入特定的信息,然后在解码端提取这些信息来判断所接收的比特流是否出错。
引言
在压缩视频流中,每个比特都是非常重要的,在传输过程中发生的错误会严重影响解码后的视频效果。所以,在所接收的视频流中进行错误检测在实际工作中是非常重要的。只有解码器在所接收的比特流中检测到误码,才能采用相应的策略对它进行错误恢复和错误隐藏,因此,选择一种行之有效的误码检测方法是致关重要的。
数字水印技术在近年来发展很快,已发展出用于数据监控的脆弱水印,以检验数据的完整性。本文提出了一种基于脆弱水印的错误检测方法。
错误检测方案
为了克服传统检测方法的不足,本文采用在编码端嵌入水印信息的办法,并使水印信息和视频数据之间建立某些强制关系。如果在解码时发现这些约定关系不被满足,则可判断接收到的数据遭到篡改,即发生传输错误。本文根据H.264的协议语句设计水印信息,并把水印信息嵌入到非零DCT系数中。
检测原理
在H.264视频压缩标准中,一个宏块的压缩数据可以分为两个部分。部分包括图像头、宏块类型、帧内预测模式以及运动矢量等;第二部分包括块编码模式(CBP,Coded Block Pattern)和该块的所有DCT系数。如果部分数据发生错误,将对解码端的图像解码过程造成非常严重的影响,甚至不能解码。但值得庆幸的是,部分的数据与CBP数据在码流中的比特数非常少,所以其发生错误的概率与DCT系数相比非常小。数字水印检测技术正是针对每个DCT变换块进行一些特殊处理,使编码后的码流数据携带一些特定的特征,即水印。而码流中的这些特征对信道的干扰非常敏感,在信号传输过程中,即使遇到轻微的信道干扰,这些特征也会丢失。解码端通过检测解码数据是否存在水印,就能达到错误检测的目的。
水印设计和嵌入位置
在编码端,首先对每个DCT块内的非零系数的有效位进行判别,DCT块经过字变换(zia-zia)扫描之后,如果非零系数在偶数位置,则将有效位置0,即LSB=0;如果非零系数在奇数位置,则将有效位置1,即LSB=1。因为DCT系数中直流分量携带的信息量很大,如果对直流分量进行处理,将会导致图像的PSNR值急剧下降,严重影响解码后的图像效果,所以,本文只对交流系数进行处理。在解码端,对这些位置的交流系数进行检查。在奇数位置,如果DCT系数为偶数,则说明该编码块出错;在偶数位置,如果DCT系数为奇数,则说明该编码块出错。其方法如下:
非零DCT交流系数在偶数位置时:
非零DCT交流系数在奇数位置时:
AC为DCT变换后的交流系数,ACW为加载脆弱数字水印后的DCT交流系数,为符号函数。本方案采用在有效位嵌入水印模式,因此不需要额外的比特进行编码。
由于H.264标准采用了帧内和帧间预测来参与对某一宏块的编解码。为了保证编解码端参与预测的数据一致性(因为解码端不可能使用未嵌入水印的原始数据参与预测),避免数据失配造成图像质量恶化,水印嵌入操作必须放到运动补偿循环内,即量化之后、熵编码之前进行。
实验结果
本文的编解码系统以H.264的标准测试模型JM86为测试平台,在编码端加入了数字水印,加入起始点为DCT系数的第6个数。本文采用VCEG模拟信道传输模型来模拟码流错误。
取标准测试集foreman.yuv的前30帧,在码率为128Kbps、逐帧编码条件下,对嵌入数字水印和未嵌入数字水印这两种情况下在没有传输错误时重建图像PSNR值的对比图。水印对图像质量的影响很小。
表1和表2为标准测试序列在不同编码比特率下对两种错误检测方案的对比。每个序列选取30帧,图像格式为QCIF(采样比率为4:2:0)。首先用嵌入水印后的编码器得到一个基准码流,然后用VCEG模拟信道引入错误,在解码端提取这些信息来判断相应的语法元素是否满足语法结构或约定关系。
由表1和表2可以看出,基于脆弱水印方法和基于语法的错误检测相比,前者在付出较小的PSNR值代价的情况下,其错误检测率提高了近一倍。但随着编码序列运动复杂度的增加,细节更多的情况下,数字水印的PSNR值会下降。
结语
通过对编码端的非零DCT系数加入脆弱水印信息,形成传输数据与加入信息的特定强制关系,在解码端校验约定的强制关系来判断数据的完整性这种错误检测方法,相对基于语法的传统错误检测方法有更高的错误检测率,而且这种检测方法在传输比特流中不会增加额外的开销而影响传输效率,但该方法的PSNR值会有少量降低,若从人眼视觉分辨能力考虑,少量的PSNR值降低不会影响视频效果。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。