H.264编码(共8篇)
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
关键词:H.264;帧间预测;模式选择
中图分类号:TN919.81 文献标识码:A文章编号:1007-9599 (2011) 07-0000-02
Fast Inter Prediction Mode Selection Algorithm Based on H.264
Chen Zhaojun1,2,Wang Yan1,Wang Ying1
(1.Shenyang Ligong University,Shenyang110168,China;2.Xi’an SICONG Co.,Ltd.,Xi’an710043,China)
Abstract:The author studies classical inter mode selection of algorithm of H.264 and proposes a mode selection algorithm which bases on the analysis of the coded macroblock.Do simple cluster analysis of coded macroblocks around the current coding macroblock by taking advantage of correlation between macroblocks and then according to the result of the analysis choose corresponding encoding.As result,reduce the complexity of the algorithm,and improve the efficiency.
Keywords:H.264;Inter prediction;Mode selection
H.264是新一代的高性能编解码标准,它采用基于混合编码结构,在宏块编码时采用率失真优化策略,使编码效率达到最佳效果。H.264采用了包括四分之一像素精度的运动估计,树状运动补偿,多参考帧模式,整数DCT变换,熵编码和去块效应滤波等技术使编码效率大大提高,但是带来了巨大的编码运算复杂度,这样导致了编码计算复杂度成倍增加,编码时间大大增大,所以需要需要通过降低码率,提高视频序列质量。本文运用一种快速帧间预测模式选择算法,在不明显降低视频序列的质量下,提高编码的效率,降低算法的复杂度。
一、H.264帧间模式选择算法算法原理
H.264在进行帧间编码时,分别对帧内模式(9种帧内4×4模式和4种帧内16乘16模式)进行帧内预测和对帧间模式(Skip、16×16、16×8、8×16、8×8、8×4、4×8和4×4)进行运动估计。宏块的子块采用小块的模式时,对运动的细节表述的就越精确,对图像残差进行编码需要的比特数就越小,但是用来描述其它参数(如分割模式、运动矢量和参考帧等)的比特数就会变大,这样就需要再描述图像残差的比特数和描述运动矢量比特数做出平衡,选取综合起来比特数最小的分割模式作为最终编码模式。通过编码控制模型计算各个模式的代价函数,选择代价最小的模式作为最终编码方式。最终模式下不仅图像残差进行编码需要的比特数较少,而且编码模式,运动矢量和参考帧这些信息的编码比特综合一起最小。
二、模式选择算法流程
模式选择算法流程如下:
1.对宏块进行模式16×16、16×8和8×16运动估计,然后计算出RDO;
2.对宏块每个8×8子块(4个)进行模式8×8、8×4、4×8和4×4运动估计,并计算RDO,选择最小的模式作为该子块的模式。依次进行完4个8×8子块之后统计,得出总的RDO;
3.计算Skip模式的RDO;
4.计算帧内模式的RDO;
5.从帧内模式和帧间模式中选择RDO最小的作为该宏块最终编码模式。
三、算法步骤
具体步骤如下:
Step1针对当前宏块周围的4个宏块,对其每一个4×4子块(共64个子块)的运动向量进行分析,找出64个运动矢量中不同的个数m,m<2则执行Step2,如果2≥m<7则执行Step3,如果m≥7,则执行Step4;
Step2选择模式1和Skip模式,跳转到Step5;
Step3选择模式1,模式2,模式3,模式4和Skip模式,跳转到Step5;
Step4对64个运动矢量进行简单聚类分析,根据最终聚类数n进行如下模式选择;
1.如果n<7时,选择Skip模式,模式1,模式2,模式3,模式4;
2.如果7≤n<≡18时,采用模式4,模式5,模式6和模式7;
3.其余情况下选择模式7。
Step5据选定的模式进行运动搜索,然后选取他们的最优结果。
四、实验结果
对CIF(352×288)格式的标准视频序列akiyo,stefan,news,mother,mobile,foreman,container分别在编码器JM10进行编码实验。采用baseline模式,I-P-P-P帧的顺序,参考帧为一帧。JM10帧间只采用16×16、16×8、8×16、8×8、8×4、4×8、4×4和Skip模式,与本文算法进行对比实验。
对图像进行客观评价,统计每个序列在QP为28、32、36、40的亮度PSNR值、P帧码率和P帧编码时间。
表1列出了本算法与JM10的性能比较结果,其中:
(1)
表示本算法相对于JM10亮度PSNR的下降值;
(2)
表示本算法相对于JM10亮度P帧码率的上升值。
表1.本算法与JM10的性能比较结果(△BT即△Bitrate)
QP=28QP=32QP=36QP=40平均值
视频序列△PSNR△BT△PSNR△BT△PSNR△BT△PSNR△BT△PSNR△BT
akiyo0.041.10.0700.060.160.080.350.060.4
stefan0.11.40.110.960.091.120.041.110.091.15
news0.126.80.135.30.094.40.042.050.14.64
mother0.040.890.020.560.040.380.011.060.030.72
mobile0.131.660.111.590.092.140.061.940.11.83
foreman0.082.960.033.750.0320160.011.740.042.65
container0.061.810.072.030.071.250.050.790.061.47
平均值0.082.370.082.030.071.660.041.290.071.84
从表1可以看出,对于不同序列△PSNR平均损失为0.07dB,而p帧码率平均上升为1.84%,基本没有对编码性能造成影响。
表2列出了本算法和JM10的编码时间比较结果,表中列出的数据表示不同的序列相对于JM10的编码时间下降的百分比。
表2.本算法和JM10的编码时间比较结果
视频序列QP=28QP=32QP=36QP=40
akiyo23.8620.1215.857.35
stefan36.7733.8531.0927.37
news30.7625.3521.4416.27
mother35.1129.8720.007.80
mobile45.2644.7644.3443.68
foreman39.1234.6930.3021.78
container43.7134.7727.0120.71
平均值36.3731.9227.1520.71
五、结论
本算法利用宏块之间的相关性,对当前编码宏块周围已编码宏块的运动矢量进行聚类分析,然后进行相应的模式选择。实验结果表明在信噪比平均损失为0.07dB,而码率平均上升为1.84%基础上,图像质量没有发生主观上的变化,编码时间平均下降20.71%-36.37%。明显降低了编码复杂度,提高了编码效率。
参考文献:
[1]郭再荣,喻占武,游韵.H.264帧间块模式选择与快速运动估计算法[J].计算机工程与应用,2006,6:30-32
H.264编码 篇3
关键词: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]:
置乱操作在MATLAB中实现。
Arnold变换具有周期性, 而且周期就是迭代到某一步时, 将重新得到原始图像的迭代次数。Dyson和Falk给出了离散Arnold变换的周期性, 对任意的N (N>2) , Arnold变换的周期为TN≤N2/2。图3 (b) 经过Arnold置乱后得到的图像如图4。
2.3 水印嵌入
算法通过在编码模式上的强行选择来进行信息的隐藏, 具体的实现如图5所示。
嵌入水印前, 残差帧宏块划分如图6。
可以发现在残差帧中图像变化平坦的区域, 宏块的选择都是16×16, 在嵌入水印后可以发现部分宏块被划分成了更小的块 (图7) , 这种嵌入算法对视频效果的影响可以忽略, 因为此算法不会修改任何帧像素的值, 可以达到更高的保真度。
图 (7) 中用粗线条框住的就是嵌入水印的位置, 按照上图所示, 嵌入的数据为:01010101100000000000000101。
根据上例, 定义水印与宏块划分的关系如下
3.4 水印提取
根据H.264压缩编码的语法标准[8], 16×16宏块在I片、P片、B片中都存在, 但是本算法使用到的16×16宏块, 仅仅为帧间预测中的16×16宏块, 所以在提取水印时首先要跳过对I片中宏块的检测, 然后对B片和P片中的16×16宏块及16×8宏块进行检测, 并得出水印序列 (图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
H.264编码 篇4
图像通信是近年来取得长足发展的现代通信技术, 图像压缩的进步则是通信发展中的重要组成部分。2003年3月, ITU-T/ISO正式公布了H.264视频压缩标准, 由于比以往的出色的性能, 被人们成为新一代视频压缩标准。它的优异的压缩性会在数字电视广播、视频实时通信、网络视频媒体传输以及多媒体短信等各个方面发挥重要的作用。本文主要是对H.264中的运动补偿中的关键技术进行分析。
二、H.264中运动补偿关键技术
对一个视频序列相邻的两帧或者几帧具有很强的相关性, 将图像的每一帧分成许多互部不叠的宏块, 利用当前的帧的前一帧或者后一帧给定一定的搜索范围内根据一定的匹配准则找到当前块的最相似块, 这个过程称为移动估计 (Motion Estimation, ME) 其表达方式是运动矢量 (Motion Vector, MV) , 如图2.1所示。
把前一帧的运动部分信息根据运动矢量补偿过来的过程称为运动补偿 (Motion Compensation, MC) 。在H.264中运动补偿技术在补偿的块的划分、补偿精度、多参考帧等方面有独到之处。
2.1 块的划分
与以前的视频标准不同, H.264中的获得运动补偿的块结构大小不再局限于宏块的基础, 可以将宏块分解成子块, 子块进行运动估计得到MV。每个宏块可以分解为1个16×16块、2个8×16块、2个16×8块或者4个8×8块。如果1个宏块被分解为4个8×8块, 每个8×8块还可以在分解成4个4×4的更小的子块, 如图2.2所示。
每个分割或子宏块都有一个独立的运动补偿。对大的分割尺寸而言, MV选择大分割类型只需要较少的比特, 但是补偿残差在细节区域能量将会非常高, 大的分割比较适合平坦区域;小尺寸分割运动补偿残差能量低, 但是需要比较多的比特表征MV和分割选择, 比较适合多细节区域。宏块的色度充分 (Cr和Cb) 则为相应亮度的一半 (水平和垂直各一半) 。色度块采用和亮度块同样的分割模式, 只是尺寸减半。
2.2 运动补偿精度
在基于块的搜索中相应快的步长部一定是整数。为了更精确的运动表示H.264标准中用了分数像素精度, 对亮度成分采用1/4像素精度, 色度1/8像素精度。。亚像素位置的亮度和色度像素并部存在于参考图像中, 需要利用临近已编码点进行内插而得到, 图2.3为亮度半像素位置内插。
内插像素生成:
首先生成参考图像亮度成分半像素。半像素点 (如b, h, m) 通过对相应整数像素点进行六抽头滤波得出, 权重为 (1/32, -5/32, 5/8, 5/8, -5/32, 1/32) 。b点的计算如下:
类似的, h有A、C、G、M、T滤波得到。当临近 (垂直或者水平方向) 像素点的所有像素都计算出, 剩余的半像素点便可以通过对6个垂直或者水平方向的半像素点滤波得到。例如j由cc, dd, h, m, ee, ff滤波得到。
半像素点计算出来以后, 1/4像素点就可以通过线性内插得出, 如图2.4所示。1/4像素点如 (a, c, i, k, d, f, n, q) 由临近像素内插得到, 如剩余1/4像素点 (p, r) 由一对对角半像素点线性内插得出。如e由b和h获得。
2.3 多参考帧
在以前的视频标准中对P帧进行帧间预测时, 只容许以前一个图像或者P图像为参考帧;对B帧图像进行预测时只容许以前后I图像或P图像为参考图像。作为一项改进, 在H.264中引入了多参考帧预测技术, 容许前向参考帧的数目从1到5。参考图像甚至可以时采用双向预测编码的图像。这样可以对周期性运动, 平移封闭运动和不断在两个场景间切换的视频流有效果非常好的运动预测。使用多参考帧同时也能很好的码流误码恢复, 但是需要额外的时延和存储容量。
基于JM8.6平台的多参考帧的测试结果如表2.4所示。QCIF序列的有三种, 运动复杂度从低到高, 分别为Akiyo、Silent和Coastguard它们的编码帧率分别为10fps、15fps和30fps;CIF序列为2种, 包好的运动复杂从低到高分别为Silent和Coastguard, 它们的编码帧率都是30fps。2.4表中的最右边4列数据是相对各自测试序列使用1个参考帧时PSNRY、编码时间、运动估计时间的增量和增率。有表中可以得出, 对于运动很平缓的Akiyo序列, 参考帧增加时, PSNRY只增加很缓慢, 最多为0.02dB, 但是编码时间和运动估计时间平均增加82.29%和200.05%;对于运动较为复杂的Silent和Coastguard, 参考帧增加时, PSNRY, 增加较Akiyo多, 但是最多为0.08dB, 编码时间和运动估计时间平均增加为72.83%和199.35%。
由上面的统计可以看出, 多参考帧并不像理论上分析的对编码有很大的提高, 但是却带来很大的开销, 所以在一般应用场合, 要尽量避免使用多参考帧。
参考文献
[1]Iain E.G.Richardson.H.264andMPEG-4Video Compression Video Coding for Next-generation Multimedia, Wiley Press, 2003.
[2]Yao Wang, Jorn Ostermann, Ya-Qin Zhang.Video Processing and Communication, Pearson Education, 2002.
[3]Joint Video Team (JVT) of ISO/IEC MPEG&ITU-T VCEG, “Joint Video Team (JVT) of ISO/IEC MPEG&ITU-T VCEG”, JVT-F100d2.doc, 6th meeting, Awaji, Island, JP, 5-13December, 2002.
[4]T.Wiegand, G.J.Sullivan, G.Bjontegaard, and A.Luthra, “Overview of the H.264/AVC Video Coding Standard, ”IEEE Trans.Circuits Syst.Video Technol., vol.13, pp.560–576, July2003.
[5]毕厚杰.新一代视频压缩标准H.264, 人民邮电出版社, 2004.
[6]陈志波.H.264运动估值与网络视频传输关键问题研究, 清华大学, 毕业论文, 2002.
[7]Joint Video Team (JVT) Test Model JM8.6Software at http://iphome.hhi.de/suehring/tml.
H.264编码 篇5
由于视频本身具有数据量巨大、占用网络带宽等特点, 对网络通信系统的有限带宽、存储空间以及计算机的计算能力都提出了更高要求。而无线网络环境下, 通信的时延变化频繁, 丢包率高, 易受干扰等特点, 对视频传输的可靠性提出了更高的挑战。
视频必须经过编码才能在网络上进行有效的传输, 视频图像编解码标准也比较繁杂, 应用广泛的有国际标准化组织的MPEG、国际电信联盟电信部ITU-T的H.261、H.263、H.264, 以及MDC、AVC等。H.264作为蓝光光盘的编码标准, 其拥有的高数据压缩比, 高网络适应能力等特点, 而日益流行起来。
目前的网络仿真器, 如NS2、OPNET等, NS2以其良好结构的仿真器, 公开的源代码等诸多优点, 在研究领域得到广泛使用。而NS2虽然在内核中提供了FTP、CBR、Telnet、Web等传统网络应用的流量发生器, 但却没有提供H.264编码视频的视频流量发生器。
本文在SVEF框架 (可伸缩视频流评估框架) 的基础上, 结合NS2平台, 提出了一种利用NS2建立无线网络中研究H.264编码视频传输仿真平台的方法, 扩展了NS2流量发生器模块, 通过建立模型实例, 对H.264视频流在无线网络环境下传输进行了仿真。仿真实验表明, 我们提出的H.264视频流传输仿真方法是可行有效的。
1 H.264视频编码特性
H.264标准压缩系统由视频编码层 (VCL) 和网络抽象层 (NAL) 两部分组成。VCL中包括编码器与解码器, 主要功能是视频数据压缩编码和解码, 它包括变换编码、运动补偿、熵编码等压缩单元, 同时也可以传输按当前的网络情况调整的编码参数。网络抽象则用于为视频编码层提供一个与网络无关的统一接口, 它负责对视频数据进行封装打包后使其在网络中传送, 它采用统一的数据格式, 包括单个字节的包头信息、多个字节的视频数据与组帧、逻辑信道信令、定时信息、序列结束信号等。包头中包含存储标志和类型标志。存储标志用于指示当前数据不属于被参考的帧。类型标志用于指示图像数据的类型。
2 NS2中H.264视频流量仿真模块扩展方法
2.1 H.264视频流量仿真原理及模型
由于NS2并没有H.264视频流量发生器, 同时, H.264编码的视频流量并不能简单的定义为UDP或者CBR流量。因为H.264的编码特性, 其码率具有较强的突发性和随机性, 在仿真的时候, 为了达到与实际近似的仿真效果, 我们以真实有效的原始视频文件作为信源, 提取视频的关键帧和数据量等信息, 以此作为流量发生器的输入。
(1) 基于SVEF框架, 对原始YUV视频进行编码, 然后用H.264解码器生成原始视频流文件。在解码trace文件中, 要记录提取帧序号、帧类型、时间戳、帧大小等信息, 以作为NS2流量生成的原始输入。
(2) 在原始视频流trace文件中插入NAL单元所对应帧号。将原始视频流trace文件转换成可用于NS2的发送流量trace文件。
(3) 编写NS2仿真脚本, 在NS2中进行仿真。NS2中, 一个Source代理, 用于转换NS2发送trace文件并生成相应的数据包。在接收端, 一个Sink的代理被用于接受SVC数据包, 并记录相关信息, 如接收时间, 包的大小, 帧序号等。
(4) 对仿真结果进行评估。Sink代理生成的接收流量trace文件可以计算数据包级别的端到端的延时, 或者计算丢包率, 也可以用来生成SVEF所需要的文件格式。
(5) 还原H.264视频文件。用NAL单元滤波器生成NAL单元trace文件。这个过程中, 太迟到达的帧和那些不可被编码的帧将被去除。接下来, NAL单元trace文件可以用来还原H.264视频文件。最终, 我们可以将接收并处理过的H.264视频文件转换成YUV视频进行播放。为了比较PSNR, 我们还需要通过拷贝前帧来弥补丢失的帧。丢失的帧可以根据NAL单元跟踪文件中的帧序号识别。
3 NAL单元头格式定义
通过UDP协议传输视频流时, 需要定义NAL单元头格式。NAL单元头主要包含三个参数, Lid、Tid和Qid。Lid是基础层ID, 主要用来表示这一层属于哪一个NAL单元, Tid是时间分级ID, 用来控制帧率。Qid是品质层ID, 用来控制可以被调节品质的视频子流。
4 NS2视频流量生成模块
在SVEF框架的解码器产生的trace文件中包括了其实际的地址, 数据长度, Tid序号, 包类型, 帧序号以及是否可被丢等信息。而ns2发送trace文件中需要有发送的时间, 帧的大小, Tid序号, 和对应的帧序号。我们需要对其进行一定的处理, 使需要的数据和字段相对应, 并将帧序号插入到ns2发送trace文件中, 以便用接收的trace文件还原视频。
5 接收视频修补模块
PSNR是最普遍, 最广泛使用的评鉴画质的客观量测法, 因此我们采用PSNR来评估接收到视频的质量, 需要对接收到的视频进行修补, 对丢失的帧, 以其完整的前一帧填补, 才能计算出相应的PSNR。我们改进了修补程序, 使其可以对任意分辨率的视频进行修补。
6 仿真实例
6.1 仿真环境
仿真环境基于ns2.35, 网络中存在三个无线节点, 节点0以固定码率0.2Mbps向节点1传输H.264视频流量, 以固定码率0.3Mbps向节点2传输FTP流量。
分别以内容相同, 时间长为10秒, 帧率为30帧/秒, 分辨率为VGA、CIF的两段视频作为ns2流量生成器的输入源, 同时分别设置网络MAC层协议为802.11和802.11e, 以上文提到的方法进行仿真实验。
6.2 测试结果与分析
测试得到的两种分辨率H.264视频在802.11和802.11e的网络环境下的端到端延时 (见图1) 和丢包率 (见表2) 。
从图1中, 我们可以看出传输cif分辨率时, 在802.11e协议下, 延时具有较大波动, 这主要是因为H.264视频具有较高的突发性, 在其I帧传输时, 因其I帧所含信息量较大, 所以会造成较高延时。同时, 图1也反映出了802.11e虽然一定程度增加了延时, 却大幅降低了丢包率, 最大化的保留了I帧, 这也是重新打包视频的关键所在。图1中, 802.11e协议下, 延时也没有呈现出一定的规律性, 是因为VGA分辨率大幅增加了画面信息量, 在0.2Mbps的网络环境下, I帧因为数据量过大, 造成延时急剧升高, 最终大多被丢弃, 因此, 其延时并没有规律性的大幅波动。
图2反映出了, Cif视频在802.11协议和802.11e协议下传输后, 由于802.11e可以保留更多的I帧, 因此形成了更多的波峰, 最终合成的视频中, 其平均PSNR和画面表现也更为出色。Vga分辨率在802.11和802.11e协议下传输后计算的峰值信噪比比较相近, 由于我们设定的带宽为0.2Mbps, 无法适应Vga分辨率的高码率传输, 因此在802.11e协议下, 虽然其丢包率更低, 但是由于I帧同样大量丢失, 仍然无法还原出更多的画面, 最终造成了二者非常接近的PSNR。
7 结论
本文对ns2平台上的H.264视频传输仿真进行了探讨和分析, 以SVEF框架为基础, 完成了原始H.264视频流到ns2发送流量的转换, 使之可以产生ns2仿真可用的视频传输流量。同时改进了其视频修补模块, 使其可以对任意分辨率视频进行处理, 拓展了实验视频素材的选择, 以便更好地评估实验结果。最后通过仿真实例, 验证了VGA、CIF不同分辨率的视频在不同MAC协议下的表现, 对比证明了我们设计的仿真方案能够有效反映出不同场景下无线网络的H.264视频传输性能。
摘要:H.264编码的视频包含视频编码层和网络抽象层, 因其具有高压缩比、节省网络带宽等适合在不同网络上传输的特性, 被越来越多地应用在各类视频服务场景中。而ns2以其开源、扩展性好等特点, 也被广泛用于各类网络场景的仿真。我们设计并实现了H.264编码视频流量发生器, 并完善了对接收端接收视频进行处理的工作, 以便更好的评估仿真结果。最后通过实验, 对我们提出的视频传输仿真方案进行验证, 证明我们设计的仿真方案能够有效反映出不同场景下无线网络的H.264视频传输性能。摘要
关键词:H.264,无线传输,仿真,视频
参考文献
[1]陈亮, 张正华.基于日.264无线视频传输的码率控制算法研究及实现 (D) .扬州大学, 2012.
[2]周建利.基于H.264的视频传输技术研究 (D) .西安电子科技大学, 2012.
[3]陈正宇.基于NS-2的无线网络视频QoS平台的实现[J].电子设计工程, Vol 17No.10 2009 (10) .
[4]王明伟, 王奇, 杨洁, 林建中.基NS-2的视频流仿真方法研究[J].计算机技术与发展, 2010 (2) .
[5]Ke C H, Shieh C, Hwang W, etal.An evaluation framework frame from realistic simulations of MPEG video transmission[J].Journal of Information Science and Engineering, 2008, 24 (2) 425.
[6]梅旭, 周应权, 陈起.基于NS-2的QoS控制方法试验平台的仿真和实现[J].科学技术与工程, 2006, 6 (2) :216-219.
[7]江雍, 林其伟.一种基于Evalvid的H.264视频Qos评估系统的研究[J].电视技术, 2007 (10) .
H.264编码 篇6
关键词:运动估计,运动复杂度,PSNR
H.264是ITU-T和ISO/IEC联合制定的视频编码新标准。H.264的优越的性能主要体现在同样的重建图像质量下, 它能提供比MPEG-4, H.263标准更高的压缩性能, 使图像的数据量减少50%。但H.264卓越的编码性能是以提高编码复杂度为代价。在编码过程中消耗时间主要集中在运动估计部分, 因此, 研究快速运动估计算法成为提高编码速度的一个重要途径。
1 运动估计技术
视频编码中, 将图像序列的每一帧分成多个大小为M*N的宏块, 再对各块独立进行编码, 运动估计就是在帧间预测时, 找到当前帧的像素是从上一帧图像的什么位置移动过来的。
块匹配法是目前最常用的运动估计方法, 主要思想是对当前每一帧中的每一块根据一定的匹配准则在参考帧某一给定搜索范围内找出与当前块最相似的块, 即匹配块。由匹配块与当前块的相对位置算出运动位移, 即运动矢量。
块匹配准则, 是影响图像质量的一个重要因素。本文采用RD代价函数J (m, λMOTION) 。
是两个块的绝对误差和, s, c分别表示原始图像和参考图像, B1, B2为块尺寸。MV_COST (m, MOTION) MOTION.R (m p) 表示用于编码运动矢量的比特数, m (m x, my) T, p (px, py) T分别是实际矢量和预测矢量, λMOTION为拉格朗日乘数因子, R (m-p) 为运动信息。J (m, λMOTION) 兼顾了图像质量和编码速率这两个方面的要求, 将这两个要求的折中而不是其他匹配准则仅顾及图像内容的匹配程度, 这有助于提高编码的整体性能。
2 H.264参考模型运动估计优化方案
典型的快速运动搜索方法主要有:三步搜索算法、新三步法、六边形搜索法、钻石形搜索法等等。这些快速搜索算法都以性能不同程度的下降来换取处理速度的大幅提高。但搜索范围小、运动平缓的时候, 效果较好。
而现在预测运动估计算法在视频编码中已经越来越得到广泛的应用。这类算法主要是以对几个可能性较大的矢量来预测最佳运动矢量以及可提前终止搜索来提高效率。
2.1 UMHexagon S算法
UMHexagon S算法包含四种搜索模式:即不对称的十字交叉搜索;非均匀多层次六边形格点搜索;六边形搜索;小钻石搜索。算法要点如下:
2.1.1 预测矢量
该算法集定义了一个矢量集, 分别是中值矢量, 上层模式的运动矢量和时间域邻近参考帧的运动矢量。
H264采用的分块模式如图1所示, 各模式之间的上下层关系如下:
2.1.2 搜索路径
采用非对称十字搜索, 步骤2中水平和垂直搜索范围为W和W/2, 两个搜索点的距离为2。该步骤得到的最佳矢量点可精确作为下一步的开始搜索点。
2.2 基于速度的三步搜索算法
2.2.1 基于速度的三步搜索算法的提出
通过上面的研究, 发现如果先根据图像的相关性对搜索块的运动范围提前加以判断并进行更优针对性的搜索则可以减少进一步计算冗余, 提高搜索效率。在这个基础上提出了基于速度的搜索算法, 这种算法增加了阈值判决机制, 即通过设定帧序列中物体的运动速度阈值, 将运动块分为微量运动块、中等运动块、大运动块, 分别采用菱形搜索算法、六边形搜索算法、UMHexagon S搜索算法, 使得在保持编码器的性能的前提下提高编码速度。
2.2.2 基于速度的搜索算法的过程
Step 0:计算可能性较大的预测矢量点和零矢量点;
Step1:若J (m, λMOTION) 最小点为零矢量点, 则以菱形搜索得到最佳运动矢量;
Step2:若不满足step1, 由阈值判定为中等运动块, 则以六边形和菱形搜索相结合来检测最佳运动矢量;
Step3:若不满足step2, 由阈值判定为大运动块, 则以UMHexagon S算法结合中等运动算法一起检测最佳运动。
2.2.3 算法特点分析
搜索点数的多少是评价算法运算复杂度的一个重要指标。图2所示的UMHexagon S算法的主要部分使用了六边形搜索算法, 其中非均匀多层次六边形格点搜索点数为N1=16*4=64, 扩展的六边形格点的搜索点数为N2=7+3*n+4。而菱形格点的搜索点数N3=9+n (3, 5) +4。可见相比UMHexagon S算法菱形搜索的搜索点数较少。
3 实验结果比较及分析
首先在VC6.0的平台上将改进算法用C语言实现, 将其集成到H.264标准测试软件JM10.1中。程序配置如下:编码帧结构为IPPP…, 以30帧为一个帧组, 总帧数为100帧。搜索范围为 (-16, 16) , 量化值为28。试验用Carphone序列属于低运动复杂度的序列, Foreman序列和Coast序列分别属于中和高运动复杂度的序列。实验统计数据见表1。
(1) PSNR是评价图像的客观标准, 本算法在PSNR方面相对于全搜索法降低约0.04d B左右, 这对于人肉眼观察, 可以忽略;而在编码速度方面则各类视频序列对FS算法和UMHexagon S算法平均节省分别为83.6%和40.5%左右。可以看出本算法可以在图像质量基本不变的前提下, 大大提高了编码的时间。
(2) 本算法对于序列细节变化的剧烈程度比较敏感。而且可以从表中看出, 本算法对各类序列的编码速度都有较大提高, 适应性很好。
(3) 其中Foreman序列, UMHexagon S算法的PSNR比全搜索法的高出0.02d B左右, 这是由匹配准则所决定的, 该准则是编码速率和图像匹配程度程度的综合反映, 但是PSNR反映的是图像匹配度, 所以全搜索法的最好但是可以看出PSNR稍差了一些。
4 结论
H264在有效提高编码效率的同时, 使运动估计模块的计算复杂度随之成块增加, 极大增加了H264的计算量, 本文对H264中运动估计UMHexagon S算法进行了分析, 然后在此基础上提出了基于块运动范围分类搜索的运动估计算法。并且通过几个典型序列的实验可知, 本算法对不同运动复杂度的视频序列在保持图像恢复质量基本不变的前提下都能具有较高程度的编码速度提高, 具有良好的实用性和适应性。
参考文献
[1]白世军, 吴晓军, 卢文涛.基于H.264视频编码的运动估计算法优化[J].电子学报, 2009, 37:1-6.
[2]毕厚杰.新一代视频压缩编码标准——H.264/AVC[S].北京:人民邮电出版社, 2005.
H.264编码 篇7
关键词:帧内预测,帧间预测,熵编码
0 引言
典型的数字电视系统是在发送端的数字电视节目源(主要由视频、音频等数据组成)先经过信源编码处理.得到压缩编码后的视频、音频码流,随后进行信源编码,需要辅助数据与控制数据的支持。信道编码实现检错、纠错功能,以提高数字电视传输信号的抗干扰能力,以便之适应信道传输特性,再进行载波调制以实现频谱搬移最后送入传输信道。目前数字视频领域,有两大制定视频编码标准的组织[1],它们是ITU-T与ISO/IEC。ITU-T制定的标准包括H.261、H.263、H.264,主要应用于实时视频通信领域[2],如会议电视。MPEG系列标准是由ISO/IEC制定的,主要应用于视频存储(VCD、DVD)、广播电视、因特网或无线网上的流媒体等[2,3]。H.264具有较强的抗误码特性,可适应丢包率高、干扰严重的无线信道中的视频传输。
1 编码技术分析
1.1 帧内预测编码
帧内编码用来缩减图像的空间冗余[4,5]。为了提高H.264帧内编码的效率,在给定帧中充分利用相邻宏块的空间相关性,相邻的宏块通常含有相似的属性。因此,在对一给定宏块编码时,首先可以根据周围的宏块预测(典型的是根据左上角的宏块,因为此宏块已经被编码处理),然后对预测值与实际值的差值进行编码,这样,相对于直接对该帧编码而言,可以大大减小码率。如图1。
1.2 帧间预测编码
帧间预测编码利用连续帧中的时间冗余来进行运动估计和补偿。H.264的运动补偿支持以往的视频编码标准中的大部分关键特性。
(1) 不同大小和形状的宏块分割
对每一个16×16像素宏块的运动补偿可以采用不同的大小和形状。
(2) 高精度的亚像素运动补偿
在H.263中采用的是半像素精度的运动估计,而在H.264中可以采用1/4或者1/8像素精度的运动估值。在要求相同精度的情况下,H.264使用1/4或者1/8像素精度的运动估计后的残差要比H.263采用半像素精度运动估计后的残差来得小。这样在相同精度下,H.264在帧间编码中所需的码率更小。
(3) 多帧预测
H.264提供可选的多帧预测功能,在帧间编码时,可选5个不同的参考帧,提供了更好的纠错性能,这样便可以改善视频图像质量。这一特性主要应用于以下场合:周期性的运动、平移运动、在两个不同的场景之间来回变换摄像机的镜头。
(4) 去块滤波器
H.264定义了自适应去除块效应的滤波器,这可以处理预测环路中的水平和垂直块边缘,大大减少了方块效应。
1.3 熵编码
视频编码处理的最后一步就是熵编码,在H.264中采用熵编码方法有三种。第一种是Exp-Golomb码[7],它适用于除变换系数之外的所有其他系数。第二种是基于上下文的自适应变长编码(CAVLC),它适用于变换系数。第三种是基于上下文的自适应二进制算术编码(CABAC)。CAVLC与CABAC根据相邻块的情况进行当前块的编码,以达到更好的编码效率。CABAC比CAVLC压缩数率高,但要复杂一些。
(1) Exp-Golomb码:
最简单的熵编码方法是对所有的句法元素,除了量化系数外,使用单一无限可扩展的码字表,这样就不必为每个句法元素设计一个专用的VLC表。它适用于除变换系数之外的所有符号,如头部等句法元素。它是有规则结构的可变长编码(如表1)。
(2) CAVLC编码[8,9]:
基于上下文的自适应变长编码是用来对差值的经zig-zag扫描的4×4(和2×2)块变换系数进行编码的方法。CAVLC利用了量化的4×4块的若干特性:①预测、变换和旦化后的块一般是稀疏的(包含了很多个0)。CAVLC利用游程编码来紧凑地代表一长串0。②zig-zag扫描后的最高非零系数常常是+1/-1的序列。③相邻块的非零系数数目是相关的。系数的数目用对照表来编码,对照表的选择取决于相邻块中非零系数数目。④非零系数的幅度在重排数组的开始处比较高(接近DC系数),在高频处比较低。CAVLC利用这一点根据最近编码的幅度,适当地选择幅度参数的VLC对照表。
(3) CABAC方法:
算术编码使编码和解码两边都能使用所有句法元素(变换系数、运动矢量)的概率模型。为了提高算术编码的效率,通过内容建模的过程,使基本概率模型能适应随视频帧而改变的统计特性。内容建模提供了编码符号的条件概率估计,利用合适的内容模型,存在于符号间的相关性可以通过选择目前要编码符号邻近的已编码符号的相应概率模型来去除,不同的句法元素通常保持不同的模型。可知基于上下文的自适应二进制算术编码算法的基本步骤是:①对每个语法元素,根据其上下文选择概率模型。②基于局部统计自适应调整概率统计③使用算术编码。实现方框图如图2所示。
上下文概率选择:根据过去的观察选择“上下文概型”。该模型为一个或几个二进制符号位的概率模型,它可以从有效模型中选择,它们是根据最近概码的数据符号的统计得来的。上下文模型储存每个二进制符号是1或0的概率。二进制化:将非二进制符号(变换系数或运动矢量)转换成二进制码。ABAC只处理1和0。
算术编码引擎:一个算术编码器所选择的概率模型对每个位进行编码。对每个位只有两个子区间(相当于0和1)
概率更新:所选择的上下文模型根据实际的编码值加以更新(如位值为“1”,则频度“1”的概目增值)。
2 H.264在视频会议中的应用
目前,大多数的视频会议系统均采用H.261或H.263视频编码标准,而H.264的出现,使得在同等速率下,H.264能够比H.263减小50%的码率[10]。也就是说,用户即使是只利用 384kbit/s的带宽,就可以享受H.263下高达 768kbit/s的高质量视频服务。H.264 不但有助于节省庞大开支,还可以提高资源的使用效率,同时令达到商业质量的视频会议服务拥有更多的潜在客户。
面向IP和无线环境 H.264草案中包含了用于差错消除的工具,便于压缩视频在误码、丢包多发环境中传输,如移动信道或IP信道中传输的健壮性。
为了抵御传输差错,H.264视频流中的时间同步可以通过采用帧内图像刷新来完成,空间同步由条结构编码(slice structured coding)来支持。同时为了便于误码以后的再同步,在一幅图像的视频数据中还提供了一定的重同步点。另外,帧内宏块刷新和多参考宏块允许编码器在决定宏块模式的时候不仅可以考虑编码效率,还可以考虑传输信道的特性。
除了利用量化步长的改变来适应信道码率外,在H.264中,还常利用数据分割的方法来应对信道码率的变化。从总体上说,数据分割的概念就是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量QoS。例如采用基于语法的数据分割(syntax-based data partitioning)方法,将每帧数据按其重要性分为几部分,这样允许在缓冲区溢出时丢弃不太重要的信息。还可以采用类似的时间数据分割(temporal data partitioning)方法,通过在P帧和B帧中使用多个参考帧来完成。
在无线通信的应用中,我们可以通过改变每一帧的量化精度或空间/时间分辨率来支持无线信道的比特率变化。可是,在多播的情况下,要求编码器对变化的各种比特率进行响应是不可能的。因此,不同于MPEG-4中采用的精细分级编码FGS(Fine Granular Scalability)的方法(效率比较低),H.264采用流切换的SP帧来代替分级编码。
3 结束语
因此视频会议产品支持H.264协议,研究人员致力于普及H.264这个全新的业界标准。我们必将能体验H.264视频服务给我们带来高品质的享受。
参考文献
[1]Wiegand T,Sullivan GJ,Bjфntegaard G,Luthra A.Overviewof the H.264/AVC Video Coding Standard[J].IEEE Trans,Circuits Syst,Video Technol.,2003,13(7).
[2]ISO/IEC JTC1/SC29/WG11,Luminance and Chromi-nance Compensation for Multi-View Sequences UsingHistogram Matching[S].Nice,France,2005.
[3]Joint Video Team of ITU-T and ISO/IEC JTC 1.In-formation technology-coding of audio-visual objects-Part 2:Visual[S].2004.
[4]梁长垠.电视技术[M].北京:清华大学出版社,2008.
[5]刘达,龚建荣.数字电视技术[M].北京:电子工业出版社,2005.
[6]侯正信,杨喜,王文全,译.视频处理与通信[M].北京:电子工业出版社,2003.
[7]胡国荣.数字视频压缩及其标准[M].北京:北京广播学院出版1999.12.
[8]惠新标,郑志航.数字电视技术基础[M].北京:电子工业出版社,2005.
[9]Scharstein D,Szeliski R.A Taxonomy and Evaluationof Dense Two-Frame Stereo Correspondence Algo-rithms[J].International Journal ofcomputer vision,2002,47(1/2/3):7-42.
H.264编码 篇8
竞赛视频采集终端是竞赛信息监控系统的重要组成部分。传统意义上的竞赛信息监控系统的监控内容主要包括竞赛数据即成绩信息,但在当今高水平体育竞技对公平公正提出更高要求的情况下,对竞赛图像的监控成为必然。本文研究的重点是竞赛视频采集终端,针对的是竞赛信息监控系统中视频数据采集终端所应用的技术与方案展开讨论与研究。
1 编码标准
图像数据的特点是数据量大,这不仅对计算机的处理速度与存储器的存储容量提出了很高的要求,同时也给通信干线信道的带宽带来了极大的压力。要想只通过优化硬件设施来解决这个问题是不现实的,从软件着手才是根本,对图像信息进行合理有效的压缩是一个好的解决方案。压缩方式很大程度上决定了图像质量、压缩比、传输效率、传输速度等性能[1]。
随着多媒体技术的发展,相继推出了许多压缩编码标准,目前主要有JPEG/M-JPEG、H.261/H.263、MPEG和H.264等标准[2,3],本系统采用了基于H.264标准的压缩编码算法。H.264是ITU-T VCEG和ISO/IEC MPEG的联合小组于2003年3月正式颁布的标准,同时被收录为MPEG-4的第十部分,称为AVC(Advanced Video Coding)。H.264提供了一种比已存标准性能更高的视频编码标准,具体体现在一下几个方面[4]。
1)针对流媒体的应用
为算术编码等之外的一些视频工具定义了一个档次。针对网络流媒体的数据方式不同、应用方式不同,可以蚕蛹不同的码率,对于视频流的接入与拼接,有很好的效果。对于错误的恢复,效果也很好。
2)具有良好的网络适应性
在网络适应性方面,利用分层的概念将框架结构进行分成两层,一层对视频数据进行压缩,称之为视频编码层(VCL)。另一层则是根据不同的网络环境对视频流进行编码,称之为网络提取层(NAL)。同时利用IP网络的相关特性在两层上都提供了多种容错工具。能有效减轻网络环境带来的不良影响的同时适应IP网络的特点。
3)具有高效的压缩性能
H.264的编码方式对于压缩性能的提升是至关重要的。当编码方式具有高的压缩性能时,才能在传输相同质量的视频数据时,占用更小的带宽,也就是说,在带宽不变的情况下,可以传输质量更好图像数据。这对于信道资源的利用是相当有利的。
2 硬件设计
图像信息采集终端采用以DSP微处理器TMS320DM642为核心的开发板作为硬件开发平台,设计中采用到的硬件电路模块包括前端数据采集模块、中央处理器模块、存储模块与网络传输模块。
2.1 硬件平台介绍[5]
为了提高开发效率,确保系统稳定性,系统硬件平台直接采用增强型VMD642-C开发板。该开发板以TI公司生产的DSP芯片TMS320DM642处理器为核心,DM642是一款高性能数字信号处理器,专门应用于视频领域。
2.2 硬件电路总体结构
系统硬件电路[6]包括前端采集模块、中央处理器、存储器模块与网络接口模块。前端采集模块包括图像传感器即摄像头与解码芯片TVP5150,图像传感器的功能就是完成模拟信号的采集和A/D转换。摄像头将模拟信号采集之后,通过TVP5150将数据格式进行转换。转换后的数字信号一面输出,一面传输到DM642对数据进行缓存。
中央处理器模块即DM642从缓存读取视频流数据并进行格式转换,为H.264编码做好准备,然后通过压缩编码模块根据H.264编码标准,对视频流数据进行编码压缩产生H.264码流,再将H.264码流传送到网络传输模块。网络传输模块包括DM642的EMAC与MDIO模块、网络芯片RTL8201以及网络物理接口,负责H.264码流的发送。存储模块完成重要数据与代码的存储。竞赛图像采集终端硬件结构如图1所示。
3 软件设计
图像采集终端软件设计包括视频输入、编码压缩与网络传输三个部分,软件设计总体流程图如图2所示。
3.1 视频输入
视频输入需要获取满足条件的视频流数据并将其传输给编码模块。视频输入首先从解码芯片TVP5150获取其输出的BT.656格式的视频流数据,再对视频数据进行格式转换,即将YCb Cr4:2:2转换为YCb Cr4:1:1,为H.264编码做好准备,然后通过管道将转换格式后的视频流数据传输给视频编码模块。视频输入流程图如图3所示。
3.2 编码模块
ITU提供了多个可选的标准软件,包括Tml系列与Jm系列,选用合适的算法软件很重要。本文采用Jm6.le版本的BaseLine Profile作为实现基础。选择该算法的原因有两个,一是该算法不仅具有很好的编码效果,二是复杂度高的可选项不在它的范围之内,同时对高效媒体处理平台的要求也能很好满足。
H.264编码技术与传统的编码技术有相同的地方,都是采用运动估计补偿、变换编码和熵编码的方式。同时也遵循逐级编码的原则。从帧级->slice级->宏级。编码模块主流程如图4所示。H.264的编码算法采用函数内嵌的方式分为四层,最外层是主函数,主函数中通过调用第二层中的函数encode_one_frame()完成对视频序列的编码。同时在encode_one_frame()中又内嵌函数encode_one_slice(),通过对该函数的循环调用在第二层完成对视频序列中的帧图像编码如图5所示。同样的在encode_one_slice()方法中又内嵌encode_one_macroblock()函数,如图6所示,encode_one_macroblock()函数对每个slice中的每个宏块进行编码,如图7所示。
3.3 图像信息传输模块
DM642与片外网络物理层数据传输的接口是EMAC模块,完成数据收发。DM642网络接口包括EMAC和MDIO两部分。EMAC为网络的数据通路,MDIO为EMAC的状态及控制接口,网络接口原理框图如图8所示。
4 结束语
竞赛视频图像采集是数据采集系统的核心组成部分,也是本课题的研究重点。利用H.164编码技术的优点,提出了基于H.264编码技术的竞赛视频图像采集终端的设计方案,确保数据传输的稳定性和可靠性,对竞赛的公平、公正提供了保障。
参考文献
[1]娄莉.图像通信原理与技术[M].北京:清华大学出版社,2010:46-47.
[2]姚庆栋,毕厚杰,王兆华,等.图像编码基础[M].北京:清华大学出版社,2006.
[3]Yinyi Lin,He Han Hsu.General Architecture for MPEG-2/H.263/H.264/AVC to H.264/AVC Intra Frame Transcoding[J].Springer-Verlag,J Sign Process Syst,2011,65:89-103.
[4]Yao Wang,Jorn Ostermann,Ya-Qin Zhang.Video Processingand Communications[M].Pearson Education,2003.
[5]增强型VMD642-C开发板系统用户手册1.0[Z].迈吉威科技公司.
【H.264编码】推荐阅读:
H.264编码算法07-30
H.264编码技术12-30
H.264高清编码器09-22
位置编码系统编码带01-14
一种网络编码和信道编码的联合设计07-06
技术编码07-18
光电编码05-19
编码分配05-28
物资编码05-29
编码方式05-31