H.264标准

2024-07-05

H.264标准(共7篇)

H.264标准 篇1

0 引言

近年来, 随着流媒体技术、网络技术, 特别是多媒体技术和计算机技术的迅猛发展, 视频信息在人们的日常生活中占据的比重越来越大。新一代视频编码标准H.264已经发布, 就在视频编码领域得到的广泛关注。但是在很长一段时间中, 视频编码技术被认为只被视频编码研究领域的专家和学者所知。究其原因, 主要是因为视频编码技术所涉及的学科知识纷繁复杂, 研究者需要有丰富的图像处理知识和编码知识, 同时还需要学习JVT提供的带有源代码的参考软件。学者需要在读懂代码的基础上, 根据自己的理论研究成果修改源代码, 以进行实验, 验证学者提出或改进标准后编码算法的性能。而在实际实验中, 学习H.264视频编码标准的相关工具软件也不为一般学生所熟知, 这为研究者的实验带来了较多困难。本文将介绍四种学习H.264编码标准的必备软件。

1 代码阅读工具———source insight

众所周知, 在阅读代码时, 研究者需要经常查看变量、函数、宏等符号的定义、定义位置, 或者这些符号调用了何种符号或何处调用了这些符号。source insight就很好的展现了它在阅读代码方面的优越性。source insight是一个代码编辑器, 学者可以直接在source insight中修改需要修改的参考软件的部分代码。同时, source insight也是一个代码分析器, 在编辑源代码时, source insight会在后台动态维护符号数据库, 通过这个符号数据库, 就可以实现查找、替换符号, 跳转到符号定义处或者被引用处, 检查符号拼写、符号匹配的在常用编译软件中难以实现的功能。

source insight界面操作很简单, 不同种类的符号被赋予了不同的大小、图形和颜色, 比如数字赋为红色, 关键字赋为绿色, 注释赋为蓝色, 变量名函数名赋为蓝黑色, “#”号是包含的头文件, 中间带着写有M的绿框代表宏定义绿色椭圆代表全局变量等。这种区分能够让读者一目了然, 特别是将鼠标移到一个符号时, 界面的左下角的上下文窗口“context”会显示该符号的定义处, 单击定义处, 代码就会自动跳转到该处。source insight也不会简单的记录或者跟踪符号, source insight可以在“references”窗口和“calls”窗口分别显示索引关系树和调用关系树。从这两个窗口中, 学者可以清晰、有层次、有目的的阅读代码。

source insight最重要的、最常用的功能就是查找“lookup references”, 该功能会把该符号在代码中出现过的所有的位置以列表的形式向用户给出。在查找时, 可以设置查找的条件, 比如“case sensitive”代表是否区分大小写, “whole words only”代表是否只搜索整个字符串或者包含该字符串, “skip inactive codes”代表是否跳过无用代码, “skip comments”代表是否跳过注释等。

2 分析代码结构工具———doxygen

doxygen软件是一个强大, 使用方便且支持各种操作系统和编程语言的代码文档生成系统。doxygen是荷兰人Dimitri van Heesch开发, 在GNU公共许可证 (GPL) 下发布。最初, doxygen在linux下开发, 但现在已经被移植到多种操作系统平台下, 包括unix各种版本, MSWindows和Mac OS。

在学习H.264代码时, 可以用doxygen生成代码手册来辅助阅读H.264代码, 以增加对H.264代码整体框架的把握和加深数据流向的认识。在程序注释时, 只要按照一定的规范书写, 就能利用doxygen把注释和其它重要信息一并转换为说明文件, 保存为HTML、CHM或者PDF等格式的文档。利用doxygen生成的代码可以将针对函数或数据类别说明的注释形式化, 因此, 使用doxygen生成代码手册可以在相当程度上减少代码阅读负担。

3 方便的H.264播放与分析工具———elecard stream Eye tools

elecard stream Eye tools包括五个工具:elecard YUV Viewer、elecard Stream Eye、elecard stream Analyzer、elecard Buffer Analyzer和elecard Video Quality Estimator。

elecard YUV Viewer工具使用最多。elecard YUV Viewer能够查看视频文件的YUV数据序列, 可以将文件互相比较, 以找出YUV图像的差别。该软件还允许用户计算PSNR、NQI、VQM等视频质量评估指标。elecard YUV Viewer支持多种YUV格式, 如IYUV、YV12、YV16、UYVY等。

elecard stream Eye是用来查看视频码流的工具, 支持对MPEG-1、MPEG-2、MPEG-4和H.264格式。当利用更改H.264参考软件代码编码测试视频后, 就可以利用elecard stream Eye分析输出的H.264格式视频, 从而从结果分析中显示研究者改进算法的性能。elecard stream Eye可以播放H.264码流, 查看码流的平均值、峰值和最小值。同时, 该软件还可以查看片分割, 宏块类型、分割模式, 运动矢量大小, 运动矢量方向, 以及各种头信息。elecard stream Eye还提供了视频截图功能, 这点在研究者撰写论文时很重要。研究者可以利用elecard stream Eye对编码输出的H.264格式视频截图, 并与利用elecard YUV Viewer对所编码的YUV格式的原视频的截图进行对比, 以此说明采用研究者改进算法后的输出视频和原视频在视觉上的差异。

由于有了强大的H264visa软件, elecard stream Analyzer很少使用。elecard Buffer Analyzer是用来分析解码器缓冲区参数的软件, H.264研究者很少会使用。elecard Video Quality Estimator则是提供了更多的用于质量评估的指标, 除非进行专门的质量优化, 一般很少用到。因此, elecard stream Analyzer、elecard Buffer Analyzer和elecard Video Quality Estimator这三款工具软件的使用不是很多。

4 H.264码流分析利器———H264visa

H264visa是一款功能更加强大的码流分析工具, 该软件可以支持H.264字节流格式、RTP格式以及其它一些H.264码流的封装格式。

RTP协议 (real time transport protocol, 实时传输协议) 是用于internet上多媒体数据流的一种传输协议, H.264码流数据需要按照RTP协议打包后在internet传输。对于研究H.264视频编码标准的研究者来说, 需要分析的是H.264码流数据。H264visa除了包含elecard stream Eye tools能够提供的所有功能外, 还具有很多特性:

(1) 显示宏块编码数据, 预测块数据, 残差数据和变换系数;

(2) 可以同时打开原始YUV文件和H.264输出文件, 可同时显示原始文件与编解码后重建视频文件的差异, 并计算PSNR;

(3) 显示详细的宏块类型统计数据、宏块预测信息、边界强度信息和包含NAL的头信息等;

(4) 可以显示预测图像、残差图像、块效应滤波前图像;

(5) 可以直接打开加了封装的视频, 例如FLV、MP4等, 还可以分析封装可以, 对于学习视频封装格式也有很大帮助。

5 结论

随着视频编码技术的迅猛发展, 越来越多的学者将会从事视频编码领域的研究, 学习好代码阅读工具———source insight、分析代码结构工具———doxygen、方便的H.264播放与分析工具———elecard stream Eye tools、H.264码流分析利器———H264visa四款工具将提高研究人员的工作效率。

摘要:H.264视频编码标准发布后得到的广泛关注, 但是由于H.264代码量巨大, 给研究者带来了较多困难。本文介绍了四款H.264视频编码标准的学习工具软件, 以方便广大学者对于H.264编码标准的学习。

