h.264加权预测

简介: 帧间运动是基于视频亮度(luma)不发生改变的一个假设,而在视频序列中经常能遇到亮度变化的场景,比如淡入淡出、镜头光圈调整、整体或局部光源改变等,在这些场景中,简单帧间运动补偿的效果可想而知(实际编码中遇到亮度变化的宏块,R-D模型的最后结果通常都是用帧内预测编码),加权预测的提出就是为 了应对亮度变化的场景。

帧间运动是基于视频亮度(luma)不发生改变的一个假设,而在视频序列中经常能遇到亮度变化的场景,比如淡入淡出、镜头光圈调整、整体或局部光源改变等,在这些场景中,简单帧间运动补偿的效果可想而知(实际编码中遇到亮度变化的宏块,R-D模型的最后结果通常都是用帧内预测编码),加权预测的提出就是为 了应对亮度变化的场景。

在h.264中两种预测模式:显示模式(explicit mode)与隐式模式(implicit mode),另外还有一种默认预测模式,不过这相当于不进行预测。

P帧与B帧都有显式模式,隐式模式只有B帧适用。至于怎么区分两种模式,简单来说,显式模式,需要在片头中传输权重(weight),而隐式模式则不需要。

      

加权预测可以分为三个步骤:

  1. 亮度变化检测。一般是用阈值判断亮度是否发生变化。
  2. 确定权重与偏移。就目前来说,用的都是简单的加权预测算法,这步是跟亮度变化检测连在一起的,因为是用权重来判断亮度是否发生了变化。
  3. 亮度补偿,把参考帧通过权重与偏移的线性补偿得到加权参考帧。

 

显式模式

对于显式模式来说,我们可以认为亮度在当前帧与参考帧是线性变化的,既有如下关系:

LumaCur=weight×LumaRef+offset25LumaCur=weight×LumaRef+offset25

其中权重(weight)会被归一化为32(2^5),因此我们就可以用weight与offset来表示两帧亮度的变化:

weight=25LumaCurijLumaRefijweight=25⋅∑LumaCurij∑LumaRefij

{0i<imgWidth0j<imgHeight{0≤i<imgWidth0≤j<imgHeight

尽管这种用整个帧的亮度做比较会忽视图像的局部变化,但是由于其简单的计算方式,目前JM还是用的这种方法来得到权重。当然,在得到权重之后我们需要判断该权重是否超出既定的阈值,如果超出阈值则表示亮度没有发生变化,采用默认的加权预测(即不预测)。

offset=0offset=0    在JM中offsetoffset默认为0

      

 隐式模式

隐式模式也同样是基于亮度线性变化的假设。B帧与其两个参考帧:RefFront与RefBack在POC位置上保持着线性的关系

weightBackweightFront=26LengthFrontLengthFront+LengthBack=26weightBackweightBack=26⋅LengthFrontLengthFront+LengthBackweightFront=26−weightBack

 

无论前向参考帧与后向参考帧距离有多长,最终都会归一化为64,然后求出两个参考帧的权重

 

最后的亮度补偿只是把参考帧用weight与offset进行线性处理而已

Lumaij=weight×LumaRefij+offset2nLumaij′=weight×LumaRefij+offset2n

最最后需要补充一句的是,因为当前还没确定应该用参考帧列表中的哪一帧作为当前帧的参考帧,所以加权预测必须对当前参考帧列表中的所有帧求出weightweight与offsetoffset,而隐式模式,更是需要对listX[0]listX[0]与listX[1]listX[1]两个参考帧列表中所有的帧进行listXSize[0]×listXSize[1]listXSize[0]×listXSize[1]次配对后,再分别求出每对参考帧的两个weightweight与offset

目录
相关文章
|
机器学习/深度学习 Linux vr&ar
ARIMA差分自回归移动平均模型
ARIMA是**差分自回归移动平均模型**的引文缩写,其中AR表示的是自回归模型,MA表示的是移动平均模型,I表示的是差分。一般写成ARIMA(p,d,q),p是自回归阶数,q是移动平均阶数,d表示差分的次数。
1302 0
ARIMA差分自回归移动平均模型
|
数据处理
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
333 0
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
|
7月前
|
机器学习/深度学习 编解码 计算机视觉
YOLOv5改进 | 2023 | Deformable-LKA可变形大核注意力(涨点幅度超高)
YOLOv5改进 | 2023 | Deformable-LKA可变形大核注意力(涨点幅度超高)
150 0
|
7月前
|
机器学习/深度学习 编解码 计算机视觉
YOLOv8改进 | 2023 | Deformable-LKA可变形大核注意力(涨点幅度超高)
YOLOv8改进 | 2023 | Deformable-LKA可变形大核注意力(涨点幅度超高)
210 0
|
7月前
|
机器学习/深度学习 传感器 编解码
快7倍 | SpirDet基于降采样正交重参化+稀疏解码器有效减少延迟,同时提升小目标检测精度
快7倍 | SpirDet基于降采样正交重参化+稀疏解码器有效减少延迟,同时提升小目标检测精度
118 0
C++-采样函数GridSampling(采样提速必备)
C++-采样函数GridSampling(采样提速必备)
141 0
【 PMU】信号生成、采样、分割、估计器应用和误差计算(Matlab代码实现)
【 PMU】信号生成、采样、分割、估计器应用和误差计算(Matlab代码实现)
|
计算机视觉
采样提速256倍,蒸馏扩散模型生成图像质量媲美教师模型,只需4步
采样提速256倍,蒸馏扩散模型生成图像质量媲美教师模型,只需4步
226 0
|
编解码 算法
m基于归一化最小和译码算法的LDPC误码率性能仿真,对比不同的迭代次数,量化位宽以及归一化参数alpha
m基于归一化最小和译码算法的LDPC误码率性能仿真,对比不同的迭代次数,量化位宽以及归一化参数alpha
145 0
|
机器学习/深度学习 传感器 算法
【图像重建】基于离散余弦变换DCT图像重建含MSE、PSNR、压缩比附matlab代码
【图像重建】基于离散余弦变换DCT图像重建含MSE、PSNR、压缩比附matlab代码