YUV
- 摄像头图像传感器接受外界的光线
- A/D转换,将图像信息转换为了数字信号,得到RAW数据
- 经过ISP处理,对图像进行白平衡、色彩校正、黑电平、降噪、滤波等操作得到最接近现实的RGB图像
- 由于人类的眼睛对图像亮度的敏感度更高,对色度的敏感度较低,所以可以适当的舍弃色度信息,达到减少空间的效果,一张YUV420的图片,抛弃色度信息后,大小变成RGB图像的一半。
- YUV数据的不同存储方式,形成了不同的帧格式,如plane,package。平面模式是先存储Y数据,称为Y平面,接着存储UV数据,成为UV平面。package是yuv数据混合存储。plane和package的概念同样适用在RGB数据上。
H.264/AVC
-
将视频数据进行存储时,即使是 YUV 数据,占用的空间也非常惊人,所以需要对视频数据进一步的压缩。所以有了 h264,h265 等等。
-
在 h264 之前,有两个机构都推出的视频压缩编码的标准,分别是 ITU 和 ISO,ITU推出了 H.261 H.262 H.263,ISO 推出了 MPEG-1 MPEG-2,为了能够统一的使用最后两个组织一起推出了 H.264 MPEG-4 AVC,后来有了 H.265 MPEG-4 HEVC
-
压缩编码从多个角度进行
- 空间冗余:变换、预测
- 时间冗余:帧间预测、运动补偿
- 图像构造冗余:轮廓编码、区域分割
- 知识冗余:知识编码
- 视觉冗余:非线性量化、位分配
空间冗余
- 一张图片划分成一个个的小方块,小方块内的像素内容通常是高度相似的,可以通过少量的像素推测出其他像素的值,这就是帧内预测。
- 在H264中,宏块的大小通常为 4x4 - 16x16,仅保存宏块的第一行和第一列的像素数据,通过不同的预测方式计算剩余的像素点的值。
- 一共有9中预测方式,分别是:垂直、水平、DC(上方和左侧像素的平均值)、左上对角、左模式、上模式、右上对角模式、右模式、下模式
- 通过这种方式,减少了空间上的冗余,使得压缩比可以达到 8:1
- 经过上面的压缩过后,会经过量化处理,图像中的主要轮廓、纹理等细节信息都包含在低频成分中,通过量化计算舍弃高频成分中的部分信息,使得数据更加的紧凑
- 空间冗余主要是在I帧中进行的
时间冗余
P帧
- 通常情况下,两帧图像的大部分内容都是相同的,这时候只需要计算两帧图像之间的差异即可
- 假设一个在桌上运动的球,在30帧的视频中,两帧之间的时间间隔是 33 毫秒,这两个图像中背景桌子是不变的,只有小球在运动,则可以理解为宏块在某个方向上移动了一段距离
- 使用运动估计算法得到当前帧与参考帧之间的运动关系,得到运动矢量
- 运动补偿是将像素位置根据运动矢量进行计算移动到运动后的位置
- 计算当前帧与参考帧之间的差异,得到残差值
- 运动矢量和残差值共同组成了P帧的主要信息
- 三种帧间预测模式:帧间跳过、单向预测、双向预测
B帧
- 包含两IP帧两个方向上的运动矢量和残差值,数据量进一步减少
图像构造冗余、知识冗余、视觉冗余
- 各种算法,如余弦变换、熵编码等
统计冗余
- 熵编码,是一种无损压缩,原理就是用较短的编码来表示常见的符号,用较长的编码来表示罕见的符号,总体上减少编码的长度。
H.265/HEVC
- h265 大体原理与 h264 相似
- 提供了帧内预测模式-35种
- 9种帧间预测模式
- 更高的比特深度、更好的残差处理、更精确的运动估计
- 更大的宏块,支持最大 64x64 的宏块划分,大大提高了压缩比
- 在大块相似的区域,如背景会使用大的宏块,变化剧烈区域会使用小的宏块