关于视频编解码的一些基础知识

因为最近看IMX6Q的VPU示例代码有些概念不懂,所以看了《 基于H.264的视频编码处理技术与应用》这本书的前几章了解了一下,做一个简单的记录。

颜色模型

我们平常能接触到的是RGB和YUV。

RGB

RGB一般用在电视,显示器等设备上,而非科学研究中,因为三种颜色分量放在一起表示,相互干扰,不便处理。而且会造成存储空间的浪费。

YUV颜色空间:

其中Y代表亮度值,U和V表示色度,代表了颜色的色调Cr饱和度Cb
与RGB不同,其优点是亮度Y和色度UV是相互独立的,占用频宽小。如果只有Y信号,就是黑白彩色图像。
因为人眼对颜色细节的分辨能力远远低于对亮度细节分辨能力,所以可以把几个相邻像素不同颜色值当做相同的颜色值来处理,以减少存储容量,从而压缩数据。按照不同的YCbCr的比率,可以分为YUV420、YUV422、YUV411和YUV444。
这篇博客对于他们的区别讲的很好,主要差别在采样率上,最后需要的存储空间自然就不同了。
另外,YUV可以与RGB通过矩阵相互转换。

编码的基本原理

视频编码的目的是实现对视频的压缩,也可以称作去除冗余。主要有以下几种

分类 帧间冗余 帧内冗余 统计冗余 视觉冗余
说明 低速运动物体 大片的蓝天 根据概率分配码字 人眼对某些信息不易感知

针对以上冗余解决办法有运动补偿、帧内预测、熵编码、量化等。

I帧、P帧和B帧

I帧:帧内预测编码帧,是独立的,可以当做是单独的一幅静态画面。视频序列中的第一帧都是I帧,因为它是关键帧。
P帧:帧间预测编码帧,与前一帧有关,需要用到本帧和前一帧的信息(可以是I帧,也可是P帧)。由于P帧对前面的P和I参考帧有着复杂的依耐性,因此对传输错误非常敏感。
B帧:双向预测编码帧,记录的是本帧与前后帧的差别。B帧压缩率高,但是对解码性能要求较高。
一般视频传输使用的是I帧和P帧,比如海康的某些相机编码I帧间隔是50,中间有49帧P帧。

H264/AVC

一帧(frame)可以分为若干个片(slice),向下还可以细分为宏块等,一图胜千言:

上图来自于这篇文章,它对一些H264的基本概念讲的很通俗易懂。

posted @ 2018-01-11 15:54  可乐咸鱼  阅读(5559)  评论(0编辑  收藏  举报