news 2026/2/3 2:39:06

Linux_7:RV1126_YUV

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux_7:RV1126_YUV

1.YUV

YUV是一种常见的视频像素格式,经常用在视频编解码上面,YUV分别由Y分量和U、V分量(红色投影Cr)组成。Y分量指的是亮度分量,也就是我们经常说的灰阶值,相当于一副灰色的图像。而U分量和V分量表示的是色度分量,它的作用就是用于影像的色彩以及饱和度,常用于指定像素的颜色,U分量图像蓝色部分去掉亮度Y,V分量是图像红色部分去掉亮度Y。换言之如果一副图像只有Y分量,没有UV分量就相当于我们看黑白电视一样,没有颜色,所以现在大部分彩色电视都引用了YUV像素格式。

2.YUV的优势

YUV和RGB是目前最流行的两套颜色格式,但是在我们音视频编解码和网络传输的时候基本上都会用YUV格式,而非RGB格式。这是由于YUV在网络传输的时候只需要占用很少的带宽进行传输,这能够大大节约存储空间、并且提高传输效率。比方说,使用YUV420P格式进行采样能够比RGB节约超过1/2的存储空间。

3.YUV采样格式

现在主流的YUV采样方式一般分三种分别是:YUV444、YUV422、YUV420。我们来看看这三种采样格式的区别:

1. YUV444

YUV444采样,相当于Y、U、V三个分量采用相同的采样比例进行采样。所以用YUV444采样生成的图像,YUV三个分量的信息是完整的,都是8bit,也就是一个字节。这里的YUV444顾名思义就是4个Y分量、4个U分量、4个V分量。Y分量大小:w * h;U分量大小:w * h;V分量大小:w * h。

所以,我们用YUV444格式去采样一个1920 * 1080的图像的时候,得到的大小等于:(1920 * 1080 * 8 + 1920 * 1080 * 8 + 1920 * 1080 * 8)/8/1024/1024 ~= 5.94M从计算公式可以看出,YUV444每一帧图像大小和RGB差不多,所以在真正开发中很少会用到。

2. YUV422

YUV422采样,相当于U、V分量是以Y分量采样的一半进行采样,Y分量和UV分量按照2:1的比例进行采样(也可以理解为两个Y分量对应一个UV分量)。就比方说,若一个水平方向有8个像素点,那么采样了8个Y分量,那么UV分量只有4个。这里采样用的是4个Y分量、2个U分量、2个V分量进行采样。Y分量大小:w * h;U分量:w * h /2;V分量:w * h /2。

所以,用YUV422采样的大小是:(1920 * 1080 * 8 + (1920 * 1080)/2 * 8 + (1920 * 1080)/2 * 8)/8/1024/1024 ~= 3.96M

3. YUV420

YUV420采样,相当于每一行扫描的时候只扫描一种色度分量(U分量或者V分量),和Y分量按照2:1的方式进行采样(也可以理解为四个Y分量对应一个UV分量)。就比方说,在第一行扫描的时候,YV分量按照2:1的方式进行采样,那么YU分量也是用2:1的方式采样,所以对于每个色度分量来说,它的水平方向和垂直方向的采样比都是2:1。这里采用的是4个Y分量、2个U分量、0个V分量采集,而下一行的则是用4个Y分量、0个U分量、2个V分量采样。所以,Y分量大小:w * h;U分量:w * h /4; V分量:w * h/4。

所以用YUV420采集一个1920 * 1080的图像大小:(1920 * 1080 * 8 + (1920 * 1080)/4 * 8 + (1920 * 1080)/4 * 8)/8/1024/1024 ~=2.97M可以看到用YUV420采样的图像比YUV444和YUV422都节省空间,因此它是目前最主流的采样格式。

4.YUV存储格式

YUV存储一般分为两大类,一种是Planar,另外一种是Packed

Planar

指的是平面格式:它的特点是先连续存储所有的Y像素点,然后再存储所有的U像素点,最后存储所有的V像素点。换言之它分三个数组存储三个分量,比方说data[0]存储所有的Y分量、data[1]存储所有的U分量、data[2]存储所有的V分量。

