YUV格式
基础概念
参考: https://zh.wikipedia.org/wiki/YUV
YUV表示图像的方式其中Y代表明度(luma),UV代表色度(chrominance)
这里需要注意的是我们需要两个数字来表示一个色度
注意色度并不是颜色,如果要表达一个颜色,还得加上明度,才能构成一个完整的YUV像素
YUV也经常和YCbCr这一说法同时出现,从历史演变来说,YUV通常用来编码电视模拟信号
,而YCbCr则是来描述数字影像信号,适合视频和图片的压缩和传输,例如MPEG,JPEG,但
在今天YUV通常已经在电脑上广泛使用
YUV本质也是源自RGB颜色,因为历史原因,先出现黑白电视,黑白电视只需要一
路信号就可以显示画面,后出现彩色电视,彩色电视信号为了兼容已有的黑白电视,就
将明度信号单独分离出来,以便黑白电视也能显示彩色电视信号的黑白图像.
有时也会见到Y`UV其中Y`的prime符号记作伽马校正
紧缩格式 packed formats
将Y、U、V值存储成Macro Pixels数组,和RGB的存放方式类似。 如YUV420Plannar格式
平面格式 planar formats
平面格式(planar formats):将Y、U、V的三个分量分别存放在不同的矩阵 中。
常见的YUV格式
为了在传输时节省带宽一般会对YUV数据进行抽样处理, 因为人类的眼睛对明 度比色彩
更加敏感,所以一般完全保留明度,而对色度进行抽样,因此产生了几种常见的抽样格式
- YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和YCbCr 4:4:4
YUV的表示法称为 A:B:C表示法
- 4:4:4 表示完全抽样,即每个像素都保留完整的明度和两个色度数据,共占24个byte
- 4:2:2 表示明度和色度取样比为2:1即,每行像素明度完全采样,色度每两个像素取一对
- 4:2:0 这里的0具有迷惑性,并不是说不对Cr进行采样,而是对每行采样时要么全取Cr要么
全取Cb,比如第一行,明度全取,Cr隔一个像素取一次,Cb全部丢弃,第二行明度全取,Cb隔一个
像素取一次,Cr全部丢弃 - 4:1:1表示4:1的水平取样,垂直完全采样
例如
-
4:4:4完全抽样,每个点都保留了完整的明度和色度信息
(Y0,U0,V0) (Y1,U1,V1) (Y2,U2,V2) (Y3,U3,V3) (Y4,U4,V4) (Y5,U5,V5) (Y6,U6,V6) (Y7,U7,V7)
-
4:2:2
每个像素都保留明度信息,色度信息间隔一个像素取一次
下划线代表被丢弃的明度数据(Y0,U0,V0) (Y1, _, _) (Y2,U2,V2) (Y3, _, _) (Y4,U4,V4) (Y5, _, _) (Y6,U6,V6) (Y7, _, _)
4:2:2格式在显示时两个像素共用一个明度数据,如下
(Y0,U0,V0) (Y1, U0, V0) (Y2,U2,V2) (Y3, U2, V2)
(Y4,U4,V4) (Y5, U4, V4) (Y6,U6,V6) (Y7, U6, V6) -
4:2:0
(Y0,U0,_) (Y1,_,_) (Y2,U2,_) (Y3,_,_) (Y4,_,V4) (Y5,_,_) (Y6,_,V6) (Y7,_,_)
4:2:0比较特殊,第一行只保留U(每两个),第二行只保留V数据(每两个) 可见4:2:0抽样后
明度为Y0,Y1,Y4,Y5像素都没有完整的色度信息,所以这四个像素共用U0和V4作为其色度,
另外四个像素同理(Y0,U0,V4) (Y1,U0,V4) (Y2,U2,V6) (Y3, U2,V6)
(Y4,U0,V4) (Y5,U0,V4) (Y6,U2,V6) (Y7,U2,V6) -
YUYV
YUV2/YUYV YUYV 格式属于 YUV422,采用打包格式进行存储,Y 和 UV 分量按照 2:1 比例采样,
每个像素都采集 Y 分量,每隔一个像素采集它的 UV 分量。Y0 U0 Y1 V0 Y2 U2 Y3 V2
YUY2(和YUYV)格式为像素保留Y,而UV在水平空间上相隔二个像素采样一次(Y0 U0 Y1 V0),(Y2 U2
Y3 V2)…其中,(Y0 U0 Y1 V0)就是一个macro-pixel(宏像素),它表示了2个像素,(Y2 U2 Y3
V2)是另外的2个像素 -
YVYU UYVY
YVYU, UYVY格式跟YUY2类似,只是排列顺序有所不同。Y211格式是Y每2个像素采样一次,而UV每4个像素采样一次。AYUV格式则有一Alpha通道。