直接上源代码:avg_adj = avg_adj - 0.5f * (avg_adj_pow2 - modeTwoConst) / avg_adj;
(以下方差均指取10次方根后的方差,即QP偏移)
avg_adj =va=平均方差
avg_adj_pow2 =均方根方差vr的平方
modeTwoConst=11一个常数
转换数学公式:
根据平方平均数和算术平均数的大小关系
当va>=2时有如下条件:也即真实方差为1024,va的10次方。
以上关系说明平均方差不能衡量人眼对简单和复杂纹理的敏感关系,不是线性变化而是指数变化 ,所以引入一个指数惩罚项,以2倍的平均方差做归一化。如果vr越大,平均方差就会越小,最终delta QP(块QP减平均QP)偏移就会越大。
而最右边面项
考虑低方差情况,以11方差值做归一化处理,如果方差小于11,那么平均方差就会越大,最终delta QP(块QP减平均QP)偏移就会越小。