Packed

指的是打包格式:它的特点是所有像素点的YUV分量都是连续存储,并且所有的数据都存储在data[0]里面。

所以根据采样方式的不同和存储方式的不同,在实际开发中就有了多种YUV格式,主要是针对YUV420和YUV422:

YUV420采样格式

就有这几种打包格式:NV12、NV21、YV12、YU12

1.NV12

这种方式使用的是平面格式来存储数据,换言之就是先存储Y分量、 然后UV交替存储。

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 U0 V0...

第一平面(Plane 0):存储所有的Y分量,一个像素一个Y值。

第二平面(Plane 1):打包存储 所有的U和V分量。UV分量是交错的,每个2x2的Y像素块共享一对UV值。

2.NV21

这种方式使用的是平面格式来存储数据,换言之就是先存储Y分量、 然后VU交替存储。

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 V0 U0...

3.YV12

这种方式使用的是平面格式来存储数据,换言之就是先存储Y分量、 然后存V分量、 最后存U分量。

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 V0 U0...

4.YU12

这种方式使用的是平面格式来存储数据,换言之就是先存储Y分量、 然后存U分量、 最后存V分量。

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 U0 V0...

第一平面(Plane Y):存储所有的Y分量。

第二平面(Plane U/Cb):存储所有的U分量。

第三平面(Plane V/Cr):存储所有的V分量。

YUV422采样格式

就有这几种打包格式:YUYV、UYVY、YUV422P:

1.YUYV

采用的是打包方式存储,它的特点是每个像素点采用Y分量存储,但是每隔一个像素点用UV分量采样。

Y0 U0 Y1 V0 Y2 U2 Y3 V2

2.UYVY

采用的是打包方式存储,它的特点是每个像素点采用U分量再采样Y分量

U0 Y0 V0 Y1 U2 Y2 V2 Y3

3.YUV422P

采用的是平面方式存储,它的特点是先存储所有的Y分量、然后在存储U分量、最后存储V分量Y0

Y0 Y1 Y2 Y3 U0 U1 V0 V1

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/2 22:37:51

解锁免费抽卡神器:原神祈愿模拟器让欧气测试更真实

解锁免费抽卡神器:原神祈愿模拟器让欧气测试更真实 【免费下载链接】Genshin-Impact-Wish-Simulator Best Genshin Impact Wish Simulator Website, no need to download, 100% running on browser! 项目地址: https://gitcode.com/gh_mirrors/gen/Genshin-Impact…

作者头像 李华
网站建设 2026/2/2 20:21:34

NewBie-image-Exp0.1源码修复细节:浮点索引问题解决案例

NewBie-image-Exp0.1源码修复细节:浮点索引问题解决案例 1. 问题背景:为什么一个“小数点”让动漫生成卡在第一步 你可能已经试过直接运行 NewBie-image-Exp0.1 的原始代码,也大概率遇到过类似这样的报错: TypeError: float in…

作者头像 李华
网站建设 2026/1/31 21:09:22

YOLO26镜像部署总出错?常见问题避坑指南步骤详解

YOLO26镜像部署总出错?常见问题避坑指南步骤详解 最新 YOLO26 官方版训练与推理镜像,专为高效落地设计——不是半成品,不是精简版,而是真正开箱即用的生产级环境。很多用户反馈“一启动就报错”“训练跑不起来”“推理没结果”&a…

作者头像 李华
网站建设 2026/2/3 4:09:18

如何用HM3D数据集实现AI导航训练:5个实战价值点

如何用HM3D数据集实现AI导航训练:5个实战价值点 【免费下载链接】habitat-matterport3d-dataset This repository contains code to reproduce experimental results from our HM3D paper in NeurIPS 2021. 项目地址: https://gitcode.com/gh_mirrors/ha/habitat-…

作者头像 李华
网站建设 2026/1/26 19:04:57

高效歌词管理:告别繁琐,一站式解决歌词下载与格式转换难题

高效歌词管理:告别繁琐,一站式解决歌词下载与格式转换难题 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否也曾遇到这样的困扰:…

作者头像 李华