YUV 格式详解

  • 介绍
  • 分类标准
  • 具体分类
    • I420(属于 YUV 420 Plannar)
    • YV12(属于 YUV 420 Plannar)
    • NV12(属于 YUV 420 Semi-Planar)
    • NV21(属于 YUV 420 Semi-Planar)
    • I422(属于 YUV 422 Plannar)
    • YV16(属于 YUV 422 Plannar)
    • NV16(属于 YUV 422 Semi-Planar)
    • NV61(属于 YUV 422 Semi-Planar)
    • YUVY(属于 YUV 422 Interleaved)
    • UYVY(属于 YUV 422 Interleaved)
    • I444(属于 YUV 444 Plannar)
    • YV24(属于 YUV 444 Plannar)
    • NV24(属于 YUV 444 Semi-Planar)
    • NV42(属于 YUV 444 Semi-Planar)

介绍

音视频领域的人恐怕没有人不知道 YUV,但是 YUV 本身有好多种变种,名称也各种各样,本文就位大家总结一下YUV 的各种格式。

在开始之前,先向大家介绍一款 YUV 图像的查看工具—YUV Eye,大家可以使用这个工具,查看 YUV 图像。有的时候在进行 Debug 的时候,有这样一个工具会方便很多。

https://www.zzsin.com/YUVEye.html

首先先介绍一下 YUV,我们都知道,YUV 是一种表示颜色的模型。但是我们常说的 YUV ,其实指的是 YCbCr,其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量,是标准 YUV 的一个翻版,此文中,我们就用 YUV 指代 YCbCr 了。

我们再来看一下 YUV 的常见格式。你一定看过很多文章介绍 YUV 格式,但是对于 YUV 到底存在哪些格式,每种格式又有哪些变种,哪些别名,可能并没有一个系统的认识。没关系,我们用这篇文章帮你总结分析。

我们对 YUV 格式先进性一下分类,大家可以参考下图。

分类标准

首先,我们可以将 YUV 格式按照数据大小分为三个格式,YUV 420,YUV 422,YUV 444。由于人眼对 Y 的敏感度远超于对 U 和 V 的敏感,所以有时候可以多个 Y 分量共用一组 UV,这样既可以极大得节省空间,又可以不太损失质量。这三种格式就是按照人眼的特性制定的。

  • YUV 420,由 4 个 Y 分量共用一套 UV 分量,
  • YUV 422,由 2 个 Y 分量共用一套 UV 分量
  • YUV 444,不共用,一个 Y 分量使用一套 UV 分量

按照多个 Y 分量共用一个 UV 的方式,我们可以把 YUV 分为 420,422,444 三种类型,而在这三种类型之下,我们又可以按照 YUV 的排列储存顺序,将其细分为好多种格式,这些格式数量繁多,又不好记忆,这为我们学习过程中造成了不少困难。下面我就为大家一一介绍。

首先,我们将可以按照 YUV 的排列方式,再次将 YUV 分成三个大类,Planar,Semi-Planar 和 Packed。

  • Planar YUV 三个分量分开存放
  • Semi-Planar Y 分量单独存放,UV 分量交错存放
  • Packed YUV 三个分量全部交错存放

按照这三种方式,我们就可以将 YUV 格式进行比较细致的分类了。

具体分类

I420(属于 YUV 420 Plannar)

I420 是 YUV 420 Planar 的一种,YUV 分量分别存放,先是 w * h 长度的 Y,后面跟 w * h * 0.25 长度的 U, 最后是 w * h * 0.25 长度的 V,总长度为 w * h * 1.5。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U U U
U U U
U U U
V V V
V V V
V V V

YV12(属于 YUV 420 Plannar)

YV12 是 YUV 420 Planar 的一种,YUV 分量分别存放,先是 w * h 长度的 Y,后面跟 w * h * 0.25 长度的 V, 最后是 w * h * 0.25 长度的 U,总长度为 w * h * 1.5。与 I420 不同的是,YV12 是先 V 后 U

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V V V
V V V
V V V
U U U
U U U
U U U

NV12(属于 YUV 420 Semi-Planar)

NV12 是 YUV 420 Semi-Planar 的一种,Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 U 开始。总长度为 w * h * 1.5。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U V U V U V
U V U V U V
U V U V U V

NV21(属于 YUV 420 Semi-Planar)

NV21 是 YUV 420 Semi-Planar 的一种,Y 分量单独存放,UV 分量交错存放,与 NV12 不同的是,UV 在排列的时候,从 V 开始。总长度为 w * h * 1.5。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V U V U V U
V U V U V U
V U V U V U

I422(属于 YUV 422 Plannar)

