【音视频 | YUV格式】深入理解 YUV 数据格式,一文弄懂

news2024/11/13 14:57:22

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍YUV数据格式🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰发布时间⏰: 2024-08-20 09:47:15

本文未经允许,不得转发!!!

目录

  • 🎄一、什么是 YUV 数据格式
  • 🎄二、YUV 采样格式分类
  • 🎄三、YUV 存储格式分类
    • ✨3.1 YUV444类型(`I444、YV24、NV24、NV42、YUV444 Packed`)
    • ✨3.2 YUV422类型(`I422、YV16、NV16、NV61、YUVY、VYUY、UYVY`)
    • ✨3.3 YUV420类型(`I420、YV12、NV12、NV21`)
  • 🎄四、YUV 格式的应用
  • 🎄五、总结


在这里插入图片描述

🎄一、什么是 YUV 数据格式

在图像和视频处理领域,YUV 格式是一种常见且重要的色彩编码方式,常用来做视频帧裸数据的表示。YUV主要应用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需要占用极少的频宽(RGB要求三个独立的视频信号同时传输)。

YUV 是一种将亮度(Luminance,用 Y 表示)和色度(Chrominance,用 U 和 V 表示)分开进行编码的方式。其中,Y分量代表了图像的亮度信息(明亮度,也称灰阶值),而 UV 分量则携带了颜色信息(色调和饱和度)。“亮度”是透过RGB输入信号来建立的,方法是将 RGB 信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面——色调与饱和度,分别用Cb和Cr来表示。Cb反映的则是RGB输入信号蓝色部分与RGB信号亮度值之间的差异;Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。所以,有时也会看到一些场景使用YCbCr来代替YUV

与常见的 RGB 格式(红、绿、蓝三原色)不同,YUV 格式在存储和传输图像数据时具有一些独特的优势。

本文将带您深入了解 YUV 格式的原理、特点以及其在各种应用中的优势。


在这里插入图片描述

🎄二、YUV 采样格式分类

由于人眼对 Y 的敏感度远超于对 U 和 V 的敏感,所以有时候可以多个 Y 分量共用一组 UV,这样既可以极大得节省空间,又可以不太损失质量。YUV 按照采样格式的不同,可以分成三类:

  • YUV4:4:4:在这种格式中,Y、U、V 三个分量的采样比例相同,每个像素都有独立的 Y、U、V 值,图像质量最高,但数据量也最大。图像中每个像素点都采集YUV分量,如下图
    在这里插入图片描述

  • YUV4:2:2:Y 分量的采样频率与像素相同,而 U 和 V 分量的采样频率是 Y 分量的一半。即在水平方向上,每两个像素共用一组 U、V 值。也就是说,图像的一行中,如果第一个像素点采集了 UV 分量,那第二个就不采集 UV 分量,依次类推,最终采集的每一行YUV的数量比值是4:2:2,如下图:
    在这里插入图片描述

  • YUV4:2:0:Y 分量的采样频率与像素相同,U 和 V 分量在水平和垂直方向上的采样频率均为 Y 分量的一半。也就是说,在图像的同一行中,如果采集了U分量,那就不会采集V分量,并且下一行只采集Y分量、V分量。采集U、V分量时是隔一个像素采集一次。如下图:
    第一行是采集U分量的,所以整行都不会采集V分量,且U分量是隔一个像素采集一次(第一个像素采,第二个就不采);
    因为上一行采集了U分量,所以第二行是采集V分量的,整行没采集U分量,且V分量是隔一个像素采集一次;
    最终采集下来,如果第一行YUV数量比值是4:2:0,那么第二行就是4:0:2,依次类推。
    在这里插入图片描述

在这三种格式中,YUV4:2:0是一种比较常见的压缩格式,在保证一定图像质量的前提下,大大减少了数据量。


在这里插入图片描述

🎄三、YUV 存储格式分类

采集到的yuv数据要怎么存储呢?是把Y、U、V分量都分开存储,还是交叉存储?

针对这个问题,如果没有一个标准的话,你存你的,我存我的,就可能造成你读取的YUV数据在其他人那里无法解析。YUV有三种存储格式:

  • Planar 格式(平面格式):Y、U、V 三个分量分别存储。
  • Semi-Planar 格式(半平面格式):Y 分量单独存放,UV 分量交错存储。
  • Packed 格式(打包格式):三个分量全部交错存储。

下面结合YUV的采样格式,以 6*4 的YUV图像为例,介绍常见的YUV类型。

