JM86中帧内帧间模式的选择(1)

来源:互联网 发布:双程2网络剧百度云盘 编辑:程序博客网 时间:2024/06/05 04:54

在JM8.6中帧内与帧间模式的选择是其中非常重要的一部分, 模式选择的过程其实涵盖了H.264编码中的大部分内容. 从代码看来, 这一部分其实和码率控制中的代价函数计算是重叠在一起的, 在进行代价函数的计算过程中也就实现了模式的选择, 代价计算完毕, 最优模式也就选择完毕。

帧内编码主要用于以下几种情况:

 (1)整个视频序列的第一帧。由于整个视频序列的第一帧前没有任何可以供参考的帧作为参考帧,所以第一帧必须采用帧内编码模式。第一帧又成为IDR帧。

(2)I帧。H.264标准规定I帧不参考其他帧的信息进行独立编码,因此I帧也必须采用帧内编码模式,但是一般情况下,I帧的比例在视频序列中所占的比例很小。

(3)P帧和B帧中的部分宏块。因为在现有视频编码标准中,视频序列都是以宏块(16*16)为基本单位进行编码操作的。对于P帧和B帧中的所有宏块都要遍历帧内编码和帧间编码两种方式,通过率失真代价函数来计算两种编码方式的代价,从中选择代价比较小的模式作为最优模式,如果帧内编码方式代价小于帧间编码方式的代价,则该宏块选择帧内编码方式。原因如下,视频序列运动较为剧烈,在参考帧中难以找到合适的目标宏块与当前帧中的当前宏块相匹配,从而导致帧间编码方式代价过高。另外一方面,当前帧是场景切换后的第一帧时,由于失去了时间上的连贯性,难以找到参考帧,即使为P帧或者I帧也需要采用帧内编码模式。

(4)差错恢复。当解码一个采用帧间编码的宏块时,需要得到当前宏块的参考块信息。如果由于信道丢包率或者其他原因导致差错时,在解码端得不到参考块信息或者得到是错误的信息,就不能采用帧间编码方式正确解码当前宏块,此种情况下,可以采用帧内编码方式进行差错恢复。

在H.264帧内编码中,每个宏块亮度信号都要完成9种4*4预测模式和4种16*16预测模式,然后通过预测模式选择,得到一种最佳预测模式使得编码效率和性能最高,H.264的模式选择一般有两种:

(1)率失真优化方法:对于帧内帧间每一种预测方式都要进行预测、整数变换、量化和变长编码,并进行反量化和反变换,再比较各种模式的编码码率和重建图像质量,选择最佳的一种。

(2)计算COST值。计算方法如下:

(a)根据一种预测模式构造出4*4的预测块。

(b)计算当前块与预测块之间的绝对误差和SAD。

(c)计算COST=SAD+4Rλ(QP)


原创粉丝点击