H264量化

版权声明:本文为博主[email protected](阿King)原创文章,不得以任何理由任何形式进行转载 https://blog.csdn.net/lj501886285/article/details/84590914

前言

残差矩阵经过整数DCT变换后即需要对变换后的DCT系数进行量化操作。且注意:前期DCT变换 M n X M n T M_n·X·M_n^T 已经优化成了整数DCT变换 C f X C f T S f Cf·X·Cf^T\bigotimes Sf ,其中的 S f \bigotimes Sf 动作放到了量化的过程中实现。
在这里插入图片描述


规定

在这里插入图片描述

  • QP是量化参数,是量化步长Qstep的编号,一共有52个
  • Qstep为量化步长。Qstep越大,图像的压缩率越大,失真率越大;反之Qstep越小,图像压缩率越小,失真率越小
  • 亮度块的QP最大值为52,而色度块规定最多只能有亮度块的80%,故QP最大值为39(明明52×0.8=41.6)
  • QP+=6 -> Qstep*=2,即QP每增加6,Qstep就会翻一倍
  • 编码器会根据图像的实际情况自动改变QP的值,进而改变Qstep

过程

  1. 一开始的量化操作是 Z i j = r o u n d ( Y i j Q s t e p ) Z_{ij}=round(\frac{Y_{ij}}{Qstep}) ,其中 Y i j Y_{ij} 为输入的DCT系数矩阵
  2. 加入整数DCT变换中的 E f \bigotimes Ef 动作后,有 Z i j = r o u n d ( Y i j E f Q s t e p ) Z_{ij}=round(Y_{ij}\bigotimes \frac{Ef}{Qstep})
  3. 由于 1 Q s t e p \frac{1}{Qstep} 为除法运算,为了加速计算,我们将其简化为位移运算
    M F = E f Q s t e p 2 q b i t s MF=\frac{Ef}{Qstep}2^{qbits} ,其中 q b i t s = 15 + f l o o r ( Q P / 6 ) qbits=15+floor(QP/6) 。我们绘制一张QP={0,1,2…51}
    的MF表(Ef,Qstep和QP都已知,MF就已经确定了)。则 Y i j E f Q s t e p = Y i j M F 2 q b i t s Y_{ij}\bigotimes \frac{Ef}{Qstep}=Y_{ij}\bigotimes \frac{MF}{2^{qbits}} ,这样我们就将除法运算转换成了计算机容易处理的位移运算 Z i j = ( Y i j M F + o f f s e t ) > > q b i t s Z_{ij}=(Y_{ij}·MF+offset)>>qbits ,其中offset为偏移量,作用是改善恢复图像的视觉效果,例如对帧内预测图像块取 f = 2 q b i t s 3 f=\frac{2^{qbits}}{3} ,对帧间预测图像块取 f = 2 q b i t s 6 f=\frac{2^{qbits}}{6}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lj501886285/article/details/84590914