H264/AVC SP/SI的基本原理

        从SP/SI的应用可知,SP帧分为主SP帧(Primary SP-Frame)和辅SP帧(Secondary SP-Frame)。其中,前者的参考帧和当前编码帧同属于一个码流,而后者则不属于同一个码流。如下图所示,主SP帧作为切换插入点,不切换时,码流进行正常的编码传输;而切换时,辅SP帧取代主SP帧进行传输。其中,Δ表示编码器的输入;⚪表示解码器的输出。由图可知,解码出来的是B2,而非辅SP。

       下面描述SP帧实现的功能原理。SI帧的功能实现与SP帧相类似,都能恢复出相同的解码图像帧,只是前者利用的是帧间预测,而后者利用的则是帧内预测。

主SP帧的编码过程

        主SP帧的编码过程如下图所示。从结构上看,与传统P帧编码不同之处在于:变换处理提到了求差值,即前者的预测残差是变换系数的差值。改进的目的在于使得主SP和辅SP两种SP帧的编码器能相结合。主SP帧的编码的具体过程如下:预测残差块P(x,y)是利用原始图像和已重建帧进行运动补偿预测得到的。对预测块P(x,y)和原始图像中相对应的块分别进行正向变换,然后用量化参数SPQP对预测块P(x,y)的变换系数进行量化和反量化,得到系数d_{pred}。从原始图像中相对应的变换系数中减去d_{pred}就得到预测残差c_{err},然后c_{err}用量化参数PQP进行量化,其结果l_{err}和运动矢量一起传送到多路复用器。

        在这个编码器中,用于对c_{rec}也就是对预测重构块系数进行量化的量化参数SPQP与对预测残差系数c_{err}进行量化的量化参数PQP没有必要相同。因此可对预测块系数采用不同于对预测残差系数采用的、引入失真更小的量化参数,以使产生的重建误差更小。

         

         以主SP帧A2的编码过程为例,如下图所示。与P帧编码过程相比,主SP帧的编解码过程有所不同。视频序列中帧A2和A1分别经过变换处理,得到的变换系数计算出变换系数差值,再进行量化和熵编码,最终得到主SP帧的编码。

 

         这里主SP帧编码过程相比于P帧的就是多加了几个量化,没有特别需要说明的,继续看解码过程,解码该怎么办是我比较好奇的地方。


主SP帧的解码过程

        下图描述了主SP帧的解码原理图。

        获得预测块P(x,y),后进行正变换,变换后得到的系数记为c_{pred},将编码端输出的已经量化的预测残差系数l_{err}采用量化参数PQP进行反量化,得到的系数记为d_{err}d_{err}c_{pred}的和记为c_{rec},重建系数c_{rec}采用量化参数SPQP进行量化和反量化,并对反量化后获得的d_{rec}进行反变换和滤波即得重建图像。

 

         以主SP帧A2的解码过程为例,如下图所示。看起来主SP的解码也没什么特殊的,继续好奇辅SP的编解码。


辅SP帧的编码过程

         设以P_{1(x,y)}作为预测帧时,主SP帧的重建图像为I_{c(x,y)}I_{c(x,y)}由重建系数l_{rec}做反量化和反变换得到。假设另一预测帧为P_{2(x,y)},若要得到与主SP帧具有相同重建图像I_{c(x,y)}的辅SP帧,所要做的就是找到新的重建系数l_{rec,2},使得利用P_{2(x,y)}而不是P_{1(x,y)}也能准确地重建图像I_{c(x,y)}。对P_{2(x,y)}进行变换并量化,量化后的系数记为l_{pred,2},则辅SP帧的预测残差系数l_{err,2},可按照公式计算得到:l_{err,2}=l_{rec}-l_{pred,2}

        把计算得到的预测残差系数l_{err,2}进行无损的熵编码。解码端生成P_{2(x,y)}后,对P_{2(x,y)}进行变换和量化,得到l_{pred,2},其值与编码端相同。l_{pred,2}与接收到的预测残差系数l_{err,2}相加,得到重建系数l_{rec},对其进行反量化和反变换,就可以得到重建图像I_{c(x,y)},其与以P_{1(x,y)}作为预测帧得到的主SP帧所重建的图像完全相同。辅SP帧的编码过程如下图所示。

         个人认为原书中对辅SP帧的编码过程描述存在问题,因此上面两段按着个人理解做了一些修改,如有错误之处请指正。个人认为这里能重建出来的关键是P_{2(x,y)}能够在解码端生成。


 辅SP帧的解码过程

         下图是辅SP帧的解码原理图。首先获得预测块P(x,y),对于SP帧,P(x,y)是利用编码段端输出的运动矢量和参考帧索引等信息经过运动补偿预测得到。(对于SI帧,P(x,y)是利用编码端输出的帧内预测模式信息通过空间预测得到)然后,对P(x,y)进行正向变换,并将获得的变换系数量化,记为l_{pred}l_{pred}和量化后的预测残差系数l_{err}相加得到已经量化的重建系数l_{rec}l_{rec}量化得到d_{rec},d_{rec}反变换并加以滤波即得到重建图像。

 


         理完这个编解码过程,个人感觉主SP帧的编解码是没什么难理解的,就是比普通P帧多了个量化。但是辅SP帧的编解码有点意思,再重复一下这篇文章的第一幅图,如下所示:

         在辅SP编码的时候,利用的是重建A1和原始B2,得到A1和B2的差,编入码流。在辅SP解码的时候,利用重建A1与AB2的和,得到B2。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值