✨3.1 YUV444类型(I444、YV24、NV24、NV42、YUV444 Packed)

  • I444(属于 YUV 444 Planar)
    I444格式是一种 Planar 格式(平面格式),将 YUV444 采样数据的YUV三个分量分别存储,如下图:先存储所有的Y分量,然后存储U分量,最后存储V分量。
    在这里插入图片描述
  • YV24(属于 YUV 444 Planar)
    YV24格式也是一种 Planar 格式(平面格式),将 YUV444 采样数据的YUV三个分量分别存储,与I444不同的是,YV24存完Y之后先存V分量再存U分量。如下图:先存储所有的Y分量,然后存储V分量,最后存储U分量。

在这里插入图片描述

  • NV24(属于 YUV 444 Semi-Planar)
    NV24格式是一种 Semi-Planar 格式(半平面格式),将 Y 分量单独存放,UV 分量交错存储。如下图:先存储所有的Y分量,然后UV 分量交错存储,UV排列时先存U分量。
    在这里插入图片描述

  • NV42(属于 YUV 444 Semi-Planar)
    NV42格式也是一种 Semi-Planar 格式(半平面格式),将 Y 分量单独存放,UV 分量交错存储。如下图:先存储所有的Y分量,然后UV 分量交错存储,UV排列时先存V分量。
    在这里插入图片描述

  • YUV444 Packed
    YUV444 Packed是一种Packed 格式(打包格式),三个分量全部交错存储。如下图,存储完第一个像素的YUV再存储第二个像素的,依此类推。
    在这里插入图片描述


✨3.2 YUV422类型(I422、YV16、NV16、NV61、YUVY、VYUY、UYVY)

  • I422(属于 YUV 422 Planar)
    I422格式是一种 Planar 格式(平面格式),将 YUV422 采样数据的YUV三个分量分别存储,如下图:
    先存储 w * h 长度的Y分量,然后存储 w * h * 0.5长度U分量,最后存储 w * h * 0.5 长度的V分量。
    在这里插入图片描述

  • YV16(属于 YUV 422 Planar)
    YV16格式也是一种 Planar 格式(平面格式),将 YUV422 采样数据的YUV三个分量分别存储,YV16存完Y之后先存V分量再存U分量。如下图:
    先存储 w * h 长度的Y分量,然后存储 w * h * 0.5长度V分量,最后存储 w * h * 0.5 长度的U分量。
    在这里插入图片描述

  • NV16(属于 YUV 422 Semi-Planar)
    NV16格式是一种 Semi-Planar 格式(半平面格式),将 Y 分量单独存放,UV 分量交错存储。如下图:先存储 w * h 长度的Y分量,然后将 w * h * 0.5长度U分量和 w * h * 0.5 长度的U分量交叉存储,UV排列时先存U分量。
    在这里插入图片描述

  • NV61(属于 YUV 422 Semi-Planar)
    NV61格式是一种 Semi-Planar 格式(半平面格式),将 Y 分量单独存放,UV 分量交错存储。如下图:先存储 w * h 长度的Y分量,然后将 w * h * 0.5长度U分量和 w * h * 0.5 长度的U分量交叉存储,UV排列时先存V分量。
    在这里插入图片描述

  • YUVY(属于 YUV 422 Packed)
    YUVY格式是一种Packed 格式(打包格式),将 YUV422 采样数据的YUV三个分量交叉存储,YUV 的排列顺序是 YUVY,两个 Y 共用一组 UV。如下图:
    在这里插入图片描述

  • VYUY(属于 YUV 422 Packed)
    VYUY格式是一种Packed 格式(打包格式),将 YUV422 采样数据的YUV三个分量交叉存储,YUV 的排列顺序是 VYUY,两个 Y 共用一组 UV。如下图:
    在这里插入图片描述

  • UYVY(属于 YUV 422 Packed)
    UYVY格式是一种Packed 格式(打包格式),将 YUV422 采样数据的YUV三个分量交叉存储,YUV 的排列顺序是 UYVY,两个 Y 共用一组 UV。如下图:
    在这里插入图片描述


✨3.3 YUV420类型(I420、YV12、NV12、NV21)

