前言:近期有接触到YUV和RGB两种颜色编码格式,稍稍做了个了解,整理了网上的一些资料然后整理了一下,方便自己以后查阅,有描述不正确的地方麻烦大家多多指正。
一、YUV与RGB颜色编码格式
通俗点来理解的话,YUV与RGB都是一种颜色编码方法。当我们采集到图像数据后,一般输出的就是YUV格式的数据流,然后再去进行压缩编码等其他步骤来进行数据传输或保存。而最终显示在我们屏幕面前,通常又是以RGB格式来展现的。
二、YUV简介
YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV格式的出现正是为了解决历史上彩色与黑白电视过渡期而产生的,若将Y和UV分量分离开来只留下Y分量同样可以显示一幅完整的图像,只是没了色彩变成黑白了而已。
1、YUV格式
从网上找到张图,直观的展现出不同YUV格式的采集方式,其中黑点表示该像素点的Y分量, 空心圆圈为该像素点的UV分量。
从上图可以看出不同格式的YUV采样分别有以下规律:
- YUV 4:4:4采样,每一个Y对应一组UV分量。
- YUV 4:2:2采样,每两个Y共用一组UV分量。
- YUV 4:2:0采样,每四个Y共用一组UV分量。
2、YUV存储方式
YUV格式总体分为两大类:一个是planar,另一个是packed。
- packed存储:每个像素点的Y、U、V值连续交替存储。存储类型表示为在采样方式后缀加P。
- planar存储:先将存储所有像素点的Y值,再存储所有像素点的U值,最后是存储所有像素点的V值。存储类型表示为在采样方式后缀加SP。
(1)YUV422存储方式
存储格式:内存布局=>所属存储类型=>planes
YUY2: Y0U0Y1V0Y2U1Y3V1