帧内预测模式的选择

一个宏块是16*16像素

宏块亮度块的帧内预测有两种模式,4*4 亮度预测和16*16亮度预测,该用哪种?

当然可以强制用4*4 或用 16*16,但我们搞这么复杂不就是为了压缩吗,所以,不能强制用哪种,而是哪个有利于压缩就用哪种。

 

所以,要选择最佳帧内预测模式,或叫最优帧内预测模式。

 

毕的书上说的选择最优的方法,是用到了一个拉格朗日率失真优化策略(RDO),名字很唬人,不过其实是个纸老虎,但是那一段确实很难看,当时费了老大劲,后来看明白了,才发现是作者描述的有问题,这本书本身就看起来很费劲,该详细的老是简单说一下就过了。

 

第一步,对每个宏块的16个4*4块,计算9种帧内模式下的率失真值(套公式即可),16*9=144 个

第二步,在每个4*4块的9个率失真值中,最小值对应的帧内预测模式,作为最佳4*4帧内预测模式。当然16个4*4亮度块可能采用不同的帧内预测(0、1、2、3、4、5、6、7、8中选择)

第三步,16个最小率失真值相加,得到当前宏块的4*4帧内预测率失真值

把这个值与16*16亮度块的率失真值比较,如果这个小,就用4*4帧内预测,如果16*16时率失真小,就用后者。

 

16*16率失真值的计算同上,16*16亮度块有4种预测方式(0、1、2、3),所以可以得到4个率失真值,最小率失真值对应的预测模式就是最佳16*16帧内预测模式。

 

至于那个公式,也就是求率失真值的公式,就是为了标志或者反映某个模式的效率,比如评价一个人,外表、才能、品德都占一定的比重,然后综合计算得出一个综合分,类似于这个。至于这样评价人是不是合适,鬼才知道,反正总得有个数字比较吧。

 

公式中用到“4*4块和它的重建块之间的”差值平方和,这个差值平方和,就是表示两者之差的,还用到了编码的比特率。

要知道编码的比特率,只有实际的进行一次编码才知道,就像要进行一次实际的解码才能得到重建块,这就是耗时的地方,但不得不这样。

看看,考虑到了差别,也考虑到了码率,那个拉格朗日乘数,是不是就没什么可考虑的了,就一数字罢了,或者说纯粹一经验性的系数。其实没它也照样可以,但人家用了,咱也用吧。

 

要考虑一下的,倒是差值平方和是怎么算的。

4*4块,对于亮度块来说,1个4*4块有16个亮度值,重建块也有16个亮度值,对应位置的亮度值相减,取二次方,相加,估计是这样。

怎么求编码的比特率?

这个应该不需要计算到NAL那个程度,只要各种模式下都用同一个标准就行了,这样可以减小运算量,而且也不影响效果,能分出大小来就可以了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值