2021年6月17日 / 539次阅读 / Last Modified 2021年6月17日
图像处理
HEVC中,对frame的划分,除了CTU,CU,TU和PU这些之外,还有一个QG,Quantization Group。它的作用是用来包含delta QP值。
如果pps中的cu_qp_delta_enabled_flag被置位,想到与delta QP功能的使能,在bitstream中,紧接着这个置位的bit,是diff_cu_qp_delta_depth,它用来确定QG的log2大小(标准中只计算Log2MinCuQpDeltaSize这个量,它是个最小值)。QG的大小一定大于或等于最小CU的大小!
另一个HEVC标准的规定是,delta QP只在有non-zero transform coefficients的CU时传输。
delta QP要能够被使用,还需要一个QP predictor值。这个值通过临近(left和above)的QG对应QpY,配合解出来的delta QP计算得到。QpY值用来计算最终的qp值,QpY值除了通过left和above的QG对应的QpY计算,还通过一个previous值计算,previous的初始为slice QP。有了初始,就可以一层层递归迭代计算每一个QG的QpY值。这部分太绕,对应标准文档的8.6部分。
上图QG的的left和above概念,不能跨CTU。(QG最大就跟CTU一样大)
HEVC的delta QP在QG level,对应的AVC在MB层面。
不管怎样,最后得到当前CU对应的QpY,然后就简单了!
delta QP提供了在一个slice中,不同区域使用不同QP的可能性,比如rate control就会用到这个机制。
如果不开启cu_qp_delta_enabled_flag,QpY的值,无论怎么计算,就等于slice QP。此时,QG的大小就是CTU的大小!cu_qp_delta_enabled_flag开关在pps中,因此有可能在一个CVS中,部分frame打开了,部分frame没有打开。
一旦CU的QpY确定后,CU中的TU共享!不过,只有在第1个有cbf的TU时,才能确定这个值。好绕。。。
-- EOF --
本文链接:https://www.pynote.net/archives/3729
前一篇:for语句的iterator protocol
后一篇:会死掉的ReLU
©Copyright 麦新杰 Since 2019 Python笔记