1.视频概述
视频用来或记录、或显示、或同时记录显示运动对象,它由一系列在固定时间间隔拍摄的图片组成。每秒钟的帧(图片)数叫作帧率。低于10帧每秒(f/s)的帧率有时候用于甚低比特率(低于64bit/s)视频通信。对于低比特率视频通信,在10-20之间的f/s较为常见。25f/s或30f/s是电视图像的标准;而50f/s或60f/s则能产生相当平滑的运动。
视频可被分为模拟和数字类型。模拟视频用模拟信号来表示,由模拟摄像机进行逐行扫描或隔行扫描捕获。模拟视频的例子之一就是在模拟电视制式如PAL和NTSC中所用的信号。数字视频常常用数字摄像机来捕获,同时也能由模拟视频信号转换得到。自然场景投影到数字摄像机的传感器上(如电荷耦合器件阵列),这种传感器把场景的亮度或者颜色转换成数字数据。视频序列的每幅图像(图片)包括M×N个像素(pixel),其中M是行数,N是列数。
2.RGB像素格式
对于彩色图像,每个像素通常包括3个颜色分量:红(R)、绿(G)和蓝(B),3个颜色分量可以缩写为RGB。每个颜色分量被单独过滤并投影到CCD阵列上。任意颜色都可用不通比例的R、G和B组成。对于R、G和B所有可能的取值,矢量(R,G,B)构成了一个空间,叫作RGB颜色空间。每个颜色分量用Kbit的整数来表示。对一般应用而言,K值取8就足够了,但是,对于较为精确的应用诸如医学、广播、监控和工作室编辑等,就需要更大的K值。
3.YUV像素格式
与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域。YUV是指亮度分量和色度分量分开表示的像素格式,其中"Y"表示明亮度,也就是灰度值,而"U"和"V"表示的则是色度,作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV像素格式将亮度信息(Y)与色度信息(UV)分离,没有色度信息(UV)也能够显示出完整的图像,只不过是黑白图像。这样的设计很好的解决了彩色电视与黑白电视兼容的问题。
人眼中视网膜杆细胞的作用是识别亮度,锥细胞的作用是识别色度。因为人眼中视网膜杆细胞多于视网膜锥细胞,所以人眼对亮度的敏感程度要大于对色度的敏感程度。因此在存储图像信息时,为了节约空间,没有必要将所有的色度信息全部存储下来。RGB像素格式会将所有颜色信息保存下来,不利于图像信息存储和传输,而YUV格式将亮度和色度信息分离,可以通过减少色度信息从而减少存储空间,方便图像的存储和传输。
有时候也用YCbCr来表示YUV像素格式,其中Y表示像素的亮度,Cb反映的是像素蓝色分量与像素亮度分量之间的差值,Cr反映了像素红色分量与像素亮度分量之间的差值。
3.1.YUV采样格式
人类视觉系统(HVS)对亮度误差比对色度误差更为敏感。该热性可被用来对视频数据进行更多的压缩。因此,Cb和Cr分量可以用低于Y分量的分辨率来表示。例如,Cb和Cr可以采样为Y的1/4大小。这样就降低了用来表示色度分量的数据量,同时对视觉质量没有明显的影响。在存储或编码之前RGB图像要转换为YCbCr图像,而YCbCr图像在显示之前通常有必要转回RGB。一个视频标准通常支持多种Y、Cb、Cr的采样模式。典型的采样模式有YCbCr 4:4:4、YCbCr 4:2:2、YCbCr 4:2:0。如下图所示。
比例N1:N2:N3里面的数字指水平方向上的相对采样率,N1表示在奇数行和偶数行里Y样本的个数,N2表示奇数行里Cb和Cr样本的个数,N3是偶数行里Cb和Cr样本的个数。例如,在YCbCr 4:2:0的采样模式中,N1=4,N2=2,N3=0。这意味着对于奇数行里的每4个亮度样本,有2个Cb样本和2个Cr样本;但对于偶数行里的每4个亮度样本,没有Cb和Cr样本。在YCbCr 4:2:2的采样模式中,不仅对于奇数行里的每4个亮度样本有2个Cb和Cr样本,而且对于偶数行里的每4个亮度样本也有2个Cb和Cr样本。
在以上的模式中,YCbCr 4:2:0的采样模式是最流行的,广泛用于消费应用领域,如视频会议、数字电视和数字通用光盘(DVD)存储汇总。而YCbCr 4:4:4和YCbCr 4:2:2模式则用于高质量颜色再现。从上图和下图可以清楚地看出,YCbCr 4:2:0模式的样本数仅仅时YCbCr 4:4:4模式样本的一半。
在视频编码器中,每帧图像被分为固定大小的宏块(MB)。一个宏块包括一个由亮度分量16×16的样本和每个色度分量8×8的样本构成的矩形区域(YCbCr 4:2:0)。下图列出了3个像素格式YCbCr 4:4:4、YCbCr 4:2:2、YCbCr 4:2:0。YCbCr 4:4:4是全带宽视频,每个宏块包括4个Y块和4个U/V块。因全带宽之故,这种格式的数据量和RGB颜色空间数据量一样多。YCbCr 4:2:2包含YCbCr 4:4:4一半的色度信息,YCbCr 4:2:0包含YCbCr 4:4:4四分之一的色度信息。YCbCr 4:2:0像素格式一般用在视频流领域。
3.2.RGB与YUV像素格式的转换关系
RGB像素格式到YCbCr像素格式的转换公式如下:
YCbCr像素格式到RGB像素格式的转换公式如下:
3.3.YUV图像存储格式
YUV图像存储格式明显的分为两种。一种是packed
格式,Y、U(Cb)、V(Cr)三个分量保存在一起,存储完第一个像素的YUV分量,再存储下一个像素的YUV分量,直到存储完所有像素的YUV分量,所有的YUV分量保存在一块内存中,此块内存可以看成一维数组。另一种是planar
格式,该格式中Y、U(Cb)、V(Cr)三个分量分开保存,每个分量存储的内存可视为一维数组,分量存储的内存之间并不在一起,semi-planar
是planar
格式的变种,Y单独保存在一块内存中,U(Cb)、V(Cr)分量保存在一块内存中,U(Cb)、V(Cr)分量交替存放。
(1)YUV422
- YUV422P(I422)
YUV422P(I422)属于planar
格式。内存中的存储格式如下图所示,Y、U(Cb)、V(Cr)三个分各自单独保存。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ u u u u ]
[ u u u u ]
[ v v v v ]
[ v v v v ]
- YV16
YV16属于planar
格式。内存中的存储格式如下图所示,Y、U(Cb)、V(Cr)三个分各自单独保存,但V(Cr)分量在U(Cb)分量前面。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ v v v v ]
[ v v v v ]
[ u u u u ]
[ u u u u ]
- NV16(YUV422SP)
NV16(YUV422SP)属于semi-planar
格式。内存中的存储格式如下图所示,Y分量单独存放,U(Cb)和V(Cr)交叉存放在一起,U(Cb)在V(Cr)前面。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ u v u v ]
[ u v u v ]
[ u v u v ]
[ u v u v ]
- NV61
NV61属于semi-planar
格式。内存中的存储格式如下图所示,Y分量单独存放,U(Cb)和V(Cr)交叉存放在一起,V(Cr)在U(Cb)前面。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ v u v u ]
[ v u v u ]
[ v u v u ]
[ v u v u ]
(2)YUV420
- YUV420P(I420)
YUV420P(I420)属于planar
格式。内存中的存储格式如下图所示,Y、U(Cb)、V(Cr)三个分各自单独保存。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ u u ]
[ u u ]
[ v v ]
[ v v ]
- YV12
YV12属于planar
格式。内存中的存储格式如下图所示,Y、U(Cb)、V(Cr)三个分各自单独保存,但V(Cr)分量在U(Cb)分量前面。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ v v ]
[ v v ]
[ u u ]
[ u u ]
- NV12(YUV420SP)
NV12(YUV420SP)属于semi-planar
格式。内存中的存储格式如下图所示,Y分量单独存放,U(Cb)和V(Cr)交叉存放在一起,U(Cb)在V(Cr)前面。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ u v u v ]
[ u v u v ]
- NV21
NV21属于semi-planar
格式。内存中的存储格式如下图所示,Y分量单独存放,U(Cb)和V(Cr)交叉存放在一起,V(Cr)在U(Cb)前面。
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ y y y y ]
[ v u v u ]
[ v u v u ]
其他格式可参考https://www.fourcc.org/yuv.php
网址,具体如下图所示。
4.总结
(1)数字视频由一系列图像组成,每幅图像包括M×N个像素。
(2)每个像素的颜色由RGB颜色空间确定或者YCbCr空间三个分量确定。
(3)RGB颜色空间适合于图像采集和显示,而YCbCr空间适用于编码和存储。
参考资料
- 视频编码全角度详解
- https://blog.csdn.net/iva_brother/article/details/84036877
- https://www.cnblogs.com/cumtchw/p/10224329.html
- https://www.fourcc.org/yuv.php
- https://blog.csdn.net/subfate/article/details/47304945