音视频开发(一)——视频数据格式

1. 概述

在我们进行视频数据处理的时候,不可避免的要涉及不同的视频数据格式,这里的视频格式指单独的视频帧的格式,不包括音频数据。
接下来将对常见的视频图像格式进行介绍,并比较不同格式的适用场景。

2. RGB 格式

2.1 RGB 简介

RGB即红绿蓝三原色,世界上绝大多数颜色都可以通过RGB按照不同的配比得到,这里说的是绝大多数而没有说全部,因为仍然有些颜色无法通过三原色配比得到。而这些无法通过三原色配比得到的颜色,在视频图片处理过程中可以忽略,可能会有理论研究的意义。具体可以看颜色三角形.

RGB是最早出现的颜色空间,之后陆续又出现了 HSL、HSV、YUV 等,具体可以参考文章RGB、YUV和HSV颜色空间模型颜色空间:RGB,CMY,HSV,HSL,Lab详解.

RGB 格式更加靠近设备端,设备采集的数据或者设备支持渲染的数据往往都是 RGB 格式的,下图可以看出 RGB 和 YUV 的应用场景。图片来自 Color image pipeline
在这里插入图片描述

2.2 RGB 存储形式

RGB格式有多种存储或者表示方式。
调色板
RGB1,RGB4,RGB8、RGB256等,都是通过调色板来表示的,就是在存储颜色时,并不是存储的真正的颜色数据,而是一个指向调色板的索引。

直接存储颜色

  • 两字节存储,例如 RGB555、RGB565,每种基色都只占5或6位。
  • 三字节存储,有 RGB24,三种颜色各占一个字节。
  • 四字节存储,有RGB32,各分量占用8位,剩下的8位作Alpha通道或者不用。

3. YUV 格式

3.1 简介

YUV 是一种广泛应用于视频编解码的图形表示方式。Y 是图形的亮度参数,U 和 V 表示图形的色度和饱和度,研究表明人眼对亮度的敏感程度高于色度,所以在存储图形的时候,可以降低色度的数据量,达到压缩的目的。

YUV 相对 RGB 的优势:

  • YUV 中的 Y 就是表示的亮度,如果去掉 UV 维度,即得到黑白图片,能够实现彩色视频对黑白显示器的向下兼容。
  • YUV 能够实现对图形更好的压缩效果,所以在视频传输过程中,基本都是以 YUV 格式进行的。

3.2 YUV 存储形式

按照色度信息采样的频率可以分为以下三种:
YUV444 : 表示色度信息没有减少采样,即 YUV 各占一个字节。
YUV422:表示色度信息减半采样,每采样两个 Y,会采样一个 U 和一个 V。
YUV420:表示色度信息按照亮度的四分之一采样,每采样四个 Y,会采样一个 U 和一个 V。

最常用的是 YUV420,主要是能够实现最好的压缩效果,而视觉效果降低不明显,YUV420根据UV 参数的相对存储位置又可以分为以下四种形式:
I420:YYYYYYYY UU VV
YV12:YYYYYYYY VV UU
NV12:YYYYYYYY UVUV
NV21:YYYYYYYY VUVU

4. RGB 和 YUV 之间的转换

参考:
YUV格式详解【转】
YUV格式分析
YUV

//RGB --> YUV
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16

Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128

Cb = U = -( 0.148 * R) - (0.291 * G) + (0.439 * B) + 128

//YUV --> RGB
R = 1.164(Y - 16) + 1.596(V - 128)

G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)

R = 1.164(Y - 16) + 1.596(V - 128)

RGB取值范围均为 0- 255,Y = 0 - 255,U = -122 - +122,V = -157 - +157,以下是经过简化的公式,运算量比上述公式要小一些。

// RGB --> YUV
Y = 0.299R + 0.587G + 0.114B

U'= (BY)*0.565

V'= (RY)*0.713

// YUV --> RGB
R = Y + 1.403V'

G = Y - 0.344U' - 0.714V'

B = Y + 1.770U'

关于 YUV 和 RGB 格式的图片处理可以参考:视音频数据处理入门:RGB、YUV像素数据处理

5. 小结

最近打算比较系统的学习音视频的知识,这是开端,目前接触最多的就是这两种图形表示方式,当然还有其他的,后面如果有必要再补充。

猜你喜欢

转载自blog.csdn.net/zhuiyuanqingya/article/details/83317907