视频编码的量化技术

量化,在信号处理领域是指将信号的连续取值(或大量可能的离散取值)映射为有限多个(或较少的)离散幅值的过程,实现信号多对一的取值映射。是信号处理领域的专业术语

我们都知道视频编码里的量化过程会带来失真,并且可以称为视频编码过程产生失真的根本原因。与H.265相比,H.266量化模块变化比较少,仍采用标量量化。
不过H266新引入了一种低复杂度的矢量量化——依赖量化(Dependent Quantization,DQ)。
视频编码标准一般仅规定反量化过程的实现方法,所以在编码端,就会有较多自主性来选择合适的量化器。
H.266的传统标量量化如下:
在这里插入图片描述

上式Ci为变换系数,Qstep为量化步长,li为量化后的值,f控制舍入关系,大小和帧类型有关。上式所示,编码的量化过程实际采用Qstep,我们常用的QP表示量化参数,QP实际表示量化步长Qstep的索引,取值为整数。H.266中对52个QP进行了扩增,QP取值范围是由编码位深BitDepth决定,具体如下
:-6x(BitDepth-8)~63
量化步长Qstep和量化参数QP关系如下:
在这里插入图片描述
入上图所示,QP每增加6,量化步长Qstep增大一倍。根据QP此变化,QP表示为(floor是向下取整运算):
QP=6·floor(QP/6)+QP%6
引入qbits和MF(Multiplication Factor):
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上式>>表示右移运算,dij为缩放前的变换系数,f′= f <<(qbits+T_shift)为四舍五入的偏移量。量化表示为上述形式,有两个原因:第一可以避免浮点数运算,替换成了整数乘法和移位,第二量化过程还要完成整数DCT中的比例缩放运算,所以需要对本文的第一个公式中的分子(变换系数)和分母(量化步长)进行放大,取整来保留运算精度。
此外H.266中当前变换块的宽和高满足((log2W+log2H)&1)=1时,量化过程会修改MF,以补偿变换过程中的隐式缩放。在vvenc代码里quantScale数组相比H265,多了6个值。
在这里插入图片描述
率失真优化量化RDOQ
在实际编码器中,量化器的设计往往需要同时考虑失真D和比特R大小,所以引入率失真优化量化RDOQ技术,将量化过程和RDO准则进行结合。下图为H265的此技术过程,H266无变化:在这里插入图片描述
RDOQ过程其实就是一个变换系数ci,给定多个可选的量化level值,使用RDO准则从里面选择出一个最优的量化level值。
在这里插入图片描述

RDOQ的具体过程如下:
1.获取预量化值如下式和下表即可确定当前TU每个系数的可选量化值。
在这里插入图片描述
round()为四舍五入的取值操作。

在这里插入图片描述
上述表格为不同的li可选的预量值

2.RDO确定当前TU中系数的最佳量化值。具体为:根据扫描顺序遍历当前编码TU内的所有系数,遍历每个系数的可选量化值,在采用RDO确定每个系数的最佳量化值。

3.再次使用RDO确定当前编码的TU所有系数块组CG是否可量化为全零系数组。具体为:当前TU按照CG扫描顺序遍历所有CG,计算其量化为全零CG时的率失真代价,且与原率失真代价比较。如果量化为全零CG的率失真代价较小,则当前CG置为全零CG。

4.最后再次利用RDO准则,确定当前TU的“最后一个非零系数”的位置。根据第一步预量化获取的结果,“最后一个非零系数”的位置可能是扫描顺序对应的“最后一个预量化值大于0的系数”与“最后一个预量化值大于1的系数”之间的所有非零系数中的任意一个。遍历这些非零系数,依次计算其作为“最后一个非零系数”时当前TU的总率失真代价。选择其率失真代价最小的系数作为当前TU的“最后一个非零系数”。相对标量量化,此技术提高了编码器的压缩性能,但其编码复杂度很高,因为RDOQ需要遍历多个可选量化值并计算率失真代价

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值