版权声明:本文为博主
[email protected](阿King)原创文章,不得以任何理由任何形式进行转载 https://blog.csdn.net/lj501886285/article/details/84590914
前言
残差矩阵经过整数DCT变换后即需要对变换后的DCT系数进行量化操作。且注意:前期DCT变换
Mn⋅X⋅MnT已经优化成了整数DCT变换
Cf⋅X⋅CfT⨂Sf,其中的
⨂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
过程
- 一开始的量化操作是
Zij=round(QstepYij),其中
Yij为输入的DCT系数矩阵
- 加入整数DCT变换中的
⨂Ef动作后,有
Zij=round(Yij⨂QstepEf)
- 由于
Qstep1为除法运算,为了加速计算,我们将其简化为位移运算
令
MF=QstepEf2qbits,其中
qbits=15+floor(QP/6)。我们绘制一张QP={0,1,2…51}
的MF表(Ef,Qstep和QP都已知,MF就已经确定了)。则
Yij⨂QstepEf=Yij⨂2qbitsMF,这样我们就将除法运算转换成了计算机容易处理的位移运算
Zij=(Yij⋅MF+offset)>>qbits,其中offset为偏移量,作用是改善恢复图像的视觉效果,例如对帧内预测图像块取
f=32qbits,对帧间预测图像块取
f=62qbits