关键词:H.264,代码阅读,码流分析

参考文献

[1]陈靖, 刘京.深入理解视频编解码技术:基于H.264/AVC标准及参考模型[M].北京:北京航空航天大学出版社, 2012.

[2]毕厚杰.新一代视频压缩编码标准:H.264/AVC[M].北京:人民邮电出版社, 2005.

H.264标准 篇2

一个有效的水印系统通常都要求具有不可见性、安全性、稳健性[1]。复杂度和实时检测对水印系统来说也很必要[2]。视频水印的检测原则上不能使用原始视频数据,这是因为在检测时使用原始视频数据会大大增加运算的复杂度,使得水印算法无法实现实时性要求。另外视频信号载体的数据量较大,如果采用非盲检测技术,检测时需要原始视频数据做参考也是不现实的。H.264是目前最佳的视频编码标准[3],在相同的重建图像质量下,H.264比MPEG-2和H.263节约50%左右的码率。

在现有的H.264视频水印算法中,Qiu Gang[4]等提出修改I帧中4×4DCT子块对角线上的AC系数,但这种方法对各种噪声攻击敏感,Noorkami和Mersereau[5]提出将水印嵌入到所选定的帧内4×4 DCT块中,并记录这些提取水印时需要用到的位置信息,通过修改所选定4×4子块的AC系数以嵌入水印,这种方法因为需要记录额外的信息而受到限制。

文中提出一种不需要提供额外信息、低复杂度的视频水印方案,水印信息嵌入至I帧的量化AC系数中,利用量化DC系数和最低有效位匹配的方式进行盲检测。

1 基于H.264的视频水印系统

帧内预测是H.264提出的一种全新的编码技术,是指当前块的像素值通过邻近已解码块的边界像素进行预测。在H.264帧内编码中,每个宏块亮度信号都要完成9种4×4预测模式(I 4 Mb)和4种16×16预测模式(I 16 Mb),然后通过预测模式选择,得出一种编码后的图像在码流和图像质量两者获得权衡的最佳预测模式[6]。

为了同时压缩视频序列并嵌入水印,嵌入算法集成在如图1所示的H.264编码器中。在H.264编码器中,只在I 4 Mb模式中嵌入水印,因为采用16×16预测模式的宏块与相邻块之间相似性较大,如果在这些较平滑的区域嵌入水印信息,很容易导致解码后视频图像中水印的可见。

1.1 水印嵌入方案

图2是水印嵌入过程的方框图。首先,由量化DC系数选出适于嵌入水印的子块,最低有效位匹配基于水印信息和量化AC系数来实现。水印序列可经过任意置换以增强水印的安全性。

最低有效位匹配微量地修改量化AC系数,将代表视频帧活动性的量化AC系数的幅度之和调制到一个特定的范围。最后,死域漂移用来提高鲁棒性。下面将详述具体的嵌入过程。

1.1.1 选择待嵌入水印的子块

通过量化DC系数过滤掉那些不适合嵌入水印的子块。如果量化DC系数为0,表明不在这个子块中嵌入水印;否则在该子块中嵌入水印。

1.1.2 最低有效位匹配

在本方案中,4×4块中量化AC系数的变化范围是水印嵌入的关键因素,因为最低有效位由量化AC系数的变化范围来确定。每个选中待嵌入水印的4×4块,其量化AC系数的幅度之和在一定范围[M1,M2]之内,其中M1,M2的大小是根据视频特征来确定的。如图3,将[M1,M2]分割成n段,每一段大小为△k

给每段分配一个惟一的编号,最低有效位匹配就是根据水印比特修改该编号的最低有效位。如果最低有效位与要嵌入的水印比特不同,就将编号的最低位调制1 bit。

1.1.3 死域漂移

宿主视频可能会遭到恶意的攻击,给量化AC系数带来的改变将导致子块编号的最低有效位的改变。假设T是门限值,死域的范围定义为2 T。将死域中的量化AC系数的幅度之和移出,移动的幅度很小,几乎不影响视频的质量,但却提高了水印提取的鲁棒性。修改后的幅度之和S′按如下方式得出

