x264代码剖析(十二):核心算法之帧内预测函数x264_mb_analyse_intra()

本文详细剖析了H.264编码中帧内预测的核心算法,重点讨论16*16、4*4亮度预测模式以及8*8色度块预测模式。通过x264编码器的x264_mb_analyse_intra()函数,阐述了如何通过率失真优化策略选择最佳预测模式,包括计算代价、遍历预测模式并确定最佳4*4和16*16预测模式的过程。

x264代码剖析(十二):核心算法之帧内预测函数x264_mb_analyse_intra()

 

        在帧内预测模式中,预测块是基于已编码重建块和当前块形成的,编码器通常选取预测块与编码块之间差异最小的预测模式。H.264帧内预测则是参考预测块左方或者上方的已编码块的临近像素点被引入空间域。

 

        对于亮度像素而言,预测块用于16*164*4大小宏块的相关操作,其中,

1)、16*16亮度块有4种预测模式,适用于平坦区域图像编码;

2)、4*4亮度块有9种可选预测模式,独立预测每一个4*4大小的亮度子块,适用于带有大量细节的图像编码。

 

        对于色度像素而言,色度块也有4种预测模式,类似于16*16大小亮度块的预测模式。

 

        除此之外,H.264还有一种帧内编码模式I_PCM,该模式允许编码器直接传输图像的像素值,而不经过预测和变换。在一些特殊情况下,特别是图像内容不规则或者量化参数非常低时,该模式比起其他的“常规操作”(帧内预测——变换——量化——熵编码)效率更高。I_PCM模式的采用主要有以下几个目的:

1)、允许编码器精确地表示像素值;

2)、提供表示不规则图像内容的准确值,而不引起重大的数据量增加;

3)、严格限制宏块解码比特数,但不损害编码效率。

 

116*16亮度预测模式

 

        16*16大小的亮度块有4种预测模式,如下图:




24*4亮度预测模式

 

        4*4大小亮度块的上方和左方像素为已编码并进行重构的像素,用作编解码器中的预测参考像素。4*4亮度块有9种可选预测模式,对应的预测模式以及描述如下:




38*8色度块预测模式

 

        每个帧内编码宏块的8*8色度成分由已编码左上方色度像素预测而得,两种色度成分常用同一种预测模式。4种预测模式类似于帧内16*16预测的4种预测模式,只是模式编号不同。其中,DC为模式0,水平为模式1,垂直为模式2,平面为模式3

 

4、帧内预测模式的选择

 

        H.264采用拉格朗日率失真优化(Rate Distortion Optimization, RDO)策略进行最优化编码模式选择,通过遍历所有可能的编码模式,最后选择最小率失真代价模式作为最佳帧内预测模式。具体的编码模式选择过程概述如下:

1)、计算当前4*4块和重建的4*4块之间的差值平方和(SSDSum of Squared Difference)以及编码的比特率;

2)、计算9种帧内模式的率失真值;

3)、选择具有最小率失真值的模式作为最佳4*4帧内预测模式;

4)、对宏块内的164*4块重复上述(1~3),获得每一个4*4块的最佳预测模式和相应的最小率失真值;

5)、累加计算得出16个块的最小率失真值,得到当前宏块的4*4帧内预测率失真值;

6)、按照类似的方法,分别计算当前16*16大小宏块在4种模式下的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值