Linux V4L2子系统-视频像素格式介绍(番外篇)

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-planarplanar格式的变种,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空间适用于编码和存储。

参考资料

  1. 视频编码全角度详解
  2. https://blog.csdn.net/iva_brother/article/details/84036877
  3. https://www.cnblogs.com/cumtchw/p/10224329.html
  4. https://www.fourcc.org/yuv.php
  5. https://blog.csdn.net/subfate/article/details/47304945
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值