h264/h265编解码专题讲解

一、编码器和解码器的架构讲解

1、编码层次:

一般来说,对于像h264、h265编解码器,一般会采用块级编码,也就是预先将一幅图像切割为多个像素块,一次对块内的部分或者所有的像素进行预测和编码;所以对编码器来说,就需要定义编码层次结构,这样编码的过程是逐层深入、依次进行:

  • 1、编码单元(coding unit , 简称CU),编码的基本单元,通常是取块block
  • 2、切片(slice): 由多个编码单元组成的部分图像,通常在空间上是连续的,切片定义了编码单元的可参考位置,从而将错误限制在一整幅图像内的部分范围内。

超低延迟的介绍:揭开音视频编解码超低延迟的神秘"面纱"!-CSDN博客

  • 3、帧/图像(frame/picture):由多个切片组成的一幅完整的图像。
  • 4、图像组(group of pictures,简称GOP):由多个帧/图像组成的部分视频序列,通常在时间上是连续的。
  • 5、序列(sequeence): 表示整个完整的视频

2、视频数据冗余和预测:

视频中存在大量的冗余,而视频编码本质上就是要消除这些冗余,从而实现对视频数据的压缩。一般我们经常听到的两种冗余:

  • 1、空间冗余:是静态图像中最为主要的一类数据冗余,比如说,一幅图像中如果存在较大的平缓区域,则意味着该区域中不同的像素的亮度、色度等都是非常接近的,在空间上存在很强的相关性,相互之间可以认为平滑过渡的,不会发生剧烈突变,这种就叫做空间冗余
  • 2、时间冗余: 他是视频序列中常见的一类数据冗余。在视频序列中,相邻帧往往具有类似的场景和物体,其中运动物体具有类似的大小和形状,仅仅是在图像中的位置发生了改变,可以认为后一帧中的物体是前一帧中物体发生位移,这种就叫做时间冗余

为了降低冗余,可以利用相关像素对当前像素进行预测,再对预测残差(预测值与实际值之差)进行编码和传输。那一般预测技术有哪些,一般有:

  • 1、帧内预测:他是利用空间上的相关性,由已经解码的相邻像素来预测当前块的像素,从而来有效的消除块间冗余
  • 2、帧间预测:他是利用时间上的相关性,将邻近参考帧中与当前块最相似的块做预测块,并计算预测块与当前块在空间位置上的相对偏移量,作为运动矢量。

帧间预测和帧内预测的优势对比:

使用帧内预测的I帧可以进行独立编解码,不受其他帧的影响,I帧可以作为P帧和B帧的参考帧。但是采用帧内预测的I帧压缩效率比较低,所占的数据信息量比较大。而P帧和B帧采用帧间预测,具有很大的压缩比,能够很大提高压缩率。同时,P帧可以作为其后P帧的参考帧,或者作为其前后B帧的参考帧,所以P帧可能会造成误差的扩散,往往通过周期插入I帧来阻止误差积累。

3、混合编码框架:

首先何为混合编码?‘是对同一帧数据使用帧内编码和帧间编码多个编码策略

当前视频编码的通用处理流程依次是:

  • 1、预测
  • 2、变化
  • 3、量化
  • 4、熵编码

并且每个流程都是以块作为处理单元,编码的过程如下:

  • 1、从原始帧中读入一个原始图像块
  • 2、选择帧内或者帧间预测,并基于重建帧进行预测,从而得到预测图像块
  • 3、将原始图像块和预测图像块相减,得到变换前的残差数据块
  • 4、对变换前的残差数据块进行变换,量化后,可以得到量能更为集中的系数数据块
  • 5、系数数据块一方面会和预测模式一起经过熵编码,得到压缩后的码流;另外一方面会经过反量化、反变换,得到变换后的残差数据块。
  • 6、将变换后的残差数据块与预测图像块相加,就可以得到重建图像块。
  • 7、基于块的视频编码形成的重构图像会出现方块效应,可以通过环路滤波去消除方块效应。
  • 8、重建图像块在编码器端作为参考图像,提供给帧内和帧间预测,帧内预测一般采用未经过环路滤波的数据,帧间预测一般采用经过环路滤波的数据
  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈~~哈~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值