S={ΜΡiBi-ΤSBiΜΡi+kBiSBi+Τ(1)

其中Bi是量化AC系数的变化范围中第i个边缘值,S为幅度之和,△k是每段的大小,MPi是第i段的中点。图4是死域漂移的一个范例。

1.2 水印提取

如图5,水印提取在熵编码完成之后进行,其过程和嵌入水印的过程一样,主要的提取步骤如下:

(1)根据量化DC系数是否为0选出嵌入了水印的4×4子块;

(2)计算这些子块的量化AC系数幅度之和,从而确定子块编号;

(3)进行逆置换,得出水印信息。

本算法在嵌入和提取时均无复杂的计算,算法较简单,可用于实时应用。同时,提取水印时不需要原始视频,实现了盲检测。

2 实验结果

为了评估本算法的性能,进行了仿真实验。视频测试序列是:Foreman,Carphone,视频图像格式均为QCIF格式(176×144)。仿真是在CPU为Pentium 4主频3.2 GHz 的机器上运行的。图6中比较了两组视频在嵌入和未嵌入水印、量化系数(QP)从28到32时PSNR的变化情况,其中M1=10,M2=20,每段大小△k=3,门限值T=1。嵌入后水印是不可见的,且嵌入水印后的视频质量几乎和原视频一样。实验中还测试了本算法在二次编码和噪声攻击下的性能。在二次编码攻击中,两组测试序列均采用量化系数(QP)分别为29、30的固定量化因子进行编码。由图7可看出,经二次编码处理后NC(Normalized Correlation:相似性的测量)值大于0.8。图8显示了噪声攻击后的结果,高斯噪声的方差为1,对于Foreman和Carphone,NC值大约是0.7。这样的结果表明该算法对二次编码和噪声攻击具有很强的鲁棒性。

3 结束语

提出一种基于H.264的水印方案,仿真结果表明提出的水印算法具有很好的不可感知性,并且提取时不需要原始视频。另外,本算法比较简单,适用于实时应用。

参考文献

[1] Cox I,Miller M,Bloom J.Digital Watermarking[M].Los Altos,CA:Morgan Kaufmann Publishers,2001.

[2]Dorr G,Dugelay J L.A Guide Tour of Video Water-marking[J].Signal Process.Image Commun,2003,18(4):263-282.

[3]Wiegand T,Sullian G J,Bjontegaard G,et al.Over-view of the H.264Video Coding Standard[J].IEEE QP29Trans.Circuits Syst.Video Technol,2003,13(7):560-576.

[4]Qiu G,Marzilian P,Ho ATS,et al.AHybrid Water-marking Scheme for H.264Video[C].Proceedings of the17th International Conference on Pattern Recognition,ICPR,2004(4):65-868.

[5] Noorkami M,Mersereau R M.Compressed-Domain Video Watermarking for H.264[C].IEEE International Conference on Image Processing,ICIP,2005(2):890-893.

H.264标准 篇3

随着视频应用的日益广泛, 视频的安全性变得越来越重要。基于以往的标准, 人们研究了许多加密算法:有用传统密码技术进行全部加密的方法, 如DES算法、CSC算法和VEA算法, 这类算法虽然有较高的安全性并且不改变压缩比, 但是计算复杂度很高;有对DCT系数进行加密的方法, 如分段置乱算法, 这类算法虽然有较低的计算复杂度, 但是安全性低于全部加密的算法, 压缩比也有所改变;有在熵编码过程中进行加密的方法, 如多状态索引方法, 这类算法虽然计算复杂度低, 对压缩比的影响较小, 但在已知明文攻击情况下是不安全的。上述方法各有优缺点, 而且大多针对MPEG标准, 因此研究适合H.264特点的安全加密技术成为目前研究的热点。

针对现有视频加密算法的不足, 本文提出一种基于H.264的可感知加密算法。

1 加密数据元素的分析与选取

对H.264编码宏块语义层进行分析, 决定提取帧内预测模式字 (Intra Prediction Mode) 、运动向量差值 (Motion Vector Differ_ence) 和残差系数 (Residual Coefficient) 三类定长语法元素 (fix-length code) 进行加密操作[1]。

1.1 帧内预测模式字

根据每个宏块所属片组的不同, 每一个宏块都有几种编码预测模式。但帧内预测编码是所有片组编码类型中都支持的。对亮度像素块而言, 存在有Intra_4×4, Intra_8×8、Intra_16×16三种预测模式。Intra_4×4模式下有9种预测模式, 适用于对图像细节部分进行编码, Intra_16×16有4种预测模式, 适用于对平坦区域进行图像编码[2]。

采用Intra_4×4的编码模式字进行加密操作。每一个4×4块都是通过上方和左方像素预测而来, 如图1所示, a-p为待预测像素, 它利用相邻块中已经解码的A-Q像素来进行预测。对每一个4×4块, 总共有9种模式供选择[2], 其中除了DC模式, 另外8种预测模式的方向也在图1中。

图1 Intra_4×4预测示意图

Intra_4×4的编码预测模式总共有9种预测模式, 至少需要4个bit位来进行编码。在H.264的标准中, 利用一个“prev_Intra_4×4_pred_mode”字段来排除一种预测方式, 用另外3个bit位来表示余下的8种预测模式。因此, 只对后3个bit位进行加密扰乱, 这样的加密过程中, 不会影响到其他字段, 也不会产生额外的码流。

1.2 运动向量差值

如图2所示, 在P帧或B帧中, 每个宏块 (16×16像素) 可以有4种方式来进行分割:16×16、8×16、16×8、8×8。如图2 (d) 是采用8×8模式, 分为4个子宏块 (8×8像素) 。每个字宏块可以进一步进行分割:8×8、4×8、8×4、4×4。

每一个分区或者子宏块都有一个单独的运动向量MV (Motion Vector) , 用于引用前面参考帧的对应区域来对当前块进行预测编码。每个预测区的MV都需要相当数目的比特位来进行编码。为了进一步减少比特数, 可以利用邻近的MV之间的相关性进行预测编码。后一个MV可由前面已经编码的MV预测得到, 只需要对它们的差值MVD (Motion Vector Difference) 进行编码。在H.264中, MVD值是采用指数哥伦布 (Exp-Golomb) 进行编码的, 这是一种变长编码[3]。

指数哥伦布编码由前缀和后缀构成, 前缀为M个0后面跟一个1, 后缀为M bit的INFO, 其码形为:[M zero]1[INFO]。其中, M=floor (log2 (Code Num-1) ) 。若MVD<0, CodeNum=2|MVD|-1, INFO的大小为Code Num-2M。用加密函数来对INFO进行加密:y=Encrypt- (INFO) , 其中y为加密后的密文。

本文只对MVD的符号位进行加密, 对于每一个MVD值, 只需要对一个bit位进行加密操作。

1.3 残差系数

在H.264中, 残差块系数通过CAVLC和CABAC进行编码[4]。在进行CAVLC编码的过程中, 涉及到以下几个语义字段[2]:非零系数数目 (Total Coeffs) 、拖尾系数数目 (Trailing Ones) 、非零系数幅值 (Level) 以及最后一个非零系数前零的个数 (Total Zero) 和每个非零系数前零的个数 (Run Before) 。经过分析, 只有Trailing Ones和Level的符号位是属于定长字段[6], 因此提取这两个字段的符号位进行加密操作。如图3所示。

2 算法设计

分别引入三个不同的控制参数P1、P1、P3对预测模式字IPM、运动向量MVD和残差系数Residual Coefficien的加密强度进行控制[1], 具体方案为:以P1、P2的概率分别对IPM、MVD进行加密, 当P1、P2从0到1进行变化时, 相应地进行不加密到完全加密;以P3对Residual Coefficients系数符号位进行不加密到完全加密控制。

下面是算法的具体伪代码描述:

3 仿真结果与分析

3.1 实验环境

实验测试条件:H.264/AVC标准, JM10.2版本, 以IPPP方式进行编码, I帧刷新率为10, 帧率为30 F/s, 2GB内存, Intel T5670处理器, 并用VS2008完成对JM10.2代码的调试。实验中采用CIF格式的352288的foreman作为视频序列。

3.2 加密效果分析

单独加密IPM字段, 只是对亮度信息进行加密, 如图4中人脸和轮廓信息清晰可见;单独进行MVD加密的过程中, 如图5中, I帧图像完全不受任何影响, B、P帧的I bock也完全不受影响, 关键信息很容易泄露。单独对残差系数进行加密, 如图6, 与IPM一样, 图像的轮廓信息没有很好的隐藏。另外, 从对抗解密攻击能力上来看, 单独对一种加密元素进行分析加密空间更小, 也更容易实施破解。因此, 在视觉安全性要求比较高的场合, 应该联合对所有三种元素进行加密, 从图7可以看到, 随着加密强度不断提高, 视频图像可感知性不断下降, 在最强的加密强度下, 整幅图像完全被扰乱有很高的视觉安全性。各种方汉加密后PSNR值如表1所示。

3.3 安全性分析

在加密方案中, 保持视频格式的语义兼容性, 加密操作并不改变相关字段的长度。攻击者会很自然地通过单独猜解每个字段元素的值来进行Cipher-only Attacks[7]。最简单的方法是进行ECA攻击 (Error Concealment-based Attack) , 就是将所有FLC的值赋值为一个固定值进行破解。同时, 攻击者也可以通过相邻块之间的相关性来单独猜解每个FLC的值, 下面对其复杂性进行分析说明。假设在一个帧数据中所有FLC的数据为N, 加密的概率控制为p, 则在一帧数据中实际进行加密的FLC的数目为p N, 对一帧数据进行去块攻击的难度至少为O ( (CNPN2PN) 。对于每一个符号字段[5], 至少有两个取值 (0和1) , 如果是IPM字, 则有更多的取值可能。如果假设p>100N, 则有2PN>2100, 实际上, 在一个数据帧里面, FLC的数目要远远大于100, 该加密的方案在对抗Cipher_only Attacks攻击还是十分有效的。

3.4 性能分析

一个加密算法的计算复杂度主要取决于它要进行加密的数据量。本文加密的数据量主要包括IPM、MVD和残差系数。在一个宏块中, IPM和MVD符号位, 还有Residual Coefficient的符号位需要加密, 因此, 要加密的数据量同整个视频数据相比, 只占很小的部分。所采用的加密操作也仅仅是对相关的bit位进行“异或”操作, 所需的系统开销极小, 基本上不会对编解码带来影响。

本文研究了一种在H.264编码下进行Perceptual Encryption的方法, 通过对语法元素的分析和编码方式的研究, 选取了IPM、MVD和Residual Coefficient这三种定长字段的元素进行加密。通过引入概率参数来对每种类型的字段加密强度进行控制, 分析加密不同元素所带来的视频加密效果。实验结果表明, 单独加密其中任何一种元素, 都能对图像带来很大的干扰。但要获得很好的安全性, 必须联合加密三种元素。这种加密方案具有很好的安全性和实时性, 而且不会带来额外的码流, 保持了视频的压缩比不变, 并且可以调整不同的加密强度, 适用于各种应用的需求。

摘要:针对多媒体视频传输的安全性与实时性的要求, 提出一种基于H.264感知加密算法的视频加密方案。该方案将视频数据分为VLC (Variable Length Code) 和FLC (Fix-Length Code) 两类, 只选择FLC中对重构图像比较重要的元素进行加密操作。理论分析和仿真结果表明, 该加密方案具有安全性高, 低成本系统开销的特性。

关键词:视频加密,H.264编码标准,感知加密算法,FLC,安全性

参考文献

[1]刘萧.基于H.264编码的视频加密研究[D].杭州:浙江大学计算机科学与技术学院, 2010:18-29.

[2]毕厚杰.新一代视频压缩编码标准:H.264/AVC[M].北京:人民邮电出版社, 2005.

[3]李晓举, 冯战申, 胡友情.基于H.264 CAVLC熵编码的视频加密方案[J].计算机工程与应用, 2009, 45 (34) :114-117.

[4]包先雨, 蒋建国, 袁炜, 等.H.264/AVC标准中基于CABAC的数字视频加密研究[J].通信学报, 2007, 28 (6) :24-29.

[5]QAO L, NAHRSTEDT K.A new algorithm for MPEG videoencryption[C].In:Proceeding of the Frist International Con-ference on Imaging Science, Systems and Technology (CISST’97) , LasVegas, Nevada, 1997:21-29.

[6]LIAN S G, LIU Z, REN Z.Secure advanced video codingbased on selection algorithms[J].IEEE Transactions onConsumer Electronics, 2006, 52 (2) :621-629.

H.264标准 篇4

1 H.264技术概述

H.264是由ITU-T和ISO/IEC的联合开发组共同开发的继MPEG-4之后的最新国际视频编码标准, 于2003年3月在泰国Pattaya举行的JVT第7次会议上正式成为国际标准, 在ITU-T中称为H.264 (起初成为H.26L) , 而在ISO/IEC中被称为MPEG-4的第10部分, 即高级视频编码 (AVC) 。通过使用该标准, 在同等图像质量下的压缩效率比以前的标准提高了2倍以上, 因此, H.264被行业看好。

H.264既保留了以往压缩技术 (H.263和MPEG-4) 的优点和精华, 又具有其他压缩技术无法比拟的许多优点。

(1) 低码流 (Low Bit Rate) :与MPEG-2和MPEG-4 ASP等压缩技术相比, 在同等图像质量下, 采用H.264技术压缩后的数据量只有MPEG-2的1/8, MPEG-4的1/3, 这将大大节省用户的下载时间和流量费用。

(2) 高质量的图像:H.264能提供连续、流畅的高质量图像 (DVD质量) 。

(3) 容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具。

(4) 网络适应性强:H.264提供了网络适应层, 使得H.264的文件能容易地在不同网络 (如因特网、CDMA、GPRS、WCDMA、CDMA2000等) 上传输。

2 H.264的技术特点

H.264在编码框架上还是沿用以往的MC-DCT结构, 即运动补偿加变换编码的混合结构, 因此它保留了一些先前标准的特点, 如不受限制的运动矢量、对运动矢量的中值预测等。H264在性能上的较大提升应归功于各种不同技术的性能改进, 其中主要是帧内预测、运动估计、整数变换、环路滤波技术、量化、以及熵编码等。

2.1 帧内预测

对I帧的编码是通过利用空间相关性而非时间相关性实现的。以前的标准只利用了一个宏块内部的相关性, 而忽视了宏块之间的相关性, 所以编码后的数据量往往较大。为了能进一步利用空间相关性, H.264引入了帧内预测以提高压缩效率。简单的说, 帧内预测编码就是用周围临近的像素值来预测当前的像素值, 然后对预测误差进行编码。这种预测是基于块的, 对于亮度分量 (luma) , 块的大小可以在16×16和4×4之间选择。16×16块有4种预测模式, 4×4块有9种预测模式;对于色度分量 (chroma) , 预测是对整个8×8块进行的, 有4种预测模式。除了DC预测外, 其他每种预测模式对应不同方向上的预测。

2.2 增强的运动估计

2.2.1 提高运动估计的精度

H.264支持1/4和1/8像素精度的运动矢量。在1/4像素精度时可使用6抽头 (6tap) 滤波器来减少高频噪声, 对于1/8像素精度的运动矢量, 可使用更为复杂的8抽头 (8tap) 的滤波器。在进行运动估计时, 编码器还可选择“增强”内插滤波器来提高预测的效果。

2.2.2 SP帧

H.264定义了一种新的SP图像类型, 它可以在不同的视频流或一个视频流的不同部分进行切换, 通过在解码器的运动补偿预测过程中放置一个前向变换和量化操作来实现。SP图像主要用于基于服务器的视频流应用中。

2.2.3 运动估计模式

在H.264的运动预测中, 一个宏块 (MB) 可以被分为不同的子块, 形成7种不同模式的块尺寸, 如图1所示。因此在每个宏块中可以包含有1、2、4、8或16个运动矢量。

2.2.4 多帧参考

在H.264中, 允许编码器使用多于一帧的先前帧用于运动估计, 例如2帧或3帧刚刚编码好的参考帧。编码器将选择对每个目标宏块能给出更好的预测帧, 并为每一宏块指示是哪一帧被用于预测的。

2.3 整数变换

在变换方面, H.264使用了基于4×4像素的类似于DCT的变换, 但使用的是以整数为基础的空间变换。在具有4×4DCT变换所有特性的同时, 该变换还具有下述特性:

(1) 所有操作使用整数算术运算, 从而保证了精度。这样, 编码器和解码器的变换和反变换的精度相同, 没有“反变换误差”。

(2) 变换的核心操作没有乘法运算, 只有加法和移位, 变换的比例系数可以整合到量化器中, 减少乘法运算的次数, 从而减少了运算量和复杂度, 有利于定点DSP移植。

2.4 先进的环路滤波技术

由于编码是有损的, 会引起重构以后块间亮度落差大、图像出现马赛克等现象, 影响人的视觉感受。为了消除这种块效应现象, H.264在重构当前帧之前, 采用了一个自适应的环路滤波器, 能有选择性地对块间信号滤波, 平滑块间信号, 提高图像质量。重构后的帧更接近原始帧, 有利于下一帧的运动补偿和预测, 减少预测残差。

2.5 量化

对变换参差系数的量化使用了52级步长的量化器, 可选32种不同的量化步长, 而H.263标准只有31级。但是在H.264中, 步长是以12.5%的复合率递进的, 而不是一个固定常数。量化步长范围的扩大使得编码器能够更灵活、精确地进行控制, 在比特率和图像质量之间达到折中。

2.6 增强的熵编码

H.264使用Exp-Golomb编码和内容自适应变长编码 (CAVLC) 两种熵编码。对于语法, 使用Exp-Golomb编码, 即把所有语法映射到统一的可扩展码字表, 而不是为每种语法设计不同的码字表。对于变换系数, 则使用CAVLC编码, 利用相邻块间非零系数的个数相关和零系数集中在高频段等特性, 采用从高频开始的逆向扫描方式, 充分挖掘数据的统计特性, 提高压缩比。

在H.263等标准中, 根据要编码的数据类型采用不同的VLC码表。H.264的UVLC码表提供了一个简单的方法, 对于任何类型的数据, 都使用统一变字长编码表。其优点是:解码器很容易识别码字的前缀, UVLC在发生比特错误时能快速获得重同步。

3 H.264与其它标准的性能比较

为了进行性能分析, 我们使用各标准的模型软件在相同条件下 (比特率或图像质量) 对同一图像序列进行测试, 测试结果如图2所示。

同时, 采用H.264压缩后的数据量也比同类其他标准小, 如表1所示。

从上述试验结果可以看到H.264在压缩性能上的优势是显著的。

4 应用前景

H.264标准使运动图像压缩技术上升到了一个更高的阶段, 在较低带宽上提供高质量的图像传输是H.264的应用亮点, 这也为英特网的应用提供了广阔的前景。H.264的推广应用对视频终端、网关、MCU等系统的要求较高, 这将有力地推动视频会议软、硬件设备在各个方面的不断完善。因此, 密切关注H.264的发展, 深入研究其对于网络传输的新贡献是非常必要的。同时, H.264视频编码新标准具有优于MPEG4和H.263的压缩性能, 可应用于英特网、数字摄像、数字视频录像、DVD及电视广播等领域的图像压缩。目前, 许多大公司 (如Nokia和Videolocus等) 都已经开始把H.264技术应用到各个领域中。

H.264技术对高清晰度电视的传输和存储至关重要。现在人们有可能将一部8Mbps的高清晰节目方便地存储在一张DVD上, 这将极大地促进和推动家庭影院市场, 使得人们不必再等待更为昂贵和不可靠的蓝光光盘的推出 (容量为27GB) 。同时, H.264使得在卫星或是有线电缆上, 每信道能传送4路高清晰节目, 其运行费用比基于MPEG-2系统低得多, 这对于有线电视投资者无疑具有巨大的吸引力。另外, 由于H.264编码比现有编码算法的压缩比高1倍, 这将使其在移动通信领域也将占领一席之地并扮演重要角色。由于3G系统的频段十分昂贵降低传输码率、提高信道利用率将显得尤为重要。

5 结束语

H.264标准的推出是视频编码标准的一次重要的进步, 它比现有的H.263、MPEG-2具有明显的优越性, 特别是在编码效率上的提高使得它被应用于许多新的领域。然而, 在算法的复杂度上, H.264执行的时间和所需的存储量还较大。对算法的优化和完善将成为进一步研究的方向。

参考文献

[1]T.Wiegand, H.Schwarz.The emerging H.264/AVC standard.EBU TECHNICAL REVIEW, January2003.

[2]ThomasWiegand, Gary J Sullivan, Gisle Bjontegaard.Overview of the H.264/AVC Video Coding Standard.IEEE Transactions on Circuits and Systems for Video Technology, 2003 (7) .

[3]毕厚杰.新一代视频压缩编码标准:H.264/AVC[M].北京:人民邮电出版社, 2005.

[4]周敬利, 金毅.基于H.264视频编码技术的研究[J].华中科技大学学报 (自然科学版) , 2003 (8) .

H.264标准 篇5

1 郑州CMMB系统介绍

整个CMMB的系统架构如图1所示。

郑州地区采用23CH频道播出C M M B节目。带宽8 M H z, 中心频率554MHz。节目内容包含8套电视节目、两套广播节目以及数据推送业务。电视节目为中央节目六套 (中一、中三、中五、中九、新闻、少儿) , 河南卫视及郑州一套。节目播出流程如下。

(1) 编码

目前, 在实际使用中的视频输出文件格式为3GPPv6, 码率为384kbps。

视频的编码格式为H.2 6 4 B a s e l i n e-3 4 0 k b p s-320×240 (QVGA) -25fps, 音频的编码格式为MPEG-4 HE-AAC-32kbps-48k Hz Stereo。

经过编码的音视频数据以RTP包的形式传输到复用器。

(2) 复用

复用部分将视音频、数据及控制信息打包复用, 输出符合CMMB信道帧结构的PMS数据。中央的六套节目编码后用IP封装机打包封装, 上传到鑫诺三号卫星上, 各地通过卫星锅接收信号, 经IP解封装机输出符合UDP协议格式的数据流, 送到复用器;而地方节目则经过H.264编码器后直接送至复用器。其它服务如电子业务指南 (ESG) 、数据广播、紧急广播等数据也是以UDP协议的形式通过交换机加载到复用器上。复用过程如图2所示。

(3) 调制

复用器送出的PMS流加至激励器, 进行信道编码和调制, 调制后生成射频信号输出, 经发射机放大器放大功率, 最后经由馈线送至天线发射。

2 CMMB编码器介绍

目前, CMMB前端普遍采用的是H.264编码方式。

H.264/AVC是ITU-T和ISO/IEC联合制定的最新编码标准, 它继承了H.263和MPEG-1/2/4视频标准协议的优点, 结构上并没有变化, 仍采用图像预测和变换编码相结合的编码结构, 但在各个主要的功能模块内部使用了一些先进的技术, 提高了编码效率。主要见以下几个方面。

(1) 去冗余

基于4×4块的类DCT整数变换以及相应的量化方法, 去除原始图像的空间冗余。

(2) 运动估计与补偿

采用7种宏块预测模式:16×16、16×8、8×16、8×8、8×4、4×8、4×4。运动估计和补偿更加精确。

(3) 帧内预测

考虑到单个视频图像存在空间冗余度, 利用相邻宏块之间的相似性去除空间的相关性。

(4) 增强的熵编码方法

包括对所有的待编码的的符号采用统一的可变长编码UVLC (Universal VLC) 、基于内容的自适应可变长编码CAVLC (Context adaptive VLC) 和基于内容的自适应二进制算术编码和CABAC (Context adaptive Binary Arithmetic Coding) 。

采用多种先进的技术, 使得在同等的图像质量条件下, H.264的数据压缩比能比当前DVD系统中使用的MPEG-2高2-3倍, 比MPEG-4高1.5-2倍。

图3为H.264编码流程图。

实际中使用的H.264编码器的设计基本符合图3的编码流程, 编码器的具体工作流程如下。

(1) 将图像分成子图像块, 以子图像块作为编码单元。

(2) 当采用帧内编码时, 对图像块进行变换, 量化和熵编码, 消除图像空间冗余。

(3) 当采用帧间编码时, 采用运动估计与补偿的办法, 去除时间冗余。

图4就是与编码流程相对应的编码器的工作流程图。

3 编码器与终端测试中出现的问题

整个系统搭建完成后, 开始试验播出。在试验过程中, 我们分别用不同的接收终端对播出信号进行收测。在测试过程中, 我们对整个系统做了大量的调试工作, 使系统不断完善。下面是测试中出现的几个典型问题。

(1) 手机接收一段时间后会出现绿屏现象, 画面流畅, 但整个画面颜色变为绿色。

(2) 在接收终端上, 切换频道时经常出现死机现象。

(3) 接收终端画面停顿, 画面和声音出现卡的现象;或出现马赛克现象。编码器的码流输出不稳定。

(4) 编码器长时间运行后出现无码流输出的情况, 类似死机现象。

4 问题分析研究及解决

我们针对上述问题做了大量的测试和分析研究工作, 找到了导致问题的原因。在此过程中获得了第一手使用和测试材料, 成功解决了原来出现的问题。

(1) 手机绿屏现象

测试分析发现, H.264编码器的某个参数的循环取值有问题。测试中使用的不同编码器, 在这个参数的使用上不统一, 导致绿屏现象出现。

(2) 接收终端切换频道时死机现象

经过反复测试, 调整参数, 我们发现是H.264编码器对于时间戳的使用有问题, 需要调整。

(3) 接收画面出现停顿或马赛克现象

测试分析发现, CMMB标准中推荐的电视节目编码后的码率为384kbps或390kbps。采用H.264编码方式, 对于不同的内容会编码出不同的码率, 缓慢变化的画面码率低, 快速变化的画面码率高。码流失真性能不好是上述现象产生的原因。

(4) 编码器类死机现象

针对上述问题, 我们配合编码器厂家, 对编码器做了大量的实验测试, 结果发现是由于码流拥堵造成假死机现象, 编码器需要在增加编码监控机制, 对码流监测, 在码流出现拥堵时及时清除数据。

在上述工作的基础上, 对编码器进行调整, 上述问题得到了很好的解决。主要对H.264编码器进行了以下几个方面的调整:循环参数的取值问题、时间戳的使用问题、改善码流失真性、码流面板控制。

在编码器的控制面板中增加了编码监控, 码流面板包括显示实时码流数据、双网口IP地址, 还包括设置双网口IP地址, 控制编码器服务启动和关闭。码流监控原理是在速率控制的基础上增加软件上的速率监控功能, 将实时的码流数据通过相关服务程序传输至计算串口, 将面板和计算机串口连接即能显示码流速率。

5 改进工作带来的社会效益和经济效益

H.264视频解码的软件优化 篇6

Blackfin533在结构上是一款介于通用处理器与专用DSP之间的特殊处理器,由于DSP与PC机的指令集和外围存储器、接口等条件不同,在DSP平台上程序的执行效率往往比较低,因此,如何将DSP的性能全部发挥是实现H.264编解码的关键[1,2,3]。

基于文献[2]的Blackfin533上的H.264解码系统方案,提出了一种新的解码方案,在Blackfin533 EZ-Ki Lite开发板上调用现有模块进行整个系统的开发,硬件功能模块主要包括码流接收单元、视频解码单元、数据存储单元、数模转换单元和视频显示单元。整个系统的硬件结构如图1所示。

文献[4]对解码器进行了复杂度分析,发现解码器中计算密集型模块依次为帧内预测的插值、去方块滤波以及反变换和重建,仅这3个模块就占了解码器总复杂度的71%,本文的优化重点是去方块滤波模块。

2 解码软件设计流程及优化

2.1 软件设计流程

基于Blackfin533的解码软件设计分为3个阶段:阶段1产生C代码,阶段2优化C代码,阶段3编写汇编代码,具体流程如图2所示。

2.2 软件优化

目前,H.264开源解码器主要包括JM decoder,T264decoder,x264 decoder和ffmpeg libavcodec。本文采用的解码模型是JM decoder,它是一个基于PC的软件解码器,主要作用是解释H.264协议,测试H.264编码效率,其代码功能十分齐全,但代码运算效率很低。经过对耗时的IDCT反变换、反量化和去方块滤波模块进行软件优化,可以在DSP上实现高效的H.264解码。

2.2.1 C代码优化

为了提高程序代码的效率,必须对处理的源码进行一定的优化,参考软件JM大部分是用C语言编写的,通过分析比较[5],采用以下方法优化C代码程序:

1)去除冗余代码、规范程序结构、减少if-else的判断、调整全局和局部变量、使用寄存器变量代替局部变量,减少不必要的代码冗余;

2)避免使用超过三重循环的计算,因为Blackfin533处理器拥有2个硬件循环寄存器,充分利用这2个寄存器,就可以做到零开销的硬件循环;

