您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页Hevc 中的RDOQ实现

Hevc 中的RDOQ实现

来源:爱问旅游网

在2里面叫做trellis量化。

传统的标量量化器是以失真最小的目的进行设计的,而在视频编码中,编码比特率同样是一种影响编码性能的因素,因此视频编码中的量化器设计需要权衡失真与比特率。码率失真优化量化RDOQ就是这样一种量化器,其主要思想是将量化过程同码率失真优化RDO准则相结合,对于一个变换系数Ci,给定多个可选的量化值l1,l2,...lk, 并利用RDO准则从中选出一个最优的量化值,计算如下

Li = argmin{D(ci,Li) + lambda*R(Li,k)}

其中,D(Ci, Li,k)为Ci量化为Li,k时的失真,R(Li,k)表示Ci量化为Li,k时所需要的编码比特数,lambda为拉格朗日因子。

H265/Hevc的官方测试编码器HM使用了RDOQ,现在将其主要的实现方法步骤介绍下。

(1)确定当前TU每个系数的可选量化值,用下式对当前TU所有系数进行预量化:

|li| = round(|Ci|/Qstep);

其中round(.)表示四舍五入,利用|Li|的大小确定可选量化值,见表6.3

(2) 利用RDO准则确定当前TU所有系数的最优量化值,按扫描顺序便利当前TU所有系数,对于每一个系数,遍历其可选量化值,利用RDO准则确定每个系数的最优量化值。例如,对于系数Ci, 其可选量化值为Li1 和Li2,二者码率失真代价计算分别如下

J1 = D(Ci,Li1) + lambda * R(Li1)

J2 = D(Ci,Li2) + lambda * R(Li2)

|Li|

可选量化值

0

0

1

0.1

2

0.1,2

3

2,3

...

...

N

N -1,N

其中,D(Ci,Li)表示Ci量化为Li是,当前TU的总失真;R(Li1) 表示Ci量化为Li1时,当前TU的总编码比特数(此时尚未确定量化值的系数,用其步骤1中预量化的结果计算)。若J(Li1) < J(Li2),则选取Li1为当前系数的最优量化值,反之,选取Li2作为最优量化值。

(3) 利用RDO准则确定当前TU每一个系数块组CG是否量化为全零组,H265/HEVC在对一个TU进行熵编码CABAC时,会将其分成若干4x4的系数块组,每个CG都含有一个比特为用于标识其是否为全零CG。只需要编码全零标识;反之,则需要编码非零标识以及当前CG内的所有所有系数。因此若当前CG仅含有极少个数且幅值较小的非零系数时,将其量化为全零CG可能会获得更好的码率失真性能。

(4)利用RDO准则确定当前TU最后一个非零系数的位置,CABAC规定每个含有非零系数的TU都需要用一定比特位表示最后一个非零系数(last Significant Coefficient)的位置信息,这样可以省去编码拖尾零系数的比特,因此其位置在很大程度上影响着失真与编码比特数。

该步骤首先确定,最后一个非零系数,可能的位置。利用步骤1预量化的结果,最后一个非零系数可能的选择位扫描顺序对应的最后一个预量化大于2的系数,与最后一个预量化值大于1的系数之间的所有非零系数,遍历这些非零系数,分别计算其作为最后一个非零系数,时当前TU总的码率失真代价,选择对应于最小码率失真代价的系数作为当前TU的最后一个非零系数。

与标量量化相比,RDOQ提高了编码器的性能,但是由于需要遍历多个可选量化值并计算码率失真代价,其编码复杂度也有一定增加,实验结果表明,RDOQ能使编码器性能提高3%-6%,总编码时间大约增加10~15%。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务