RGB和YUV区别
RGB常常用于图像的存储,并且十分简单。
但是在视频领域中,RGB就不那么常见了。我们知道,视频其实是由一张张连续的图片序列组成的,我们假设有一个1080p(1920 * 1080)分辨率、帧率为30帧的视频,如果不对视频进行压缩,并且使用RGB进行存储的话,仅仅一分钟的视频就能达到 ( 1920 * 1080 * 8 * 30 * 60 )bit (约等于27G)。这明显是不现实的,所以我们需要对视频数据进行压缩。
但由于RGB的三个分量是存在相关性的,这不利于我们对数据进行压缩编码。
所以我们需要一种数据相关性没那么强的颜色空间,我们接下来要介绍的YUV,就是这么一种颜色空间。
YUV同样使用三个分量来存储数据,他们分别是
Y:用于表示 明亮度(Luminance或Luma);
U/V:用于表示色度(Chrominance或Chroma);
Y其实就是我们常说的灰度值,是图片的总体轮廓,而U和V则用于描述色彩颜色和颜色饱和度。
视频拍摄、存储、输出流程
1. 摄像头从自然界采集到的RGB 数据,传给主控;
2. 主控取得RGB 数据后,由于数据量太大,预算和存储都费劲,于是前辈们就把RGB 转换成YUV,怎么转换呢? 就需要我们用到的标准了 BT709/BT601。
简单来说讲,BT709/BT601 定义一个RGB<->YUV的标准规范,大家都按照标准来做事,那么不同厂家生产出来的产品才能对接上。
3. 我们的LCD 最终显示出来的也是RGB 颜色,那么主控的数据想要在LCD 显示出来,就的吧YUV 转成RGB啊,这个转换可以再主控那边实现,也可在LCD 端实现。
转换的时候,也得根据标准BT709/BT601 来转换。
光学镜头 ->光学芯片sensor把光信号转换成RGB -> 转给主控 -> 主控把RGB 按照一定标准(BT709/BT601)转化成YUV -> 编码(H264)存储->解码得到YUV 数据 -> 主控把YUV 按照一定标准(BT709/BT601)转化成RGB -> LCD 显示RGB 数据。
4. BT709/BT601
BT601是SDTV的数据结构,BT656是SDTV的接口定义;
BT709是HDTV的数据结构,BT1120是HDTV的接口定义;