热门标签 | 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!
晚安各位。


推荐阅读
  • windows便签快捷键_用了windows十几年,没想到竟然这么好用!隐藏的功能你知道吗?
    本文介绍了使用windows操作系统时的一些隐藏功能,包括便签快捷键、截图功能等。同时探讨了windows和macOS操作系统之间的优劣比较,以及人们对于这两个系统的不同看法。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文讨论了当某位排位靠前的涉众提供了一张精美的界面图片时,是否可以将其作为设计约束。同时还探讨了高质量素材和愿景之间的关系,以及老大自身的软件方法和建模技能。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 本文研究了使用条件对抗网络进行图片到图片翻译的方法,并提出了一种通用的解决方案。通过学习输入图像到输出图像的映射和训练相应的损失函数,我们可以解决需要不同损失函数公式的问题。实验证明该方法在合成图片、重构目标和给图片着色等多个问题上都很有效。这项工作的重要发现是不再需要人为构建映射函数和损失函数,同时能够得出合理的结果。本文的研究对于图片处理、计算机图片合成和计算机视觉等领域具有重要意义。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 计算成像的原理与应用研究
    本文探讨了计算成像的原理与应用研究。首先介绍了小孔成像实验和软件方面的相关内容。随后从傅里叶光学的角度简单谈了成像的过程。成像是观测样品分布的一种方法,通过成像系统接收光的强度来呈现图像。视网膜作为接收端接收到的图像实际上是由像元组成的矩阵,每个元素代表相应位置像元接收光的强度。大脑通过对图像的分析,得出一系列信息,如识别物体、判断距离等。计算成像是一种采集记录系统,通过处理数据得到样品分布与像的对应关系,用于后续问题的分析。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 图片复制到服务器 方向变了_双服务器热备更新配置文件步骤问题及解决方法
    本文介绍了在将图片复制到服务器并进行方向变换的过程中,双服务器热备更新配置文件所出现的问题及解决方法。通过停止所有服务、更新配置、重启服务等操作,可以避免数据中断和操作不规范导致的问题。同时还提到了注意事项,如Avimet版本的差异以及配置文件和批处理文件的存放路径等。通过严格执行切换步骤,可以成功进行更新操作。 ... [详细]
  • 1.RoIPoolingRoIPooling顾名思义对Roi进行Pooling操作,主要用于目标检测任务。RoI(Regionofinterest&# ... [详细]
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社区 版权所有