I422 是 YUV 422 Planar 的一种,YUV 分量分别存放,先是 w * h 长度的 Y,后面跟 w * h * 0.5 长度的 U, 最后是 w * h * 0.5 长度的 V,总长度为 w * h * 2。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U U U U U U
U U U U U U
U U U U U U
V V V V V V
V V V V V V
V V V V V V

YV16(属于 YUV 422 Plannar)

YV16 是 YUV 422 Planar 的一种,YUV 分量分别存放,先是 w * h 长度的 Y,后面跟 w * h * 0.5 长度的 V, 最后是 w * h * 0.5 长度的 U,总长度为 w * h * 2。与 I422 不同的是,YV16 是先 V 后 U

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V V V V V V
V V V V V V
V V V V V V
U U U U U U
U U U U U U
U U U U U U

NV16(属于 YUV 422 Semi-Planar)

NV16 是 YUV 422 Semi-Planar 的一种,Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 U 开始。总长度为 w * h * 2。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U V U V U V
U V U V U V
U V U V U V
U V U V U V
U V U V U V
U V U V U V

NV61(属于 YUV 422 Semi-Planar)

NV61 是 YUV 422 Semi-Planar 的一种,Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 V 开始。总长度为 w * h * 2。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V U V U V U
V U V U V U
V U V U V U
V U V U V U
V U V U V U
V U V U V U

YUVY(属于 YUV 422 Interleaved)

YUVY 属于 YUV 422 Interleaved 的一种。事实上,Interleaved 是属于 Packed 的,但是在 422 中,用 Interleaved 更加形象一些。在 Packed 内部,YUV 的排列顺序是 Y U V Y,两个 Y 共用一组 UV。

Y U V Y   Y U V Y   Y U V Y
Y U V Y   Y U V Y   Y U V Y
Y U V Y   Y U V Y   Y U V Y
Y U V Y   Y U V Y   Y U V Y
Y U V Y   Y U V Y   Y U V Y
Y U V Y   Y U V Y   Y U V Y
  • VYUY(属于 YUV 422 Interleaved)
    VYUY 属于 YUV 422 Interleaved 的一种。在 Packed 内部,YUV 的排列顺序是 VYUY,两个 Y 共用一组 UV。
V Y U Y   V Y U Y   V Y U Y
V Y U Y   V Y U Y   V Y U Y
V Y U Y   V Y U Y   V Y U Y
V Y U Y   V Y U Y   V Y U Y
V Y U Y   V Y U Y   V Y U Y
V Y U Y   V Y U Y   V Y U Y

UYVY(属于 YUV 422 Interleaved)

UYVY 属于 YUV 422 Interleaved 的一种。在 Packed 内部,YUV 的排列顺序是 UYVY,两个 Y 共用一组 UV。

U Y V Y   U Y V Y   U Y V Y
U Y V Y   U Y V Y   U Y V Y
U Y V Y   U Y V Y   U Y V Y
U Y V Y   U Y V Y   U Y V Y
U Y V Y   U Y V Y   U Y V Y
U Y V Y   U Y V Y   U Y V Y

I444(属于 YUV 444 Plannar)

I444 属于 YUV 444 Plannar 的一种。YUV 分量分别存放,先是 w * h 长度的 Y,后面跟 w * h 长度的 U, 最后是 w * h 长度的 V,总长度为 w * h * 3。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U
V V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V

YV24(属于 YUV 444 Plannar)

YV24 属于 YUV 444 Plannar 的一种。YUV 分量分别存放,先是 w * h 长度的 Y,后面跟 w * h 长度的 V, 最后是 w * h 长度的 U,总长度为 w * h * 3。与 I444 不同的是,YV24 是先排列 V。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V
V V V V V V
U U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U
U U U U U U

NV24(属于 YUV 444 Semi-Planar)

NV24 是 YUV 444 Semi-Planar 的一种,Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 U 开始。总长度为 w * h * 3。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
U V U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V
U V U V U V U V U V U V

NV42(属于 YUV 444 Semi-Planar)

NV42 是 YUV 444 Semi-Planar 的一种,Y 分量单独存放,UV 分量交错存放,UV 在排列的时候,从 V 开始。总长度为 w * h * 3。

Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
V U V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
V U V U V U V U V U V U
  • YUV 444 Packed
    这个就不解释了。。。
Y U V   Y U V   Y U V   Y U V   Y U V   Y U V
Y U V   Y U V   Y U V   Y U V   Y U V   Y U V
Y U V   Y U V   Y U V   Y U V   Y U V   Y U V
Y U V   Y U V   Y U V   Y U V   Y U V   Y U V
Y U V   Y U V   Y U V   Y U V   Y U V   Y U V
Y U V   Y U V   Y U V   Y U V   Y U V   Y U V

最后,加上一个音视频的QQ交流群~~~

814462428