3)尽量使用定点运算,由于Blackfin533没有硬件浮点单元,所以用定点数运算比浮点运算要快很多;

4)将多层循环展开,调整循环结构,更加有利于汇编优化;

5)用逻辑移位运算来代替乘除操作,因为乘除运算指令的执行时间远远超过逻辑移位指令,尤其是除法指令,使用逻辑移位运算可以加快指令的运行时间;

6)注意循环函数的调用,编写代码时尽量使上次循环与下次循环没有相关性,减少不必要的代码计算量。

2.2.2 汇编优化

DSP嵌入式程序受到硬件资源的限制,对程序流程和数据组织需要考虑硬件资源和代码运行效率,所以对解码算法的优化不仅要对PC机上C代码优化,还要结合DSP结构进行优化,使其符合DSP中C代码的规范。考虑到实时性要求以及Blackfin533的处理能力,提出了以下汇编优化策略:

1)内存分配优化

DSP嵌入式系统存储器空间通常受限[6],并且DSP内核对不同存储器空间的数据访问速度差别很大:片内空间小,访问速度快;片外空间大但访问速度慢。ADI的Blackfin533处理器的存储器结构采用片内片外两级结构。对于两级存储结构的处理器,访问片内存储器通常要比访问片外存储器快10~20倍,所以将常用数据尽量放在片内空间中。不常用的数据放在片外空间中;在调用片外数据时,尽量一次性将大块片外数据读进片内缓存,可避免每次读取少量片外带来的时间浪费。

