视频格式基础知识
目 录
1 视频基础知识
1.1简介
1.2 RGB格式
1.3 YUV格式
1.3.1 YUV的编码格式
1.3.2 YUV的存储格式
1.3.3
YUV的采样方式
1.4 RGB与YUE的转换
硬件设计基础
1 视频基础知识
1.1 简介
常用的像素的格式有两种:
RGB格式
和
YUV格式
,像素的格式定义了像素在内存中的
编码方式
。在介绍这两种格式的信息之前,我们连接一些常用名词:
●
像素
:像素是一个图片的基本单位。单位px是picture element的缩写,所以像素有“图像元素”之意。
●
分辨率
:是指图像的大小或尺寸,比如1920*1080(行周期数*场周期数)。
● 位深:是指在记录数字图像颜色时,计算机实际上是用每个像素所需要的位深来表示的,比如红色、绿色、蓝色的分量用8bit。
●
帧率
:在1秒钟时间里传输的图片的帧数,也可以理解为图像处理器每秒中能够刷新的次数,比如25fps每秒中有25张图片(帧率通常也称为刷新率)。
●
码率
:视频文件在单位时间内使用的数据流量,比如1Mbps。(码率就是通常我们描述速率)
●
Stride
:指在内存中每行像素的所占的空间大小,目的是为了实现内存对齐,每行像素在内存中所占的空间并不一定是图像的宽度。
频率的计算公式为:
频率 = 行周期数 * 场周期数 *帧率
速率的计算公式:
速率 = 频率 * 带宽
以常见的1080P、30fps的视频的时序图为例,主要由三个信号组成H、V、DE。其有效像素的分辨率为1920x1080,算上消隐期,其像素分辨率为2200x1125,为HD-SDI格式,其频率和速率的计算公式为:
频 率 = 2200 × 1125 × 30 = 74.25 M H z
速率=74.25×20=1.485Gbit/s
1.2 RGB格式
RGB格式有三个通道R、G、B,分别对应红色、绿色、蓝色,由这三个分量直接决定颜色。有些图片会附件一个一个Alpha通道,用于表示透明度,即四个分量共同控制颜色(RGBA)。
图1 RGB格式 一张1920*1080的图片,具有2073600个像素点,如果采用RBG的格式进行存储,其占用的空间大小为: 1920*1080*3/1024/1024 = 5.93MB 如果采用RBGA的格式进行存储,其占用的空间大小为: 1920*1080*4/1024/1024 = 7.91MB
1.3 YUV格式
1.3.1 YUV的编码格式
相比于RGB格式,YUV格式最大的好处是
在保持图像质量降低不明显的前提下,减小文件大小
。YUV的编码合适采用亮度和色度来指定像素的颜色,其中Y表示亮度,U和V表示色度。对于 YUV 图像来说,并不是每个像素点都需要包含了 Y、U、V 三个分量,根据不同的采样格式,可以每个 Y 分量都对应自己的 UV 分量,也可以几个 Y 分量共用 UV 分量。
1.3.2 YUV的存储格式
YUV的存储格式可分为两种:
平面格式(Plannr)
和
紧凑模式(Packed)
。
•
平面格式(Plannr)
:对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随是存储所有像素点的V,或者是先V后U。 •
紧凑模式(Packed)
:对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。比如YUV420P,其中P表示紧凑,YUV420SP其中的SP表示“半紧凑”。 其中,p表示逐行采样,i表示隔行采样。
1.3.3 YUV的采样方式
YUV主流的擦痒方式有三种:YUV4:4:4、YUV4:2:2、YUV4:2:0。
1 YUV4:4:4格式
YUV4:4:4这种格式占用的空间最大,每个像素都有一个Y分量、U分量、V分量。YUV4:4:4大小和RGB存储的大小是一样的,为3个字节。根据U和V的顺序不同,又有两种不同的格式。YUV4:4:4每个像素包含一个Y分量和一个UV分量。
每个像素的占用的空间:
1byte(Y) + 1byte(U) + 1byte(V) = 3 byte
单帧占用空间:
FrameSize = FrameWith * FrameWith * 3(byte)
●
单个像素
●
2*2个像素
2 YUV4:2:2格式
YUV4:2:2是每两个Y分量共用一个UV分量,所以一个像素占用两个字节,根据存储顺序不同分为四种不同格式。
每个像素占用空间为:
1 byte(Y) + 1/2 byte(U) + 1/2 byte(V) = 2 byte
单帧占用空间:
FrameSize = FrameWith * FrameWith * 2(byte)
●
2个像素
YUV4:2:2(2像素)
●
4*4个像素
YUV4:2:2(4*4像素)
2 YUV4:2:0格式
YUV4:2:0是每四个Y分量共用一个UV分量,所以一个像素占用1.5个字节,根据存储顺序不同分为四种不同格式。
每个像素占用空间为:
1 byte(Y) + 1/4 byte(U) + 1/4 byte(V) = 1.5 byte
单帧占用空间:
FrameSize = FrameWith * FrameWith * 1.5(byte)
●
四个像素
●
4*4个像素
1.4 RGB与YUE的转换
YUV像素格式来源于RGB像素格式,通过公式运算,YUV三分量可以还原出RGB,YUV转RGB的公式如下:
● R = Y + 1.403V
● G = Y – 0.344U – 0.714V
● B = Y + 1.770U
一般,将RGB和YUV的范围均限制在[0,255]间,则有如下转换公式:
● R = Y + 1.403(V-128)
● G = Y – 0.344(U -128)– 0.714(V-128)
● B = Y + 1.770(U-128)