VVC/VTM:环路滤波——Luma mapping with chroma scaling (LMCS)

VTM中环路滤波的顺序:LMCS,deblocking filter,SAO 和ALF。其中deblocking filter和SAO 与HEVC中的相同。

Luma mapping with chroma scaling (LMCS)

LMCS,位于环路滤波前,主要由两部分组成:1)基于自适应分段线性模型的亮度环路映射;2)基于亮度分量的色度残差伸缩。下图显示了解码端的LMCS框架,淡蓝色着色框为在映射区进行的步骤,包括反变换反量化、亮度帧内预测和亮度重建过程。非着色框为在非映射区进行的步骤,包括解码、ALF、SAO、运动补偿、色度帧内预测、色度重建过程以及缓存解码帧。淡黄色着色框则为新添加的LMCS功能框,包括亮度信号的前向映射和逆映射,以及基于亮度分量的色度伸缩。LMCS可以在序列层用SPS flag表示使用或禁止。

VVC/VTM:环路滤波——Luma mapping with chroma scaling (LMCS)_第1张图片

1、基于分段线性模型的亮度分量重映射

为了便于理解,可以先看一下下面几个对于HDR重映射的相关借号。重映射、HDR关键技术:主要标准介绍

亮度分量的环内映射通过调整输入信号的动态范围来提高压缩效率,主要手段是重新分配动态范围的码字。(类似于HDR的重映射)。亮度映射通过一个前向映射函数 F w d M a p FwdMap FwdMap和一个相应的逆映射函数 I n v M a p InvMap InvMap来实现, F w d M a p FwdMap FwdMap是一个16等分的分段线性模型, I n v M a p InvMap InvMap无需进行表示,而是从 F w d M a p FwdMap FwdMap推导得到。

亮度重映射模型在tile level被标记。首先用flag标记是否使用亮度重映射,若使用,则相应的分段线性模型参数也被标记。该分段线性模型将输入的动态信号划分为16等分,每一段的线性模型参数用分配给该段的码字个数来表示。例如:以10bit输入图像为例,亮度范围为0~1023(也是码字总数),分为16段,那么默认给每一小段分配1024/16=64个码字。码字个数被用来计算伸缩因子和调整重映射函数。在tile level,另一个LMCS flag用来标记当前tile是否进行LMCS过程。

F w d M a p FwdMap FwdMap分段线性模型根据两个数组InputPivot[] 和MappedPivot[]得到,InputPivot[] 和MappedPivot[]根据以下规则计算得到:

  1. OrgCW=64
  2. 对于i=0…15,InputPivot[i]=i * OrgCW;
  3. 对于i=0…15,MappedPivot[i]按照如下规则计算:
    1. MappedPivot[0] = 0;
    2. MappedPivot[i+1] = MappedPivot[i] + SignalledCW[i]

SignalledCW[i]是编码器为每一段分配的码字数。

由上图可知,

  • 对于帧间编码块,运动补偿过程在Org域进行,也就是说,运动补偿的 Y p r e d Y_{pred} Ypred是通过DPB(解码帧缓冲区)中的参考帧得到的, F w d M a p FwdMap FwdMap主要是将Org域的 Y p r e d Y_{pred} Ypred映射为Mapped域的 Y p r e d ′ {Y_{pred}}^{'} Ypred;
  • 对于帧内编码块,帧内预测过程就是在Mapped域进行的;
  • 对于帧内和帧间块,重建块 Y r Y_r Yr得到之后,利用 I n v M a p InvMap InvMap将Mapped域的信号转换回Org域的信号。

2、基于亮度分量的色度残差伸缩

你可能感兴趣的:(VVC,(H266))