热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

YUV学习记录

一、介绍YUV是一种表示颜色的模型,也可以叫做采样率。YUV又可以叫为YCbCr,其中Y是指亮度分量,Cb(U)指蓝色色度

一、介绍

YUV是一种表示颜色的模型,也可以叫做采样率。
YUV又可以叫为Y Cb Cr ,其中Y是指亮度分量,Cb (U)指蓝色色度分量,而Cr(V)指红色色度分量。

二、分类

首先我们看一张图片:
在这里插入图片描述可以就看出,YUV分为 YUV420、YUV422、YUV444三大类
为什么分为这三类呢,是因为我们的眼睛对Y的敏感度远超U和V,这三中类型就是针对不同的人眼特性。

2.1YUV的占比

  1. YUV 420,由 4 个 Y 分量共用一套 UV 分量;
  2. YUV 422,由 2 个 Y 分量共用一套 UV 分量;
  3. YUV 444,不共用,一个 Y 分量使用一套 UV 分量;

2.2YUV排布方式
根据YUV三种分量在内存中的排布方式不一样,我们可以将YUV的三种类别再次进行细分;

  1. Planar (平面类格式):YUV 三个分量分开存放;
  2. Semi-Planar(半平面类格式) :Y 分量单独存放,UV 分量交错存放;
  3. Packed (打包类格式):YUV 三个分量全部交错存放;

2.3格式详解
(1)YUV420中的 I420(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。

Y1 Y2 Y Y Y YY3 Y4 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YU1 U UU U UU U UV1 V VV V VV V V

其中Y1 Y2 Y3 Y4 共用 U1 V1;

(2)YUV420中的NV12(Planar)
依次序存放:先存放所有Y再存所有V最后存放所有U。

Y1 Y2 Y Y Y YY3 Y4 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YV1 V VV V VV V VU1 U UU U UU U U

其中Y1 Y2 Y3 Y4 共用 V1 U1;

(3)YUV420中的NV12(Semi-Planar)
依次序存放:先存放所有Y,然后UV依次存放,从U开始。


Y1 Y2 Y Y Y Y
Y3 Y4 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
U1 V1 U V U V
U V U V U V
U V U V U V

其中Y1 Y2 Y3 Y4 共用 V1 U1;

(4)YUV420中的NV21(Semi-Planar)
依次序存放:先存放所有Y,然后VU依次存放,从V开始。

Y1 Y2 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YV1 U1 V U V UV U V U V UV U V U V U

其中Y1 Y2 共用 V1 U1;

(5)YUV422中的I422(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。

Y1 Y2 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YU1 U U U U UU U U U U U U U U U U U V1 V V V V VV V V V V V V V V V V V

其中Y1 Y2 共用 V1 U1;

(6)YUV422中的YV16(Planar)
依次序存放:先存放所有Y再存所有V最后存放所有U。

Y1 Y2 Y Y Y YY3 Y4 Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YY Y Y Y Y YV1 V V V V VV V V V V V V V V V V VU1 U U U U UU U U U U U U U U U U U

其中Y1 Y2 共用 V1 U1;

(7) YUV422中的 NV16 (Semi-Planar)
依次序存放:先存放所有Y再依次存放UV,从U开始。

Y1 Y2 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
U1 V1 U V U V
U V U V U V
U V U V U V
U1 V1 U V U V
U V U V U V
U V U V U V

其中Y1 Y2 共用 V1 U1;

(8)YUV 422中的VYUY (Packed)
按照VYUY 格式依次排序

V1 Y1 U1 Y2 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

Y1 Y2 共用 V1 U1 ;

(9)YUV 422中的YUVY (Packed)
按照YUVY 格式依次排序

Y1 U1 V1 Y2 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

Y1 Y2 共用 V1 U1 ;

(10)YUV 422中的UYVY (Packed)
按照UYVY依次排序。

U1 Y1 V1 Y2 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

Y1 Y2 共用 V1 U1 ;
(11)YUV 444中的 I444(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。

Y1 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
U1 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
V1 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

Y1 U1 V1组成一组YUV;

(12)YUV 444中的 YV42(Planar)
依次序存放:先存放所有Y再存所有U最后存放所有V。

Y1 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
V1 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
U1 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

Y1 U1 V1组成一组YUV;

(13)YUV 444中的 NV24 (半Planar)
依次序存放:先存放所有Y然后UV依次存放,从U开始。

Y1 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
U1 V1 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

Y1 U1 V1组成一组YUV;

(14)YUV 444中的 NV42 (半Planar)
依次序存放:先存放所有Y然后VU依次存放,从V开始。

Y1 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
V1 U1 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

Y1 U1 V1组成一组YUV;

(15)YUV444 中的 yuv444(packed)
YUV 依次排列;

Y1 U1 V1 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

Y1 U1 V1组成一组YUV;

三、关于YUV内存大小的计算

可能我的理解力不强,在网上看的很多计算都是迷茫的,所以这里按照我自己的理解来,我不知道这种方式是否标准。如果有错误请评论留言,我立即改正
3.1 YUV420大小的计算
在这里插入图片描述
根据YUV的比例,我们分成6块,由于Y代表整个图片亮度,所以我们将Y占用的长和宽就设定为图片的长(w)和宽(h)。
那么U 占用的空间就是1/4Y;
V 也是1/4Y;
所以YUV占用的内存大小就是 wh(1+ 1/4+ 1/4) = wh3/2;

3.2YUV422内存大小计算

还是按照YUV420的分析
在这里插入图片描述
Y = wh;
U = 1/2 Y;
V = 1/2 Y;
所以YUV422占用的大小是就是 w
h*2

3.3YUV444内存大小计算
在这里插入图片描述Y = wh;
U = Y ;
V = Y;
所以YUV444占用内存大小是 w
h*3;

这种计算方式不知道对不对。请指正。
还要一个问题 YUV420的 Y:U:V = 4:1:1,为啥不叫411,而叫420.
emmm!
晚安各位。


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 苹果新专利或将引领无边框手机时代
    苹果公司最近公布了一项新的专利技术,该技术能够在设备屏幕中嵌入光线传感器,这标志着苹果在实现无边框手机设计上迈出了重要一步。这一创新将极大提升手机的屏占比,并可能为未来的iPhone带来革命性的变化。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • RT,个人博客图片管理(方便管理,大家 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
author-avatar
不分日夜的我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有