【视频编码\VVC】量化基础知识

量化:是将信号的连续取值(大量离散取值)映射为有限多个离散赋值的过程。实现信号取值多对一的映射。可以有效减少信号取值的空间,进而获得更好的压缩效果。

根据输出和输入数据的类型,可以将量化器分为标量量化SQ和矢量量化VQ两种类型。

VVC除了使用标量量化,还采纳了低复杂度的矢量量化(依赖量化DQ)

标量量化

简单的,将输入信号划分为M个互不相交的区间,区间端点,称为量化的判定边界。对于每一个区间,分辨选取一个点作为输出值,称为重建值。当输入样点位于区间范围内,量化结果为那个重建值。还可以将输入信号经过量化之后被映射为一些用于表示重建值的索引号,索引号比重建值具有更加统一和简单的形式。在视频编码中,常使用索引号。

均匀标量量化

将输入值域分为等距的区间,每个区间对应的输出值为该区间的中点。区间的长度称为量化步长。量化步长取决于输入信号的变化范围及重建值的个数。

因为中间值为每个区间的重点,所以量化误差位于区间[-deta/2,deta/2)

量化误差的衡量准则

  • 均方误差:反映失真的大小
  • 信噪比:失真与信号的相对大小
  • 峰值信噪比:失真与信号峰值的相对大小

因此使用均匀标量量化可以获得的失真与量化步长的平方成正比。对于非均匀分布,使用均匀量化可能无法获得较好的性能。

Lloyd-Max量化器

最优标量量化,考虑服从任意分布的输出信号,设其概率密度函数为f_X(x)

最优标量量化器表示某一区间的重建值应为该区间的“质心”。因为直接求解式子比较困难,因此采用迭代的方式进行求解,称为Lloyd-Max算法。(初始化、计算ti、计算xi的重建、计算Dj,损失小于一定程度停止优化)

熵编码量化器

Lloyd-Max是在给定重建数目M的约束条件下,量化失真最小。如果采用定长编码,每传输一个量化输出值需要的比特位数为R=log_2M,向上取整。

如果考虑变长编码,每个量化输出值所需的比特数不一样,平均比特数接近量化输出值的熵,这样Lloyd-Max就不是最优的了。此时最优量化器应该在对熵的约束下使失真最小。

设定目标比特率R

可以看到重建值依旧为“质心”,但是划分编解有区别,熵编码量化器在临近量化的基础上引入了一个偏差。相邻两个区间的划分点会向着取值概率较小的重建值方向偏移。取值概率较大的量化重建值对应的量化区间越大,概率大的重建值编码时所需要的比特数越小。

在视频编码中常认为DCT系数服从拉普拉斯分布,主要特点是在0值附近系数概率较大。因此图像和视频编码中的量化器会加宽以0为中心的区间,称为“量化死区”

还有率失真优化量化,在下面介绍。

矢量量化

矢量量化是多对一的量化,即两个或两个以上的幅度对应一个量化结果。

假设有N个K维矢量,把K维空间划分为互补子空间(胞腔CELL),在每个子空间中找到一个代表矢量(码字、码矢),全部组成为一个矢量集(码书、码本)。矢量集中的矢量个数J为码字长度

矢量量化的过程可以看成从欧式空间
R_K

到其中一个有限矢量集Y的映射Q:R_K\rightarrow Y=\{Y_1,Y_2,...,Y_j\}

将多干个标量数据(k个)构成一个矢量,然后矢量空间进行发整体量化,用码书中与输入矢量最匹配的码字索引替换输入矢量进行传输与存储。

网格编码量化(Trellis Coded Quantization,TCQ)

因为矢量量化复杂度高,因此采用矢量量化和标量量化相结合的方式。复杂度低且具有量化的性能。来源于网络编码调制,借鉴了网络编码调整中信号集合扩展,信号集合划分和网络状态转移的思想。

将R位量化对应的2^R阶量化器拓展为2^{R+1}阶,码书大小增加2倍,使用更精细的码书提高信噪比。同时为了减少码字,将拓展后的码书划分为4个子集,按照顺序分布,每个子集包含2^{R-1}个码字,每个子集堪称一个独立的量化器。

为每个输入选择一个量化器进行量化,量化器的选择根据量化器状态转移,采用网格进行约束。当编码长度为N时,量化器状态采用N级网格级联,每级都要在4个量化器中找到到与输入数据最匹配的码字,按照从左到右的顺序级联所有网格,使用维特比算法,找到一条最小误差的最佳路径,得到所有的状态转移过程。

VVC量化

VVC支持普通标量量化和依赖量化DQ。

VVC的标量量化

VVC中规定的时反量化过程。\widehat{c_l}=l_i\cdot Q_{step} 量化后的值*量化步长。在实际应用中,使用量化参数(QP)来表示所选的量化步长。VVC在HEVC52个量化参数的基础上,拓展了量化参数的数量,并且可以根据比特深度进行自适应的调整。取值范围为-6*(bitdepth-8)到63。量化步长和量化参数有确定关系。当比特深度一定的时候,QP每增加6,步长增大1倍。

VVC中全部使用整数运算,并融合了反变换中的比例伸缩运算,引入量化矩阵,调整当前块内不同位置的量化步长。由于依赖量化器的特殊性,每个量化器重建值的距离为一般量化器的2倍。如果采用变换跳过模式,就不需要反变换,也不需要额外的缩放,同时不再采用量化矩阵。

