x264代码剖析(十三):核心算法之帧间预测函数x264_mb_analyse_inter_*()

本文深入探讨H.264编码中的帧间预测技术,重点关注x264编码器中的帧间预测函数,包括可变尺寸块运动补偿、运动矢量、MV预测、B片预测以及加权预测。通过分析x264_mb_analyse_inter_*()系列函数,揭示了P帧和B帧的预测策略,为理解视频压缩效率提供了关键洞察。
摘要由CSDN通过智能技术生成

x264代码剖析(十三):核心算法之帧间预测函数x264_mb_analyse_inter_*()

 

        帧间预测是指利用视频时间域相关性,使用临近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。由于视频序列通常包括较强的时域相关性,因此预测残差值接近于0,将残差信号作为后续模块的输入进行变换、量化、扫描及熵编码,可实现对视频信号的高效压缩。

 

        本文将重点讨论基本档次支持的P片帧间预测工具以及主要和扩展档次支持的B片和加权预测等帧间预测工具,最后分析了帧间预测函数的主要功能。

 

1、可变尺寸块运动补偿

 

        在H.264中,每个16*16大小的宏块可以有4种分割方式:一个16*16,两个16*8,两个8*16,四个8*8,其运动补偿也有相应的四种,如下图所示。




        而8*8模式的每个子宏块还可以进一步用4种方式再进行分割:一个8*8,两个8*4,两个4*8,四个4*4,其运动补偿也有相应的四种,如下图所示。




        这些分割和宏块大大提高了各宏块之间的关联性,这种分割下的运动补偿称为树状结构运动补偿。每个分割或子宏块都有一个独立的运动补偿,每个运动矢量MV必须被编码和传输,分割的选择也需编码到压缩比特流中。对于大的分割尺寸而言,MV选择和分割类型只需要少量的比特来表征,但是运动补偿残差在多细节区域能量将非常高;对于小的尺寸而言,分割运动补偿残差能量低,但是需要较多的比特来表征MV和分割选择,分割尺寸的选择影响了压缩性能。整体而言,大的分割尺寸适合于平坦区域,而小的尺寸适合于多细节区域。

 

2、运动矢量

 

        帧间编码宏块的每个分割或者子宏块都是从参考图像的某一相同尺寸区域预测而得。两者之间的差异(MV),对于亮度成分采用1/4像素精度,而对于色度成分则采用1/8像素精度。亚像素位置的亮度和色度像素并不存在于参考图像中,需利用临近已编码点进行内插而得。如果MV的垂直和水平分量为整数,则参考块相应像素实际存在,如果其中一个或两个为分数,则预测像素要通过参考帧中相应像素内插获得。

 

3MV预测

 

        每个分割MV的编码需要相当的比特数,特别是使用小的分割尺寸时。为减少传输比特数,利用临近分割的MV较强的相关性,MV可由临近已编码分割的MV预测而得。预测矢量MV(p)基于已计算MVMVD(预测与当前的差异),并被编码和传送。MV(p)取决于运动补偿尺寸和临近MV的有无。

 

        举例说明:如下图,E为当前宏块或宏块分割子宏块,A/B/C分别为E的左、上、右上方的三个相对应块。如果E的左边不止一个分割,取其最上的一个为A;上方不止一个分割时,取其最左边一个为B,如右下图所示,左下图显示了所有分割有相同尺寸时的临近分割选择,右下图给出了不同尺寸时的临近分割的选择。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值