YUV & YCbCr 简介
YUV,是一种颜色编码方法。常使用在各个视频处理组件中。 YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。
Y 表示明亮度(Luminance或Luma),也就是灰阶值,U 和 V 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
Y’CbCr 不是一种绝对的色彩空间,是一种针对 RGB 资讯所做的编码。真正的颜色显示是根据实际 RGB 色盘(colorant)来决定的。因此 Y’CbCr 所表示的值只有在标准 RGB 色盘或是 ICC 数据(ICC profile)有提供的时候才能计算。Y’CbCr 在模拟分量影像(analog component video)中也常被称为 YPbPr。
YCbCr 不是一种绝对色彩空间,是 YUV 压缩和偏移的版本。YCbCr 的 Y 与 YUV 中的 Y 含义一致,Cb 和 Cr 与 UV 同样都指色彩,Cb 指蓝色色度,Cr 指红色色度,在应用上很广泛,JPEG、MPEG、DVD、摄影机、数字电视等皆采此一格式。
[ [ [ 因此一般俗称的 YUV 大多是指 YCbCr ] ] ]。
- [ [ [ 因此一般俗称的 YUV 大多是指 YCbCr ] ] ]。
- [ [ [ 因此一般俗称的 YUV 大多是指 YCbCr ] ] ]。
YUVFormats分成两个格式:
紧缩格式(packedformats):将 Y、U、V 值存储成 MacroPixels 数组,和 RGB 的存放方式类似。
平面格式(planarformats):将 Y、U、V 的三个分量分别存放在不同的矩阵中。
紧缩格式(packedformat)中的 YUV 是混合在一起的,对于 YUV4:4:4 格式而言,用紧缩格式很合适的,因此就有了 UYVY、YUYV 等。
平面格式(planarformats)是指每 Y 分量,U 分量和 V 分量都是以独立的平面组织的,也就是说所有的 U 分量必须在 Y 分量后面,而 V 分量在所有的 U 分量后面,此一格式适用于采样(subsample)。平面格式(planarformat)有 I420(4:2:0)、YV12、IYUV 等。
YUV 采样格式
为节省带宽起见,大多数 YUV 格式平均使用的每像素位数都少于 24 位。主要的采样(subsample)格式有 YCbCr4:2:0、YCbCr4:2:2、YCbCr4:1:1 和 YCbCr4:4:4。YUV 的表示法称为 A:B:C 表示法:
- 4:4:4 表示完全取样。
- 4:2:2 表示 2:1 的水平取样,垂直完全采样。
- 4:2:0 表示 2:1 的水平取样,垂直 2:1 采样。
- 4:1:1 表示 4:1 的水平取样,垂直完全采样。
表格中,每一格代表一个像素
未采样前
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
4:4:4 采样
4:4:4 表示完全取样
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
映射的像素:
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
4:2:2 采样
4:2:2 表示 2:1 的水平取样,垂直完全采样
每采样过一个像素点,都会采样其 Y 分量,而 U、V 分量就会间隔一个采集一个。
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 - | Y1 - V1 | Y2 U2 - | Y3 - V3 |
2 | Y4 U4 - | Y5 - V5 | Y6 U6 - | Y7 - V7 |
3 | Y8 U8 - | Y9 - V9 | Y10 U10 - | Y11 - V11 |
4 | Y12 U12 - | Y13 - V13 | Y14 U14 - | Y15 - V15 |
映射的像素:
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V1 | Y1 U0 V1 | Y2 U2 V3 | Y3 U2 V3 |
2 | Y4 U4 V5 | Y5 U4 V5 | Y6 U6 V7 | Y7 U6 V7 |
3 | Y8 U8 V9 | Y9 U8 V9 | Y10 U10 V11 | Y11 U10 V11 |
4 | Y12 U12 V13 | Y13 U12 V13 | Y14 U14 V15 | Y15 U14 V15 |
4:2:0 采样
4:2:0 表示 2:1 的水平取样,垂直 2:1 采样
每采样过一个像素点,都会采样其 Y 分量,而 U、V 分量就会间隔一行按照 2 : 1 进行采样。
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 - | Y1 - - | Y2 U2 - | Y3 - - |
2 | Y4 - V4 | Y5 - - | Y6 - V6 | Y7 - - |
3 | Y8 U8 - | Y9 - - | Y10 U10 - | Y11 - - |
4 | Y12 - V12 | Y13 - - | Y14 - V14 | Y15 - - |
映射的像素:
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V4 | Y1 U0 V4 | Y2 U2 V6 | Y3 U2 V6 |
2 | Y4 U0 V4 | Y5 U0 V4 | Y6 U2 V6 | Y7 U2 V6 |
3 | Y8 U8 V12 | Y9 U8 V12 | Y10 U10 V14 | Y11 U10 V14 |
4 | Y12 U8 V12 | Y13 U8 V12 | Y14 U10 V14 | Y15 U10 V14 |
4:1:1 采样
4:1:1 表示 4:1 的水平取样,垂直完全采样
每采样过一个像素点,都会采样其 Y 分量,而 U、V 分量就会间隔一行按照 2 : 1 进行采样。
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 - | Y1 - - | Y2 - V2 | Y3 - - |
2 | Y4 U4 - | Y5 - - | Y6 - V6 | Y7 - - |
3 | Y8 U8 - | Y9 - - | Y10 - V10 | Y11 - - |
4 | Y12 U12 - | Y13 - - | Y14 - V14 | Y15 - - |
映射的像素:
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V2 | Y1 U0 V2 | Y2 U0 V2 | Y3 U0 V2 |
2 | Y4 U4 V6 | Y5 U4 V6 | Y6 U4 V6 | Y7 U4 V6 |
3 | Y8 U8 V10 | Y9 U8 V10 | Y10 U8 V10 | Y11 U8 V10 |
4 | Y12 U12 V14 | Y13 U12 V14 | Y14 U12 V14 | Y15 U12 V14 |
YUV 存储方式
YUV 的存储方式,一般有两种方式,一种叫 packed 模式,一种叫 planar 模式。packed 模式 Y,U,V 交错排列,而 planar 模式 Y 和 U,V 的排列是分开的,而具体 U 与 V 继续分开或者继续交错排列根据具体的格式相关。
常见的基于 YUV422 采样的格式:
YUV422 采样 |
---|
YUYV 格式 |
UYVY 格式 |
YUV422P 格式 |
常见的基于 YUV420 采样的格式:
YUV420P 类型 | YUV420SP 类型 |
---|---|
YV12 格式 | YU12 格式 |
NV12 格式 | NV21 格式 |
基于 YUV444 采样的格式
4x4 像素 YUV444 采样:
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 V0 | Y1 U1 V1 | Y2 U2 V2 | Y3 U3 V3 |
2 | Y4 U4 V4 | Y5 U5 V5 | Y6 U6 V6 | Y7 U7 V7 |
3 | Y8 U8 V8 | Y9 U9 V9 | Y10 U10 V10 | Y11 U11 V11 |
4 | Y12 U12 V12 | Y13 U13 V13 | Y14 U14 V14 | Y15 U15 V15 |
YUV444P 格式
存储时:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
基于 YUV422 采样的格式
4x4 像素 YUV422 采样:
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 - | Y1 - V1 | Y2 U2 - | Y3 - V3 |
2 | Y4 U4 - | Y5 - V5 | Y6 U6 - | Y7 - V7 |
3 | Y8 U8 - | Y9 - V9 | Y10 U10 - | Y11 - V11 |
4 | Y12 U12 - | Y13 - V13 | Y14 U14 - | Y15 - V15 |
YUYV 格式
YUYV 格式是采用打包格式进行存储的,指每个像素点都采样 Y 分量,但是每隔一个像素采样它的 UV 分量。
存储时(每个方括号里是 Macropixel=2 image pixels):
1 | [Y0 U0 Y1 V1 ][Y2 U2 Y3 V3 ] |
对 U,V 分量重新编号:
1 | [Y0 U0 Y1 V0 ][Y2 U1 Y3 V1 ] |
UYVY 格式
UYVY 格式也是采用打包格式进行存储,它的顺序和 YUYV 相反,先采样 U 分量再采样 Y 分量。
存储时(每个方括号里是 Macropixel=2 image pixels):
1 | [U0 Y0 V1 Y1 ][U2 Y2 V3 Y3 ] |
对 U,V 分量重新编号:
1 | [U0 Y0 V0 Y1 ][U1 Y2 V1 Y3 ] |
YUV422P 格式(又叫做 I422)
YUV422P 格式,又叫做 I422,采用的是平面格式进行存储,先存储所有的 Y 分量,再存储所有的 U 分量,再存储所有的 V 分量。
存储时:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
对 U,V 分量重新编号:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
基于 YUV420 采样的格式
YUV420P 和 YUV420SP 都是基于 Planar 平面模式进行存储的。
4x4 像素 YUV420 采样:
- | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | Y0 U0 - | Y1 - - | Y2 U2 - | Y3 - - |
2 | Y4 - V4 | Y5 - - | Y6 - V6 | Y7 - - |
3 | Y8 U8 - | Y9 - - | Y10 U10 - | Y11 - - |
4 | Y12 - V12 | Y13 - - | Y14 - V14 | Y15 - - |
YUV420P 类型
YUV420P 类型先存储所有的 Y 分量后,会先存储所有的 U 分量或者 V 分量。
YU12 和 YV12 格式都属于 YUV420P 类型,即先存储 Y 分量,再存储 U、V 分量,区别在于:YU12 是先 Y 再 U 后 V,而 YV12 是先 Y 再 V 后 U 。
YU12 格式(又叫做I420)
YU12 是先 Y 再 U 后 V
存储时:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
对 U,V 分量重新编号:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
YV12 格式
YV12 是先 Y 再 V 后 U
存储时:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
对 V,U 分量重新编号:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
YUV420SP 类型
YUV420SP 类型先存储所有的 Y 分量后,是按照 UV 或者 VU 的交替顺序进行存储。
NV12 和 NV21 格式都属于 YUV420SP 类型。它也是先存储了 Y 分量,但接下来并不是再存储所有的 U 或者 V 分量,而是把 UV 分量交替连续存储。
NV12 格式
NV12 是 iOS 中有的模式,它的存储顺序是先存 Y 分量,再 UV 进行交替存储。
存储时:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
对 U,V 分量重新编号:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
NV21 格式
NV21 是 Android 中有的模式,它的存储顺序是先存 Y 分量,在 VU 交替存储。
存储时:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
对 U,V 分量重新编号:
1 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
参考资料:
内容有误?联系作者: