h.264 率失真优化 Rate Distortion Optimization

 

转自:h.264 率失真优化

 

 

h.264 率失真优化 Rate Distortion Optimization

h.264 率失真优化 Rate Distortion Optimization

 

h.264 率失真优化 Rate Distortion Optimization

 

 

 

h.264 率失真优化 Rate Distortion Optimization

mv :运动向量,参考帧中相对于当前帧的偏移 

ref:参考帧

预测编码时候需要运动估计,得到mv

 

 

 

参考:https://blog.csdn.net/u010550883/article/details/38703177

原帖地址:http://blog.sina.com.cn/s/blog_4de7908201000aqf.html

          http://blog.csdn.net/smells2/article/details/7699987

          http://blog.sina.com.cn/s/blog_4de5e1e201000arb.html

 

Rate Distortion Optimation (率失真优化)

       在H.264编码过程中有许多的模式可以选择,有些模式的图像失真较小,但是码率却很大;有些模式的图像失真较大,但是码率却很小。人们就想了,有没有一种方法使得在不超过某最大码率的情况下,失真达到最小(条件极值=>拉格朗日乘子法)。即 min{D} s.t. R<=Rmax ,s.t.表示“在以下条件”。

实现过程可以描述为:

1.以特定的编码参数将视频编码,计算编码后的码率和失真。得到一个码率R和失真D组成的R-D点

2.重复上述第一步,得到其他R-D点

h.264 率失真优化 Rate Distortion Optimization

从图像上可以看出,对于给定的特定的Rmax,D最小的点出现在曲线上。

现在的目标是找到一个编码参数,使得在这样的情况下R-D点能够尽可能的逼近这条曲线。

h.264 率失真优化 Rate Distortion Optimization

J是一个包含D和R的函数,lamda是Lagrange系数,对应到R-D图上那么lamda就是斜率

对于每个可能的系数lamda,上述式子应该有对应的解。这个解就是凸曲线的切线。

h.264 率失真优化 Rate Distortion Optimization

 

我们找到最小的J就是对应一定的码率情况下失真最小的模式,一次模式编码会达到我们一开始所要设想的结果。

缺点是:模式如果过多的话这个过程的计算式相当的耗时的,所以在H.264研究中在改善算法效率和提出一些替代方法就成了非常可行的方案。

/*****************************************************************************************/

//Lambda 确定

 

 

lambda_mode=0.85 *2^((qp-12)/3.00)   帧内模式预测

lambda_motion=lambda_mode^0.5          帧间运动估计

/*****************************************************************************************/

 

/*****************************************************************************************/

//几种描述失真的函数和使用场合

SAD(Sum of Absolute Difference)=SAE(Sum of Absolute Error)即绝对误差和
SATD(Sum of Absolute Transformed Difference)即hadamard变换后再绝对值求和
SSD(Sum of Squared Difference)=SSE(Sum of Squared Error)即差值的平方和
MAD(Mean Absolute Difference)=MAE(Mean Absolute Error)即平均绝对差值
MSD(Mean Squared Difference)=MSE(Mean Squared Error)即平均平方误差

SAD    在整数像素ME的时候使用
SATD   在1/2和1/4像素ME的时候使用
SSD    在帧内模式选择的时候使用

/*****************************************************************************************/

Rate-Distortion Optimization 是视频编码中最优选择mode的一种方法。比如h.264里好多mode 8x8 16x16 I4x4 I16 在给定的条件下,哪个是最好的?Distortion 是指选用candidate mode产生的失真,rate是用这个mode需要的rate.他们换算成RDCost = Distortion + lamda * rate.    两个mode谁的rdcost 低就选谁其中的数学原理是条件极值转非条件极值。

JM 里用的RDO是比较经典的方法。最早是Gary J.Sullivan做的 参见 IEEE Signal Processing Magazine 1998 Nov.  "Rate-Distortion Optimization for video compression" rdo的经典。 h264里的rdo还可参考CSVT H.264 special issue

/*****************************************************************************************/