YUV 概述
YUV诞生于黑白电视向彩色电视过渡的时期。黑白视频是只有Y(Luma或Luminance,即亮度)分量的视频,也就是灰阶值。在彩色电视中,除了Y以外,还使用U和V来表示图像的色度(Chrominance或Chroma,C)。U和V也分别称为Cb、Cr,分别代表蓝色通道和红色通道与亮度的差值。
YUV采样
- YUV444格式
YUV444表示4:4:4的YUV取样,水平每4像素中YUV各取4个,即每像素中YUV各取1个。
- YUV422格式
YUV422表示4:2:2的YUV取样,水平每2像素中Y取样2个,UV各取样1个
- YUV420格式
YUV420表示4:2:0的YUV取样,水平每2像素与垂直每2像素中Y取样4个,UV各取样1个
- YUV411格式
YUV411表示4:1:1的YUV取样,水平每4像素中Y取样4个,UV各取样1个
YUV存储
Packed
将YUV三个分量的素数值放在同一个阵列中,存储为单个阵列宏像素
Planar
每个分量存储为单独的数组,最终图像是三个单独平面的整合
Semi-Planar
介于Pakced和Planar之间,即Y分量为一个阵列,UV交叉存储
YUV与RGB的转换
RGB、YUV像素数据处理
- 分离YUV420P像素数据中的Y、U、V分量
- 将YUV420P变成灰度图
- 将YUV420P像素数据的亮度减半
- 将YUV420P像素数据的周围加上边框
- 生成YUV420P格式的灰阶测试图
- 计算两个YUV420P像素数据的PSNR
- 分离RGB24像素数据中的R、G、B分量
- 将RGB24格式像素数据封装为BMP图像
- 将RGB24格式像素数据转换为YUV420P格式像素数据
- 生成RGB24格式的彩条测试图