YUV数据格式

article/2025/9/23 4:24:33

与 RGB 编码方法类似,YUV 也是一种颜色编码方法。其中“Y”表示明亮度(Luminance 或 Luma),也就是灰阶值,U 和 V 表示的则是色度(Chrominance 或 Chroma),分别用 CrCb来表示,作用是描述影像色彩及饱和度,用于指定像素的颜色。

这样分开的好处:

1. 可以避免相互干扰(没有 UV 信息一样可以显示完整的图像,因而解决了彩色电视与黑白电视的兼容问题);
2. 降低色度的采样率而不会对图像质量影响太大,降低了视屏是`信号传输时对频宽(带宽)的要求。
YUV 是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。

YUV采用A:B:C表示法来描述Y,U,V采样频率比例,下图中黑点表示采样像素点Y分量,空心圆表示采样像素点的UV分量。

在这里插入图片描述

1. 4:4:4 表示色度频道没有下采样,即一个Y 分量对应着一个U分量和一个V分量。一个YUV占 8+8+8=24bits 3个字节;
2. 4:2:2 表示 2:1 的水平取样,垂直完全采样。一个 YUV 占 8+4+4=16bits 2个字节;
3. 4:2:0 表示 2:1 的水平取样,垂直 2:1 采样。一个 YUV 占 8+2+2=12bits 1.5个字节;
4. 4:1:1 表示 4:1 的水平取样,垂直完全采样。 与其他格式相比,4:1:1 采样不太常用。

即:

  • YUV 4:4:4 采样,每一个 Y 对应一组 UV 分量。
  • YUV 4:2:2 采样,每两个 Y 共用一组 UV 分量。
  • YUV 4:2:0 采样,每四个 Y 共用一组 UV 分量。

1. YUV存储格式

YUV 存储可以分为两种:packed(打包)和planar(平面);

  • packed:Y、U、V 分量穿插着排列,三个分量存在一个 Byte 型数组里;

  • planar:Y、U、V 分量分别存在三个 Byte 型数组中;

2. 常见的像素格式

2.1 YUV422:YUYV、YVYU、UYVY、VYUY

这四种格式每一种又可以分为 2 类(packed和planar),以 YUYV 为例,一个 6*4 的图像的存储方式如下:

    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                  Y U Y V Y U Y V Y U Y V
    U U U U U U                  Y U Y V Y U Y V Y U Y V
    V V V V V V                   Y U Y V Y U Y V Y U Y V
    V V V V V V                   Y U Y V Y U Y V Y U Y V
    - Planar -                          - Packed - 

2.2 YUV420:I420、YV12、NV12、NV21

  • YUV420p: I420、YV12
  • YUV420sp: NV12、NV21

同样,对于一个6*4的图像,这四种像素格式的存储方式如下:

    Y Y Y Y Y Y        Y Y Y Y Y Y        Y Y Y Y Y Y       Y Y Y Y Y Y
    Y Y Y Y Y Y        Y Y Y Y Y Y        Y Y Y Y Y Y       Y Y Y Y Y Y
    Y Y Y Y Y Y        Y Y Y Y Y Y        Y Y Y Y Y Y       Y Y Y Y Y Y
    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      V V V V V V       U V U V U V      V U V U V U
    V V V V V V       U U U U U U      U V U V U V      V U V U V U
     - I420 -              - YV12 -              - NV12 -             - NV21 -

  • I420、YV12 三个分量均为平面格式,即分别存在三个 Byte 型数组中;
  • NV12、NV21 的存储格式为 Y 平面,UV 打包,即 Y 信息存储在一个数组中,UV 信息存储在一个矩阵中。

3. 数据格式

3.1 4:4:4 格式

AYUV:这是一个打包格式,其中每个像素都被编码为四个连续字节,其组织顺序如下所示,其中 A AA 标示了alpha通道。

在这里插入图片描述

 3.2 4:2:2 格式

 1. YUY2:在 YUY2 格式中,数据可被视为一个不带正负号的char值组成的数组,其中第一个字节存储第一个Y样例,第二个字节存储第一个U(Cb)样例,第三个字节存储第二个Y 样例,第四个字节存储第一个V(Cr)样例,如下图:

在这里插入图片描述

 2. UYVY:此格式与 YUY2 相同,只是字节顺序是与之相反的。

在这里插入图片描述

 3.3 4:2:0 格式

1 IMC1:所有 Y YY 样例都会作为不带正负号的 char 值组成的数组首先存储在内存中。后面跟着存储所有V(Cr)样例,然后是所有U(Cb)样例。V和U平面与Y平面具有相同的跨距(即存储数组的宽度),从而遗留了如下图所示的未使用的内存区域。
                                     在这里插入图片描述

2. IMC3:此格式与 IMC1 相同,只是 U 和 V 平面进行了交换:
                                     在这里插入图片描述

3.   IMC2:此格式与 IMC1 相同,只是V(Cr) 和U(Cb)行在半跨距边界处进行了交错。换句话说,就是色度区域中的每个完整跨距行都以一行V样例开始,然后是一行在下一个半跨距边界处开始的 U 样例:
                                     在这里插入图片描述

 此布局与 IMC1 相比,IMC2 能够更加高效地利用存储空间。它的色度存储空间缩小了一半,因此整体存储空间缩小了 25%。在各个 4:2:0 格式中,IMC2 是第二首选格式,排在 NV12 之后。

4. IMC4:此格式与 IMC2 相同,只是U(Cb) 和V(Cr) 行进行了交换:
                                        在这里插入图片描述

5. NV12: 所有 Y 样例都会作为由不带正负号的 char 值组成的数组首先存储在内存中,并且行数为偶数。Y平面后面紧接着一个由不带正负号的 char 值组成的数组,其中包含了打包的U(Cb) 和V(Cr)样例。
                                       在这里插入图片描述

7. NV21: NV21 格式和 NV12 存储格式基本相同,只是 U V 存储位置互换。

8. YU12: 也叫做 I420 格式,首先是所有 Y YY,然后是所有U,最后是所有V
                                     在这里插入图片描述

也就是为什么 U UU 和 V VV 看到的是四幅图像:
在这里插入图片描述

8. YV12: YV12 格式与 YU12 基本相同,首先是所有 Y 值,然后是所有 V 值,最后是所有 U 值。

4. YUV数据转换

1. 4:2:2 -> 4:2:0 的有损压缩转换:Y YY 存储数据不变,对 U UU 和 V VV 分量在行垂直下采样进行隔行抽样。
2. 4:2:0 -> 4:2:2的补足转换:Y YY 存储数据不变,对 U UU 和 V VV 分量在行垂直下采样进行隔行拷贝补足下一行色度数据。

5. NV12转RGB

r = y + (140 * (v-128))/100; //r

g = y - (34 * (u-128))/100 - (71 * (v-128))/100; //g

b = y + (177 * (u-128))/100; //b


 

 


 


http://chatgpt.dhexx.cn/article/iRC0UseX.shtml

相关文章

YUV存储格式

YUV存储格式 YUV的存储格式planar(中文翻译:平面的;二维的;平坦的)packed (中文翻译:挤满塞满) YUV的采样方式存储方式YV12在内存中存储NV12在内存中存储YUYVUYVYYU422PYUV420P YUV420SPYUV420SPYUV420PYU1…

YUV格式到底是什么?

简介 YUV是视频、图片、相机等应用中使用的一类图像格式,实际上是所有“YUV”像素格式共有的颜色空间的名称。 与RGB格式(红 - 绿 - 蓝)不同,YUV是用一个称为Y(相当于灰度)的“亮度”分量和两个“色度”分…

YUV格式详解

介绍 我们都知道,YUV是一种表示颜色的模型,另外在大多数情况下,我们所说的YUV与YCbCr是一样的,其中Y指亮度分量,UV和CbCr都是色彩分量。 有一款YUV图像查看工具 YUV Eye ,可以使用这个工具查看YUV图像&am…

图像和流媒体 -- 详解YUV数据格式

如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/78283369 我们在讲 FFmpeg 系列的时候,有提到 YUV 的。其中包括YUV播放器、简单的YUV格式介绍。 参看:FFmpeg再学习 -- 视音频基础知识 接下来详细研究一下&#x…

YUV格式详解【全】

YUV格式详解 YUVYUV 采样YUV 4:4:4YUV 4:2:2YUV 4:2:0YUV 4:1:1 planar formatPacked (or Interleaved)PlanarSemi-Planar 关系图 YUV 与 RGB 相互转换计算公式推导1. 模拟 RGB转YUV的推导公式2. 数字 RGB to YUV 1. 模拟YUV→模拟RGB2. 数字YUV→数字RGBYUV与RGB的相互转换会损…

LaTeX Error: Unknown option quiet for package fontspec

编译方式错误,fontspec是基于Xe和Le开发的,所以不能使用pdf**进行编译

Latex Error:Two \documentclass or \documentstyle commands. \documentclass{

今天尝试在latex中使用markdown语法时出现了如下错误: Two \documentclass or \documentstyle commands. \documentclass{ 在网上查找了好多地方,都说是因为用了两次\documentclass命令导致的,可是我能确定我只用了一次\documentclass命令,最后我终于找到了问题所在。因为我的…

介绍Latex神器——Overleaf的方法

向大家介绍2个神网站,一个是腾讯在线文档,一个是overleaf 腾讯在线文档就不多介绍了,可以直接百度网址并使用,它有2个亮点,1.特别简洁,高效。2.可以多人在线,共同编辑同一个文档。(在…

LaTeX:斜线表头的表格制作

参考 LaTeX:斜线表头的表格制作 - 云社区 - 腾讯云 需求:正规表格的左上角"第一个单元是表头",一般都是用"斜线分区"的!本文介绍其实现方法:不仅适用在表头,表中任何一个单元位置都适…

latex报错 Misplaced \noalign.

表格最后一行少了双斜杠\\

3、显示锁和AQS

3、显示锁和AQS 原子操作CAS atom(不可分割) 什么是原子操作?如何实现原子操作? synchronized 基于阻塞的锁机制 可以实现,但会引发以下问题 1、被阻塞的线程优先级很高 2、拿到锁的线程一直不释放锁怎么办&#x…

LaTex绘制跨行跨列的三线表

有时表格某单元格需要横跨几列,我们可以使用 \multicolumn 命令, 同时使用 booktabs 宏包的 \cmidrule 命令来画横跨几列的横线。它们的语 法如下: \begin{table }[ htbp]\centering \begin{tabular }{ lll}\toprule & \multicolumn{2}{…

Springer latex期刊模板使用的坑

1.之前都是用这个编译,Springer 期刊不是这个,是pdflatex 解决方案:可以上面选项换成pdflatex也可以加这命令\documentclass[pdflatex,sn-basic]{sn-jnl}(注意documentclass只能出现一次,所以pdflatex可以加在原有的d…

LaTeX--5--一个文档的基本结构/导言区/标题_作者_日期

本期的主要内容有: 一个 LaTeX 文档的基本结构导言区常用排版命令标题、作者与日期字体与字号特殊字符的输入一些常用排版效果 另外我们还会穿插介绍一些 LaTeX 的基本概念,在文中加粗表示并附上英文。 1. 一个 LaTeX 文档的基本结构 承接上一期&…

Latex表格大小调整常见问题汇总

列宽调整 若要调整每列的宽度到指定数值&#xff0c;可以将代码中的 \begin{tabular}{c|ccc}改为 \begin{tabular}{p{xxx}|ccc}其中花括号里面填写宽度数值&#xff0c;如5pt&#xff0c;10mm等。如果需要该列居中&#xff0c;可以写作 \begin{tabular}{p{xxx}<{\center…

Elsevier模板LaTex中编译时出现“! Undefined control sequence.”

问题描述(以下内容仅是我遇到的问题&#xff0c;不一定具有普适性) 使用overleaf模板库里的ElsevierLaTex模板上传到系统后&#xff0c;系统并没有正确的生成pdf&#xff0c;而是生成了报错信息。 后来改用了Elsevier官网的latex模板&#xff0c;但是上传之后还是生成报错信息…

latax中插入表格

下面这篇博客写的很好&#xff0c;这里转载了过来。另外需要补充几点&#xff1a; 1.绘制表格的简单方法 latax绘制复杂表非常的麻烦&#xff0c;故一般采取其他方法。 可以使用Excel2LaTeX插件 https://www.latexstudio.net/archives/6992.html &#xff08;需要安装ms off…

Latex的常见问题及解决方案

制作斜线表头 \usepackage{diagbox} \begin{tabular}{|l|ccc|} \hline \diagbox{Time}{Room}{Day} & Mon & Tue & Wed \\ \hline Morning & used & used & \\ Afternoon & & used & used \\ \hline \end{tabular} 效果如下: 空格表示 …

LaTex学习笔记之命令使用

LaTex学习笔记之命令使用 概要vscode跳转写作环境宏包的使用命令的使用常用命令章节层次列表环境字体字号行内和行间公式分式、根式、矩阵表格的使用插图参考文献的插入 概要 本文章是针对已安装好Tex环境&#xff0c;并已安装好编辑器。这里使用TeXstudio进行编辑。 vscode跳…

LaTeX心得分享之插入表格(下)

接上篇~今天我们主要说&#xff1a; 单元格的合并 单元格的拆分 一、单元格的合并 1、\multicolumn命令 。通常用于合并一行种几个不同列的单元格&#xff0c;适合排版跨列的标头。其基本语法格式&#xff1a; \multicolumn{项数}{新列格式}{名称} 项数&#xff1a;表格的…