YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。
YUV420P
YUV420P又叫plane平面模式,Y , U , V分别在不同平面,也就是有三个平面,它是YUV标准格式4:2:0,主要分为:YU12和YV12
YU12
按照 Y、U、V的顺序存储
YV12
按照 Y、V、U的顺序存储
YUV420SP
YUV420SP格式的图像阵列,首先是所有Y值,然后是UV或者VU交替存储,NV12和NV21属于YUV420SP格式,是一种two-plane模式,即Y和UV分为两个plane,但是UV(CbCr)为交错存储,而不是像YUV420格式那样分为三个平面。主要分为:NV21和NV12
NV21
存储顺序是先存Y值,再VU交替存储:YYYYVUVUVU,以 4 × 4 图片为例子,占用内存为 4 × 4 × 3 / 2 = 24 个字节
NV12
存储顺序是先存Y值,再UV交替存储:YYYYUVUVUV,以 4 × 4 图片为例子,占用内存为 4 × 4 × 3 / 2 = 24 个字节
YUV和RGB转换
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
U = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
V = - (0.148 * R) - (0.291 * G) + (0.439 * B) + 128
R = 1.164 * (Y - 16) + 2.018 * (U - 128)
G = 1.164 * (Y - 16) + 0.813 * (V - 128) - 0.391 * (U - 128)
B = 1.164 * (Y - 16) + 1.596 * (V - 128)