2)数据管理优化

Blackfin533处理器的数据管理有三大关键技术:数据总线宽度的充分利用、数据的有效传输和视频操作指令数据的充分利用。

Blackfin533外部数据总线宽度为32 bit,可以一次存取4 byte[7]。在数据的批量处理时,使用一次存取4 byte来代替一次存取3 byte或者1 byte会节省指令的执行条数,大大提高执行速度。

数据传输的优化则是利用直接存储器访问(DMA)技术[8]:DMA控制器将数据从片外数据存储器读入到片内,程序执行时就直接从片内调用相应的数据,该段程序执行完毕后再通过DMA通道将处理后的数据从片内存储器传送到片外,同时,DMA控制器允许Blackfin533或外部设备指定数据传送操作,然后返回正常操作中,这样可以大大提高程序的运行速度。

另一关键技术是利用算法中存在大量数据并行的特点,充分利用DSP的视频操作指令集。由于Black fin533的寄存器一般是32 bit,而视频图像中像素采用8 bit表示,视频编解码中大量的运算都是基于8 bit进行的,因此,采用视频操作指令集可以提高处理速度。

3)软件流水设计优化

在图像压缩的DSP算法中,存在大量循环操作,因此充分地运用软件流水技术能极大提高程序的运行速度。

Blackfin533处理器拥有十级流水线,具有很强的指令并行执行能力。Blackfin533应用软件流水技术安排循环内的指令运行方式,重新编排循环指令,对一个循环结构的指令进行调度安排,使循环的多次迭代能够并行执行。最典型的方法就是循环展开,即在程序里把小循环的迭代展开,使可能并行的指令数增加,从而改进软件流水编排,改善代码性能。