一般YUV420是没有Packet的存储方式的,常见的4种YUV420类型如下:

  • I420(属于 YUV 420 Planar)
    I422格式是一种 Planar 格式(平面格式),将 YUV420 采样数据的YUV三个分量分别存储,如下图:
    先存储 w * h 长度的Y分量,然后存储 w * h * 0.25长度U分量,最后存储 w * h * 0.25 长度的V分量。
    在这里插入图片描述

  • YV12(属于 YUV 420 Planar)
    YV12格式也是一种 Planar 格式(平面格式),将 YUV420 采样数据的YUV三个分量分别存储,YV12存完Y之后先存V分量再存U分量。如下图:
    先存储 w * h 长度的Y分量,然后存储 w * h * 0.25长度V分量,最后存储 w * h * 0.25 长度的U分量。
    在这里插入图片描述

  • NV12(属于 YUV 420 Semi-Planar)
    NV12格式是一种 Semi-Planar 格式(半平面格式),将 Y 分量单独存放,UV 分量交错存储。如下图:先存储 w * h 长度的Y分量,然后将 w * h * 0.25长度U分量和 w * h * 0.25 长度的U分量交叉存储,UV排列时先存U分量。
    在这里插入图片描述

  • NV12(属于 YUV 420 Semi-Planar)
    NV12格式是一种 Semi-Planar 格式(半平面格式),将 Y 分量单独存放,UV 分量交错存储。如下图:先存储 w * h 长度的Y分量,然后将 w * h * 0.25长度U分量和 w * h * 0.25 长度的U分量交叉存储,UV排列时先存V分量。
    在这里插入图片描述


在这里插入图片描述

🎄四、YUV 格式的应用

  1. 视频编码标准:如 H.264、H.265 等,广泛采用 YUV 格式作为输入和内部处理格式,以提高编码效率。
  2. 图像压缩:JPEG 图像压缩算法在处理彩色图像时,也会先将 RGB 转换为 YUV 格式。
  3. 数字电视和广播:YUV 格式在数字电视信号的传输和存储中得到了广泛应用。

在这里插入图片描述

🎄五、总结

👉本文介绍了YUV的采样格式、存储格式,以及十几种YUV格式:YUV444类型(I444、YV24、NV24、NV42、YUV444 Packed)、YUV422类型(I422、YV16、NV16、NV61、YUVY、VYUY、UYVY)、YUV420类型(I420、YV12、NV12、NV21)。

YUV 格式作为图像和视频处理中的重要色彩编码方式,凭借其在数据压缩、视觉特性适应等方面的优势,在众多领域发挥着关键作用。深入理解 YUV 格式对于从事相关领域的开发和研究人员具有重要意义。

希望通过本文的介绍,您对 YUV 格式有了更全面和深入的认识。

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

参考:
YUV 格式详解,只看这一篇就够了
https://blog.csdn.net/mzpmzk/article/details/81239532

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2055849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构与算法】快速排序

快速排序目录 一.快速排序的原理二.快速排序的图解三.快速排序的实现1.基准两边分2.分而治之 四.完整代码 一.快速排序的原理 每次选取第一个数为基准数.然后使用乾坤大挪移将大于或者小于基准的元素分别放置于基准数两边.继续分别对基准数两侧未排序的数据使用分治法进行处理…

计算机网络之IPv4深度解析

一.IP地址 IP地址的组成方式:网络号 主机号 可以这样理解,根据网络号找路由器,根据主机号找连着路由器的主机 早期分类的IP地址 表示如下: 其中,有些特殊的IP地址: 主机号全为0,表示本网…

CDD数据库文件制作(十一)——服务配置(0x19_DTC Code)

文章目录 1.新建DTC2.将DTC库中的DTC加载到Variant中3.19服务设置4.一些参数设置5.会话切换配置/安全等级配置6.寻址方式/禁止肯定响应位(SPRMIB)7.DTC Code 以文件形式进行导入导出1.新建DTC 先看一下诊断调查表中定义 如何创建一个新的DTC code? 选择DTC数据库点击新建DT…

Havoc C2 上线Windows 11

1、环境配置 Windows11 更新到最新补丁(文章编写时间:‎2023‎年‎8‎月‎),安全软件打开 Kali更新: apt update -y && apt upgrade -y安装设置Havoc //下载项目 cd /opt && git clone https://github.com/HavocFramework…

百度 测试|测试开发 面试真题|面经 汇总

百度测开 开发测试工程师 提前批一二三面面经 事业群:MEG base:北京 一面:2022.8.12 时长:50min 自我介绍 个人项目,我的项目是围绕着学校课程的项目来的,面试官就让我介绍这门课讲了些什么 &#xf…

【vue】编辑器段落对应材料同步滚动交互

场景需求 编辑器段落对应显示材料编辑器滚动时,材料同步滚动编辑器段落无数据时,材料不显示 实现方法 编辑器与材料组件左右布局获取编辑器高度,材料高度与编辑器高度一致禁用材料组件的滚动事件获取编辑器段落距离顶部的位置,…