VVC的编码器采用传统的标量量化方法l_i=floor(c_i/Q_{step}+f)c_i表示DCT系数,f控制舍入关系。为了避免浮点运算,保留运算精度,也引入了qbits和MF变量。对于特殊的块会修改MF以步长变换过程中的隐式缩放。量化过程如下:

率失真优化量化

因为实际编码中,待量化变换系数的分布特性不同,标量量化无法有效应对,引入了率失真量化器(RDOQ)。对于一个变换系数,给定多个可选的量化注意,利用RDO准则选择一个最优的量化值。

实现步骤

  • 确定当前TU每个系数的可选量化值,对当前TU所有系数进行预量化,利用得到的量化值大小确定可选量化值。
  • 利用RDO准则确定当前TU所有系数的最优量化值,按照扫面顺序遍历当前TU所有系数,对于每个系数遍历可选的量化值。
  • 利用RDO准则确定当前TU每个系数组CG是都量化为全0组。
  • 利用RDO准则确定当前TU最后一个非0系数的位置,遍历非0系数,分别计算其作为最后一个非0系数时的TU总率失真代价,选择最小的那个。

熵编码中的符号隐藏SDH技术也需要量化参数的配合,利用率失真优化,确定最优量化参数。

依赖量化DQ

当前变换系数的量化值依赖前一个变换系数的量化值。利用了变换系数间的相关性,使得变换系数经量化后在N维向量空间更紧密,减少了输入向量和重建向量之间的误差,减小的量化带来的失真。

VVC依赖量化器关键技术:定义两种不同标量量化器Q1和Q2,定义标量量化器之间的转换准则。

Q0对应偶数倍的步长,Q1对应奇数倍量化步长。当变换块进行反量化的时候,初始状态设置为0,变换系数按照编码顺序重建,重建完成后更新状态。VVC的标量量化器由一个4状态状态机表示。步骤如下

  • 确定当前系数的可选量化索引,为每个量化系数确定4个后选址,针对每个量化器都有2个最小化原始值和重建值差的绝对值的候选。
  • 当扫描缩影从k-1转换到k时,为阶段k-1的网络节点和阶段k的网络节点之间的所有连接计算一个率失真代价。保留最小率失真代价的连接。
  • 得到率失真代价最小的路径,确定出路径上的量化索引,得到最终的量化值。

量化参数

在传输速率受限时,灵活地控制量化参数使编码效率尽可能接近给定码率非常重要。VVC沿用了HEVC中的量化组QG概念。时一个矩形全区域,为一个划分子树包含的CU,同一个QG内所有的CU共享一个QP。由CU划分深度cbSubdiv的最大值Max_cbSubdic决定。

VVC中的QP依旧采用预测编码技术,只对QP与预测QP的插值进行编码,避免直接编码QP耗费的比特数。

QP的解析过程

  • 预测值的获取:由相邻已编码QG的QP信息得到。
  • 预测误差的解析:已QG为单元进行编码,每个QG包含一组deltaQP语法元素。
  • QP的计算:sliceQP由PPS层初始QP及Slice层或图像头中的QP偏移值都确定;QG的QP由预测QP和预测误差决定;亮度分量和色度分量的QP由色度亮度便宜关系、PPS层、Slice层QP偏移值的公式共同决定。

量化矩阵

使用量化矩阵,原理是对不同位置的系数使用不同的量化步长。

VVC中,量化矩阵作用于比例缩放过程,大小与TU相同,在比例缩放过程中DCT系数与对应位置的量化矩阵系数相除,然后再输出到量化模块。(变换-比例缩放-量化)。允许标准推荐使用的量化矩阵(2x2\4x4\8x8这3种,大于8由8x8上采样得到)和用户自定义的量化矩阵(根据帧间帧内模式、分量性质、变换块尺寸、定义了27种种量化矩阵)。

允许量化矩阵中的元素差分编码器啊,大于8x8的情况,只编码64个元素,其余上采样得到。

  • 34
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
H.266/VVC(Versatile Video Coding)是一种新一代的通用视频编码标准。它的目标是在保证视频质量的同时,实现更高的压缩率,以降低视频传输和存储的成本。 H.266/VVC采用了一系列先进的视频编码技术,包括运动估计、变换、量化和熵编码等。其中最重要的改进是采用了更高效的视频压缩算法。与之前的标准相比,H.266/VVC能够在相同视频质量下实现更高的压缩率,甚至可以达到之前标准的一半或更少的比特率。 H.266/VVC的设计也考虑了视频编码的实时性和适应性。它支持多种场景下的视频编码需求,包括低延迟和高动态范围等。同时,H.266/VVC采用了更灵活的编码模式,可以根据不同场景和需求进行自适应调整,以获得更好的视频质量和压缩效果。 标准化方面,H.266/VVC是由视频编码专家组织VCEG(Video Coding Experts Group)和MPEG(Moving Picture Experts Group)共同制定的。它在2020年7月发布了正式的标准文档,包括了详细的规范和算法描述,供相关厂商和开发者参考和实现。 实现方面,H.266/VVC已经在多个视频编码软件和硬件平台上有了初步的实现。通过对标准文档的理解和实践,开发者可以根据自己的需求和平台特性进行相应的调整和优化,以实现高效的视频编码和解码。 总的来说,H.266/VVC作为新一代通用视频编码标准,具有更高的压缩率和更好的视频质量。它将在视频传输和存储领域发挥重要作用,为用户提供更好的观看体验,并降低相关成本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值