3 去方块滤波优化

在解码器中,传统JM模型的去方块滤波算法[9]效率很低,运行该模块占H.264解码器约1/3的运算量,通过分析比较,发现主要原因有以下几点:滤波算法中的函数逻辑关系复杂、跳转、判断以及函数调用情况频繁;函数的循环体中存在着大量不必要的重复计算和很多用不到的数据,如条件语句的判断,造成大量的冗余计算。本节对JM模型的边界强度(BS)判断算法进行优化,根据上文的C代码优化方法,通过改变函数结构以及函数调用等情况,得到了图3所示的改进的BS判断流程,它与H.264标准中的BS判断存在很大的差别,其优势主要体现在以下几点:

1)循环体运算量明显减少:在传统JM模型的BS判断中,对所有BS值(1~4)分别进行16次判断(由于边界有16个点,所以对每个点都做了滤波强度判断),这明显造成程序冗余。因为当BS=3,4时,只取决于预测模式是否为帧内模式和模块是否为边缘模块即可,优化后的流程把BS=3,4的情况首先判断出来,不必进行16次的重复判断,这将大大减少循环体内的运算量。

2)函数调用次数大大减少。在传统JM模型的BS判断中,都要取得相邻块的信息属性,并通过调用GetNeighbour函数来实现,而且在循环内反复的判断和调用;而在优化后的边界强度判断中,不再进行GetNeighbour函数的调用。在JM模型的GetNeighbour函数中存在大量的if-else语句,而且很多是没有意义的判断,优化后重新改写了GetNeighbour函数,精简了大量的冗余判断,并且将优化后的GetNeighbour函数直接放在主程序中运行,提高函数执行的速度。

