音视频入门-07-认识YUV
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 格式
存储时:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
U0 U1 U2 U3 U4 U5 U6 U7
U8 U9 U10 U11 U12 U13 U14 U15
V0 V1 V2 V3 V4 V5 V6 V7
V8 V9 V10 V11 V12 V13 V14 V15
基于 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):
[Y0 U0 Y1 V1 ][Y2 U2 Y3 V3 ]
[Y4 U4 Y5 V5 ][Y6 U6 Y7 V7 ]
[Y8 U8 Y9 V9 ][Y10 U10 Y11 V11]
[Y12 U12 Y13 V13][Y14 U14 Y15 V15]
对 U,V 分量重新编号:
[Y0 U0 Y1 V0 ][Y2 U1 Y3 V1 ]
[Y4 U2 Y5 V2 ][Y6 U3 Y7 V3 ]
[Y8 U4 Y9 V4 ][Y10 U5 Y11 V5 ]
[Y12 U6 Y13 V6 ][Y14 U7 Y15 V7 ]
UYVY 格式
UYVY 格式也是采用打包格式进行存储,它的顺序和 YUYV 相反,先采样 U 分量再采样 Y 分量。
存储时(每个方括号里是 Macropixel=2 image pixels):
[U0 Y0 V1 Y1 ][U2 Y2 V3 Y3 ]
[U4 Y4 V5 Y5 ][U6 Y6 V7 Y7 ]
[U8 Y8 V9 Y9 ][U10 Y10 V11 Y11]
[U12 Y12 V13 Y13][U14 Y14 V15 Y15]
对 U,V 分量重新编号:
[U0 Y0 V0 Y1 ][U1 Y2 V1 Y3 ]
[U2 Y4 V2 Y5 ][U3 Y6 V3 Y7 ]
[U4 Y8 V4 Y9 ][U5 Y10 V5 Y11]
[U6 Y12 V6 Y13][U7 Y14 V7 Y15]
YUV422P 格式(又叫做 I422)
YUV422P 格式,又叫做 I422,采用的是平面格式进行存储,先存储所有的 Y 分量,再存储所有的 U 分量,再存储所有的 V 分量。
存储时:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
U0 U2 U4 U6 U8 U10 U12 U14
V1 V3 V5 V7 V9 V11 V13 V15
对 U,V 分量重新编号:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
U0 U1 U2 U3 U4 U5 U6 U7
V0 V1 V2 V3 V4 V5 V6 V7
基于 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
存储时:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
U0 U2 U8 U10 V4 V6 V12 V14
对 U,V 分量重新编号:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
U0 U1 U2 U3 V0 V1 V2 V3
YV12 格式
YV12 是先 Y 再 V 后 U
存储时:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
V4 V6 V12 V14 U0 U2 U8 U10
对 V,U 分量重新编号:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
V0 V1 V2 V3 U0 U1 U2 U3
YUV420SP 类型
YUV420SP 类型先存储所有的 Y 分量后,是按照 UV 或者 VU 的交替顺序进行存储。
NV12 和 NV21 格式都属于 YUV420SP 类型。它也是先存储了 Y 分量,但接下来并不是再存储所有的 U 或者 V 分量,而是把 UV 分量交替连续存储。
NV12 格式
NV12 是 iOS 中有的模式,它的存储顺序是先存 Y 分量,再 UV 进行交替存储。
存储时:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
U0 V4 U2 V6 U8 V12 U10 V14
对 U,V 分量重新编号:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
U0 V0 U1 V1 U2 V2 U3 V3
NV21 格式
NV21 是 Android 中有的模式,它的存储顺序是先存 Y 分量,在 VU 交替存储。
存储时:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
V4 U0 V6 U2 V12 U8 V14 U10
对 U,V 分量重新编号:
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15
V0 U0 V1 U1 V2 U2 V3 U3
参考资料:
内容有误?联系作者:

音视频入门-07-认识YUV的更多相关文章
- 音视频入门-08-RGB&YUV
* 音视频入门文章目录 * YUV & RGB 相互转换公式 YCbCr 的 Y 与 YUV 中的 Y 含义一致,Cb 和 Cr 与 UV 同样都指色彩,Cb 指蓝色色度,Cr 指红色色度,在 ...
- 音视频入门-10-使用libyuv对YUV数据进行缩放、旋转、镜像、裁剪、混合
* 音视频入门文章目录 * libyuv libyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转.缩放等的库.它是跨平台的,可在 Windows.Linux.Mac.A ...
- 音视频入门-09-RGB&YUV互转-使用开源库
* 音视频入门文章目录 * 介绍开源库 使用第三方开源库来简化开发,屏蔽一些底层的复杂度,节省大量编写代码的时间. libyuv: Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转 ...
- 音视频入门-01-认识RGB
* 音视频入门文章目录 * RGB 简介 RGB 色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红 ...
- 音视频入门-11-PNG文件格式详解
* 音视频入门文章目录 * PNG 文件格式解析 PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDAT.IEND)组成. PNG 文件包括 8 字节 ...
- 音视频入门-12-手动生成一张PNG图片
* 音视频入门文章目录 * 预热 上一篇 [PNG文件格式详解]详细介绍了 PNG 文件的格式. PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDA ...
- 音视频入门-14-JPEG文件格式详解
* 音视频入门文章目录 * JPEG 文件格式解析 JPEG 文件使用的数据存储方式有多种.最常用的格式称为 JPEG 文件交换格式(JPEG File Interchange Format,JFIF ...
- 音视频入门-13-使用开源库生成PNG图片
* 音视频入门文章目录 * RGB-to-PNG 回顾 上一篇 [手动生成一张PNG图片] 根据 [PNG文件格式详解] 一步一步地手动实现了将 RGB 数据生成了一张 PNG 图片. 有许多开源的 ...
- 音视频入门-05-RGB-TO-BMP使用开源库
* 音视频入门文章目录 * RGB-TO-BMP 回顾 将 RGB 数据转成 BMP 图片: 了解 BMP 文件格式 准备 BMP 文件头信息 准备 BMP 信息头 BMP 存储 RGB 的顺序是 B ...
随机推荐
- OpenJudge 计算概论1007:点评赛车
总时间限制: 1000ms 内存限制: 65536kB描述4名专家对4款赛车进行评论1)A说:2号赛车是最好的:2)B说:4号赛车是最好的:3)C说:3号赛车不是最好的:4)D说: B说错了.事实上只 ...
- Oracle 获取表的主键、外键以及唯一约束条件
Oracle 获取表的主键.外键以及唯一约束条件 Select a.Owner 主键拥有者, a.table_name 主键表, b.Column_Name 主键列, b.Constraint_Nam ...
- python清理docker-harbor的多余镜像
# coding: utf-8 from operator import itemgetter from urllib import parse import requests import date ...
- 生成model笔记
https://github.com/yscacaca/DeepSense/tree/master/android_test这个才是真正的部署代码,跑这个代码就好. 跑python sample_mo ...
- Linux命令 – ln 软连接与硬链接区别介绍
ln命令可以生成软链接和硬链接,也可叫做符号链接和实体链接. 有兴趣深入理解的可以查阅相关文档,一般的读者只需记住以下几点即可: 不管是软链接还是硬链接都不会额外增加磁盘空间(虽然实际情况可能会多占用 ...
- ISO/IEC 9899:2011 条款6.5.3——单目操作符
6.5.3 单目操作符 语法 1.unary-expression: postfix-expression ++ unary-expression -- unary-expression unar ...
- vs Qt mysql 打包程序 Driver not loaded Driver not loaded
vs下开发Qt连接mysql程序,开发过程中操作MySQL没有问题,但打包以后安装在别的电脑上发现竟然无法连接MySQL,打包的时候,所需的libmysql.dll等dll文件拷贝到exe同级目录了, ...
- 正确删除k8s版本jenkins的pod
1.kubectl delete -f jenkins-deployment.yaml 或者先删除pod,再删除对应的depllyment 这两步都要执行否则删除pod不管用 2.删除数据目录下的数据 ...
- 【kubeconfig】kubectl命令所使用的集群访问文件
kubectl默认会从$HOME/.kube目录下查找文件名为 config 的文件,也可以通过设置环境变量 KUBECONFIG 或者通过设置 --kubeconfig 去指定其它 kubeconf ...
- 安卓微信overflow-x overflow-y引发的bug
今天xgo文章图片页上线用微信扫页面发现一个bug,页面可以双击放大缩小. 找了半天原因,发现是图片描述设置了overflow-y引发的bug. 建议在微信场景里满屏显示不能滚动的页面里慎用overf ...