鸿蒙开发5.0【基于自定义注解和代码生成实现路由框架】

场景描述 在应用开发中无论是出于工程组织效率还是开发体验的考虑,开发者都需要对项目进行模块间解耦,此时需要构建一套用于模块间组件跳转、数据通信的路由框架。 业界常见的实现方式是在编译期生成路由表。 1. 实现原理及流程 在编译期通过扫描并解…

吴恩达机器学习-C2W3-应用机器学习的建议

在本实验中,您将探索评估和改进机器学习模型的技术。 1-调包 首先,让我们运行下面的单元格来导入在此任务中需要的所有包。 numpymatplotlibscikitlearntensorflow import numpy as np %matplotlib widget import matplotlib.pyplot as plt from skle…

模拟实现queue适配器【队列】【C++】

P. S.:以下代码均在VS2022环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

私域经济的挖掘:多元渠道下的流量引爆方法

近年来,私域经济越来越受到品牌企业的青睐。基于个性化需求的私域市场,既有精准定位的成本优势,又有巨大的潜力空间。然而,想要把私域做成,其实也是充满了挑战,其中,怎样有效吸引流量&#xff0…

01、Redis入门:数据类型、基本操作、SpringDataRedis

Redis快速入门 Redis的常见命令和客户端使用 1.初识Redis Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样&#xf…

错误信息“缺少msvcr120.dll”或“找不到msvcr120.dll”应该如何修复?几种方法快速修复

由于这个msvcr120.dll文件与应用程序的运行密切相关,任何与之相关的问题都可能导致应用程序无法正常运行。错误信息如“缺少msvcr120.dll”或“找不到msvcr120.dll”,通常出现在软件安装不正确或系统更新后。接下俩就教大家几种方法快速修复msvcr120.dll…

7 周岁自闭症儿童可以去普校上学吗?

对于许多自闭症儿童的家长来说,孩子能否去普通学校上学是一个至关重要的问题。而星贝育园给出了充满希望的答案。 星贝育园向家长郑重承诺,4 周岁之前开始干预可以 100%摘帽,即消除自闭症症状。在这里,为自闭症儿童提供个性化教学…

Spring源码解析(34)之Spring事务回滚流程

一、前言 在上一个篇章我们主要介绍了Spring事务的运行流程,也带着一步步debug看了整个事务的运行流程,但是还是欠缺了Spring事务的回滚的流程。 在上篇也主要介绍了Spring事务的传播特性,这里还是要看一下Spring事务的传播特性,因…

思博伦测试每秒最大新建、并发、吞吐

详细方法查看本文资源链接 一、最大新建测试说明 1、新建测试的主要目标是测试被测设备(DUT)的处理器能力。在单位时间内能够建立的连接数越多,说明被测设备的处理器的能力越强。 2、由于在测试过程中,我们只关心成功的建立TCP…

流动会场:定义新一代灵活空间的全新选择—轻空间

在当今快节奏的世界里,活动和会议的需求正变得越来越多样化和复杂化。无论是公司年会、大型宴会、还是各类演出和会议,场地的选择不仅需要满足功能需求,更要灵活、易于部署。正是在这样的背景下,“流动会场”这一创新概念应运而生…

反向沙箱是什么?如何使用反向沙箱保障上网安全

反向沙箱是什么? 反向沙箱是深信达的一种沙箱技术,又称SPN(Sandbox Proxy Network)沙箱。主要用于解决企业在安全上网过程中的风险问题。它通过在企业内部部署一个隔离的沙盒环境,实现安全的互联网访问,从而…

注意力机制(课程笔记)

一: 针对的问题 解决在循环卷积网络RNN模型中存在的信息瓶颈问题。 信息瓶颈: 举的是机器翻译的例子。在RNN中,Decoder的第一个输出取决于Encoder中的上一个输出,然后Decoder的其余输出都取决于上一个Decoder输出(也就…

使用Nexus3为containerd和docker配置镜像代理

1.Nexus3介绍: Nexus3(Nexus Repository Manager3)是一个用于存储、组织和管理软件组件(如 JAR文件、npm包、Docker镜像等)的仓库管理系统。它由Sonatype开发并维护。Nexus Repository Manger支持许多流行的包管理工具…

免费仿微信聊天工具盒子IM

盒子IM是一个仿微信实现的网页版聊天软件,不依赖任何第三方收费组件。后端采用springbootnetty实现,web端使用vue,移动端使用uniapp,支持私聊、群聊、离线消息、发送图片、文件、语音、emoji表情、视频聊天等功能。包含pc端和移动…