3)循环参数计算量减少。在传统JM模型的BS判断中,循环内部有很多语句和参数与循环无关,如P块和Q块的信息属性;优化过程中可以将这些语句调整到循环外部,将循环判断语句调整到整个边界滤波强度判断的底部,这将会避免大量的冗余计算。

4 实验与分析

根据上述的优化方法,进行实验的对比:实验过程是以JM86模型为基础,同时选取foreman_qcif和silent_qcif参考序列,最后进行各种滤波处理。实验平台采用VC6.0编译环境、Windows XP操作系统、Celeron CPU 1.80 GHz、256 Mbyte内存。

从实验结果(见表1)可明显看出:未用滤波算法和采用滤波算法的信噪比(SNR)差异,但同样采用滤波算法的信噪比变化不明显,即图像主观质量基本不变;同时,优化算法较传统JM算法在时间上的优越性,其中时间的提高主要来自于改进的边界滤波强度判断算法的优化。

通过结合H.264解码器结构和Blackfin 533指令特点,对去方块滤波的算法进行了具体优化,实验证明,优化后算法的解码效率提高了近10%,非常有利于实时视频解码器的应用。

摘要:介绍了H.264视频解码原理,分析了基于Blackfin533的H.264解码的硬件平台和软件设计流程,重点讨论了C代码优化和汇编优化,最后对去方块滤波算法进行了具体优化,可缩短近10%的解码时间。

关键词:H.264标准,Blackfin533,视频解码

参考文献

[1]王嵩,周祥平.新标准H.264的核心技术与视频移动通信研究[J].无线电工程,2005,35(5):21-23.

[2]李炜,黎福海.基于Blackfin533的H.264解码系统方案[J].仪器仪表应户,2007,14(4):100-101.

[3]毕厚杰.新一代视频压缩编码标准-H.264/AVC[M].北京:人民邮电出版社,2005.

[4]LAPPALAINEN V,HALLAPURO A,TIMO D H.Complexity of opti-mized H.264video decoder implementation[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):717-925.

[5]刘羽楠,国澄明.基于TMS320DM642的H.264解码器的实现与优化[J].电子测量技术,2007(6):96-99.

[6]汪燮彬,刘云海,刘斌兵,等.多媒体处理库在BF5xx系列DSP上的优化[J].电视技术,2006(7):24-27.

[7]陈峰.Blackfin系列DSP原理与系统设计[M].北京:电子工业出版社,2004.

[8]干宗良,王凯,朱秀昌.基于DSP平台的H.264运动补偿解码优化[J].南京邮电大学学报:自然科学版,2007(4):16-19.

H.264标准 篇7

关键词:H.264,视频水印技术,帧间预测,鲁棒性

随着网络和多媒体技术的发展, 数字视频[1]的应用越来越广泛, 视频作品遭到恶意攻击和非法侵权的问题也越来越严重。如何有效地对数字视频进行版权保护, 成为多媒体技术发展中迫切的现实问题。视频水印技术正是为解决这个问题而受到人们越来越多的关注, 成为当前学术领域研究的热点。H.264作为最新一代的视频编码标准, 迫切要求水印技术与其相融合, 提升和改进现有的视频水印算法, 以适应新的应用环境。

在对视频水印技术及H.264标准分析研究的基础上, 研究了一种针对H.264编码的鲁棒视频水印设计算法。

2 算法描述

该算法首先将二值水印图像扫描为序列[2], 然后在H.264帧间预测编码阶段根据水印序列选择不同的区块划分范围, H.264中帧间预测块的划分方式有4种, 分别是16×16、两个16×8、两个8×16、四个8×8[3], 其运动补偿也相应地有四种。在进行帧间预测时, 本算法首先跳过对16×8区块的预测, 如果预测算法所决定的区块划分大小为16×16, 算法将根据水印比特序列中的不同值决定是否将此16×16的区块划分成16×8的区块;如果预测算法所决定的区块划分大小不是16×16, 则直接进行熵编码和码流生成。此算法如图1所示。

2 算法实施步骤

2.1 水印图像二值化

水印图像先行进行二值处理[4], 使水印图像的数据中只包含0和1两种, 以方便进行嵌入处理。为了得到理想的二值图像, 一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阈值的像素被判定为属于特定物体, 其灰度值以255表示, 否则这些像素点被排除在物体区域以外, 灰度值为0, 表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值, 并且某处在一个具有其他等级灰度值的均匀背景下, 使用阈值法就可以得到比较好分割效果。如果物体同背景的差别表现不在灰度值上 (比如纹理不同) , 可以将这个差别特征转换为灰度的差别, 然后利用阈值选取技术来分割该图像。动态调节阈值实现图像的二值化可动态观察其分割图像的具体结果。其二值化处理的流程图如图2。

所采用的水印图像如图3

图3 (a) 中的图像经过二值变换后得到的16进制代码如下。

2.2 水印图像的Arnold置乱