YUV 格式详解-史上最全相关推荐

  1. Java 移位、逻辑运算符详解(~史上最全|吹牛逼)

    目录 一.<< :左移运算符 二.>> :右移运算符 三.>>> :无符号右移 四.& :与运算 五.| :或运算 六.~ :非运算 七.^ :异或运 ...

  2. 【思维导图】富士相机的胶片模拟详解 史上最全资料汇总

    参考资料 当富士X-T4遇上X-Pro3[值不值得买第431期] https://www.bilibili.com/video/BV1oV411C7hJ,http://forum.xitek.com/ ...

  3. string所有函数详解——史上最全,最贴心

    简介 区别于#include<string.h>头文件,#include<string>头文件中的函数专门用于处理C++中string字符串.而前者是用来处理C语言中char数 ...

  4. 我的世界刷猪人塔java版_我的世界速攻猪人塔详解 史上最牛的经验塔

    我的世界速攻猪人塔详解 史上最牛的经验塔.那下面给大家分享的这个是一个可以让所有经验塔自叹不如的速攻猪人塔哦~那到底这个塔是什么呢?那下面就给大家详细的介绍一下吧!有感兴趣的玩家不妨进来看看哦~希望大 ...

  5. 数据结构与算法--二进制详解 Python二进制算法详解 史上最详细的二进制讲解 彻底搞懂原码、反码、补码 Python的负数二进制表示形式

    阅读目录 原码.反码.补码 机器数 和 真值 原码.反码.补码的基础 Python中负数的处理 负数的补码如何转成十进制 位运算符 和 移位运算符 基本概述 妙用 二进制涉及的算法 原码.反码.补码 ...

  6. Java泛型详解-史上讲解最详细的,没有之一

    目录 1. 概述 2. 一个栗子 3. 特性 4. 泛型的使用 4.1 泛型类 4.2 泛型接口 4.3 泛型通配符 4.4 泛型方法 4.4.1 泛型方法的基本用法 4.4.2 类中的泛型方法 4. ...

  7. 视频与图像RGB/YUV格式详解

    计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(Red).G(Green).B(Blue)相加混色的原理:通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红.绿.蓝磷光材料发光而产生色彩. ...

  8. RGB与YUV格式详解

    一.RGB RGB是最常见的一种颜色编码格式,它的三个通道 R.G.B分别对应红.绿.蓝三个分量.通常每个分量的位宽为8bit,值的范围是0~255,对应其256个灰阶,也即颜色的亮度,值越大表示该分 ...

  9. 【动态图文详解-史上最易懂的红黑树讲解】手写红黑树(Red Black Tree)

    红黑树:一棵自平衡(AVL)+二叉查找树(BST) 什么是红黑树 红黑树,Red-Black Tree 「RBT」是一个自平衡(不是绝对的平衡)的二叉查找树(BST). 红黑树是在1972年由Rudo ...

最新文章

  1. 艾伟_转载:string类与StringBuilder类性能比较
  2. Allegro转Altium(brd2alg)
  3. UILabel 根据text的内容来调整大小
  4. Java中,我自己定义的某个类,去实现某个接口,是否必须实现该接口的全部抽象方法呢?
  5. Python3——简单的UDP实例
  6. 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
  7. 并发量,QPS,TPS,看这一篇就够了
  8. mssql 查询每个业务员_每个社区管理员应阅读的7本书
  9. 微课|Python编写代理服务器程序(48分钟)
  10. 深入理解java集合框架之---------Arraylist集合 -----添加方法
  11. 使用C语言编写craps骰子游戏,Python实现国外赌场热门游戏Craps(双骰子)
  12. 高德地图开发踩坑记录
  13. 为什么苹果录屏没有声音_苹果手机自带录屏功能,打开声音录制方法
  14. 靶机渗透练习58-digitalworld.local:VENGEANCE
  15. Mac进行Homebrew安装配置
  16. AI作画的业界天花板被我找到了,AIGC模型揭秘 | 昆仑万维
  17. 将QQ书签导入到IE收藏夹
  18. 阿里要收购陌陌了,可来往该怎么办?
  19. 一个奇葩的网站打不开的问题的解决
  20. 国内开源网店的那些事

热门文章

  1. Python 使用摄像头测试心率 webcam-pulse-detector
  2. 2009年9月全国计算机等级考试四级笔试试卷网络工程师
  3. 基于STM32的智能语音垃圾桶设计
  4. 前端性能优化方法与实战12 理论分析:Hybrid 下的性能优化整体分析
  5. 核函数,再生核Hilbert空间,表示定理
  6. 数据类型 存储大小
  7. PostgreSql数据库操作记录
  8. [Android开发]支持高亮灯光移动效果的TextView、ImageView及ViewGroup
  9. vscode 左下方状态栏不显示 python 环境信息
  10. 标准为王、开放为王、免费为王、体验为王