Arnold置乱[5]是V.J.Arnold在遍历理论研究中提出的一种变换, 俗称猫脸变换, 其原意为 cat mapping。目前, Arnold变换多作为数字图像置乱的一种技巧。Arnold变换公式如下[1,2]:

(x'y') =[ (1112) (xy) ] (mod1)

置乱操作在MATLAB中实现。

Arnold变换具有周期性, 而且周期就是迭代到某一步时, 将重新得到原始图像的迭代次数。Dyson和Falk给出了离散Arnold变换的周期性, 对任意的N (N>2) , Arnold变换的周期为TNN2/2。图3 (b) 经过Arnold置乱后得到的图像如图4。

2.3 水印嵌入

算法通过在编码模式上的强行选择来进行信息的隐藏, 具体的实现如图5所示。

嵌入水印前, 残差帧宏块划分如图6。

可以发现在残差帧中图像变化平坦的区域, 宏块的选择都是16×16, 在嵌入水印后可以发现部分宏块被划分成了更小的块 (图7) , 这种嵌入算法对视频效果的影响可以忽略, 因为此算法不会修改任何帧像素的值, 可以达到更高的保真度。

图 (7) 中用粗线条框住的就是嵌入水印的位置, 按照上图所示, 嵌入的数据为:01010101100000000000000101。

根据上例, 定义水印与宏块划分的关系如下

{V (i) 16×16m[j]=0V (i) 16×8m[j]=1

3.4 水印提取

根据H.264压缩编码的语法标准[8], 16×16宏块在I片、P片、B片中都存在, 但是本算法使用到的16×16宏块, 仅仅为帧间预测中的16×16宏块, 所以在提取水印时首先要跳过对I片中宏块的检测, 然后对B片和P片中的16×16宏块及16×8宏块进行检测, 并得出水印序列 (图8) 。

m[j]={0, V (i) 16×161, V (i) 16×8

4 实验结果

本算法的实施环境为:CPU:奔腾E2160, 内存:3 G。为了对算法进行仿真和性能测试, 采用C语言和Matlab语言结合编程的方式, 运用VisualC-6.0和Matlab R2009a的编程平台, 对算法进行了程序上的实现。其中对水印图像的预处理方面由Matlab语言实现, 并将处理后的水印序列保存在一个图像文件中, 以便用C语言进行水印的嵌入。同样, 在水印提取时是将提取出的水印序列保存在一个图像文件中, 然后用Matlab语言对其进行后期处理, 并恢复为水印图像。H.264编解码模型采用的是H.264官方的参考软件JM86版, 实验所用QP=28[6]。

实验所用视频序列为标准视频序列, 如表1所示。

算法在JM代码中实现, 嵌入水印在encode_one_macroblock () 函数中实现, 提取水印在read_one_macroblock () 函数中实现, 水印添加后的码率的变化情况如表2。可以看到水印前后码率的变化并不大, 冗余率 ( (含水印视频码率一原视频码率) /原视频码率) 为2.4%~0.16%, 在保证图像清晰度的条件下可以忽略, 满足码率稳定的要求。

根据表3数据显示, I片的数据量在嵌入水印前后没有变化, B片的数据量在嵌入水印后变化较大, 例如在foreman视频中B片的数据量较大, 嵌入水印后所产生的冗余度在三次实验中也是最大的, 而P片在承担了大量的水印嵌入数据时也不会产生大量的冗余数据, 所以本算法在B片少量出现的情况下可以达到最佳的效果。

4.1 水印不可见性

不可见性[7]主要有主观和客观之分。主观性主要根据个人对视频图像的观察来判定, 效果如表4所示。

用客观数据PSNR[8]作为客观评价的标准, 图9是利用水印图像b经过置乱后嵌入akiyo视频素材, 提取后的PSNR值的对比情况。

从图9可以看出PSNR值的变化非常小, 基本上在0.1以内。说明本算法对图像质量的影响非常小。

水印的提取情况如表5。

4.2 抗噪声攻击

噪声攻击[9]是常见的数字水印攻击方式, 但噪声攻击的对象一般为视频中的亮度或者色彩分量, 本算法的水印嵌入位于控制域, 加入噪声攻击无法对其水印信息造成破坏。

4.3 帧截取攻击

由于H.264视频压缩标准中帧截取的攻击实现非常困难, 本次攻击采用的是在提取水印时放弃第二帧的水印信息提取, 攻击后水印图像的情况如表7。

总结:通过以上几种攻击方式可以看出:控制域水印嵌入对噪声攻击等面向图像的攻击手段不敏感, 但是在帧截取的攻击下对水印图像造成了一定的破坏。

4.4 实时性分析

实时性分析主要是针对编解码的时间是否增加, 对程序的实时性的测试, 本算法主要在帧间预测阶段实现水印嵌入, 对编码的时间影响非常小, 甚至能减少编码时间, 提高编码算法的实时性, 现将实验时各帧编码时所花费的时间进行对比, 就能分析出本算法对编码时间的影响。

表8是嵌入水印前后时间的比较, 可以看出, 由于水印算法跳过了对16×8模式的运算, 在大多数帧的编码时间比原编码程序的时间要短, 这说明了本算法在实时性上是明显的。

5 结束语

数字视频水印有健壮性、透明性、盲检测等基本要求, 如何使水印嵌入算法既有较好的透明性又能抵抗有意或无意的攻击, 是数字视频水印研究的主要课题之一。

探讨的主要是基于H.264标准的鲁棒视频水印技术, 主要工作如下。

1) 本算法对视频图像中的图像数据不做任何修改, 只针对宏块的划分模式做修改, 所以本水印算法对视频图像的质量没有影响, 只需要考虑压缩算法对图像的影响。

2) 本算法的水印提取算法相对简单, 有利于实时实现。

视频水印技术研究涉及众多科学领域, 内容繁多, 成熟实用的水印算法设计仍有较大的难度, 而H.264编解码过程又较为复杂, 更优的算法现仍在研究之中。

参考文献

[1]唐松生, 董颖.数字视频水印技术综述.计算机安全, 2007; (9) :31—33

[2]王向阳, 杨红颖, 赵红.一种新的自适应量化数字音频水印算法.声学技术, 2004;3:117—120

[3]毕厚杰, 新一代视频压缩编码标准H.264/AVC.北京:人民邮电出版社, 2005:84—91

[4]吴锐, 黄剑华, 唐降龙, 等.基于硬度直方图谱象类的文本图像二值化方法, 电子与信息学报, 2009; (10) :2460—2464

[5]冯茂岩, 冯波, 浓春林.基于分块DCT变换和Awod置乱的自适应图像水印算法.计算机应用, 2008; (1) :171—173

[6]余小军, 英玮, 范科峰, 等.一种抚H.264压缩的低比特率视频水印算法.计算机工程, 2008; (2) :171—173

[7]钟伟, 马希俊, 余松煌.一种使用Legendre阵列的图像水印.通信学报, 2001;22 (1) :1—63

[8]郑振东, 王沛, 陈胜.基于运动矢量区域特征的视频水印方案.中国图象图形学报2008, 10 (13) :1926—1929

[9]单承赣, 孙德辉.基于H.264/AVC低比特率视频流的双水印算法.计算机应用, 2007;27 (8) :1922—1925

上一篇:孕期保健与营养下一篇:部门预算编审