为什么是视频传输用YUV格式,而放弃RGB格式?

在这里插入图片描述

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun
🎈 本文专栏:本文收录于《音视频》系列专栏,相信一份耕耘一份收获,我会分享音视频相关学习内容,不说废话,祝大家都offer拿到手软
🤓 欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。
🖥随时欢迎您跟我沟通,一起交流,一起成长、进步!

YUV格式简介

YUV格式是一种将亮度和色度信息分离的像素表示方法,它在图像和视频处理中扮演着重要角色。在YUV格式中,“Y”代表亮度,也就是我们通常所说的灰度值,它决定了图像的明暗程度。而“U”和“V”则代表色度,它们负责描述图像的色彩和饱和度,帮助我们区分不同的颜色。

YCbCr是YUV的一个变种,它在国际电信联盟(ITU)制定的BT.601标准中被定义。YCbCr中的“Y”代表亮度分量,与YUV中的Y相同,而“Cb”和“Cr”则分别代表蓝色和红色色度分量。尽管YCbCr与YUV在概念上相似,但它们在数值表示上有所不同,YCbCr是YUV经过一定的缩放和偏移得到的。

YCbCr格式因其广泛的应用而广为人知,特别是在JPEG和MPEG等图像和视频编码标准中。它支持多种采样格式,包括4:4:4、4:2:2、4:1:1和4:2:0,这些格式在不同的应用场景下提供了不同的图像质量和压缩效率的平衡。

它是基于人眼对亮度变化比色度变化更敏感的原理设计的。YUV格式广泛应用于视频压缩和传输,因为它能够有效地减少数据量,同时保持图像质量。

什么是YUV格式?

YUV格式是一种颜色空间,它将颜色信息分解为三个独立的通道:Y通道代表亮度信息,U通道和V通道则代表颜色信息。这种分离允许对亮度和颜色进行独立处理,从而在压缩时可以更有效地利用人眼对亮度变化的敏感性。

YUV格式的诞生由来

在这里插入图片描述这是一副RGB三通道组成的图像,那么我们存储它可能就是480x720x3(长,宽,RGB值),这样存储是没问题的,问题是现在的数据量和存储成本,导致我们需要去考虑如何压缩视频呢?

YUV格式的诞生源于彩色电视技术的发展和对兼容性的需求。在彩色电视出现之前,黑白电视只能显示灰度图像。随着技术的进步,彩色电视开始普及,但如何让彩色电视与黑白电视共存,同时接收相同的电视信号,成为了一个挑战。

YUV格式的出现正是为了解决这一问题。它将图像信息分为亮度(Y)和色度(U和V)两个部分。亮度信息(Y)可以独立于色度信息存在,使得黑白电视能够接收到Y信号并显示灰度图像。而色度信息(U和V)则为彩色电视提供了必要的色彩数据。

通过YUV格式,广播电视中心可以仅广播一套信号,这套信号既包含黑白图像所需的亮度信息,也包含彩色图像所需的色度信息。黑白电视在接收到YUV信号时,只解析Y分量,而忽略U和V分量,从而显示黑白图像。彩色电视则能够解析全部的YUV信号,将Y分量与U、V分量结合,从而显示出彩色图像。

YUV格式的这种设计,不仅实现了彩色电视和黑白电视的兼容,还为图像和视频的压缩、存储和传输提供了便利。

在这里插入图片描述同样一幅图,看看YUV格式是如何存储的

其中的Y表示一幅灰度图,如果叠加了UV,就可以组合成一幅彩色画面,但对于黑白电视来说,只要Y就行。整个数字电视信号的传播过程可以用下图表示:
在这里插入图片描述YUV除了可以分离黑白信息和彩色信息满足兼容性这个优势以外,还可以根据需要在采样时进行压缩,进而减少传输带宽,这是它的另一个优势。(具体看后面的内容)

YUV格式的类型

在这里插入图片描述

YUV格式有多种变体,主要区别在于采样方法的不同。以下是一些常见的YUV格式:

  • 4:4:4:每个像素点都有Y、U、V三个分量,提供最高质量的图像,但数据量最大。
    在这里插入图片描述

  • 4:2:2:水平方向上,每两个像素共享U和V分量,适用于广播级视频。
    研究表明,我们对亮度比较敏感,而对色度不怎么敏感, 绝大部分相邻的两个像素,色度信息差异不大,因此可以适当丢弃部分色差数据。具体就是,在水平方向上相邻的两个像素,共享同一个色度分量,即水平方向上亮度分量与色度分量采样比例为2:1, 每两个Y分量共享一组UV分量,如下图所示:
    在这里插入图片描述
    这样的话, 第一和第二个像素点共用一组UV分量,第三和第四个像素点共用了一组UV分量,由于丢弃了部分色度分量,这样就节省了图像空间。相邻2个像素点占用的空间为:(Y+Y+U+V) = 4 byte, 平均一个像素点占用的空间为:4 /2 = 2 byte。

  • 4:2:0:水平和垂直方向上,每四个像素共享U和V分量,常见于DVD视频和网络视频流。

专家们进一步研究表示,每一行的相邻两个像素与下一行同位置的两个像素数据差异不大,可以进一步的丢数据。具体就是,在第一行采集时,只采集Y和其中一种色度分量(U 或者 V),在第二行采集时,仍然采集Y和其中的另一个色度分量。有点拗口,简单的说就是,第一行只采集Y和U,第二行只采集Y和V。这样采集的效果如下:
在这里插入图片描述
那该如何合成一个完整的像素点呢?水平方向上相邻的两个像素点已经无法再合成为一个完整的像素点(因为不是缺少U就是缺少V),

很简单,只要把上下两行的UV分量组合起来就行了。

在这里插入图片描述
就是说,第一行的第一个像素点(YU)可以使用第二行第一个像素点的V,组合成一个完整的YUV; 第一行第二个像素点(Y)可以使用第一行第一个像素点的U和第二行第一个像素点的V, 组合成一个完整的YUV,上下两行相邻的4个像素点共享一组UV分量。

这样的话,相邻4个像素点所占用的空间为(Y+Y+Y+Y+U+V) = 6 byte, 平均每个像素点占用的空间为 6 / 4 = 1.5 byte。可以看到 YUV 4:2:0 采样的图像比YUV444或 RGB 模型图像节省了一半的存储空间,因此它也是比较主流的采样方式。

  • 4:1:1:水平方向上,每四个像素共享U分量,垂直方向上,每两个像素共享V分量,数据量较小,但可能

导致颜色细节丢失。

YUV与RGB的转换

RGB(红绿蓝)是另一种常见的颜色空间,广泛应用于显示器和图像编辑。YUV和RGB之间可以通过特定的转换公式相互转换。转换公式如下:

  • Y = 0.299R + 0.587G + 0.114B
  • U = -0.169R - 0.331G + 0.5B
  • V = 0.5R - 0.419G - 0.081B

反之,从YUV转换回RGB的公式为:

  • R = Y + 1.0 * V
  • G = Y - 0.34414 * U - 0.71414 * V
  • B = Y + 2.0 * U

YUV格式的应用

YUV格式的应用非常广泛,可以将其主要应用分为以下三个部分进行详细阐述:

1. 视频编码与传输

YUV格式在视频编码和传输中的应用是其最显著的特点之一。视频编码标准如MPEG-2、H.264和H.265等,都采用了YUV色彩空间来优化压缩效率。这些标准利用人眼对亮度变化比色度变化更敏感的特性,通过不同的采样率来压缩亮度和色度信息。例如,在4:2:0采样格式中,色度信息的采样率是亮度信息的一半,这样可以在不明显降低视觉质量的情况下减少数据量,从而节省存储空间和带宽。

2. 图像与视频编辑

在图像和视频编辑领域,YUV格式提供了对图像进行更精细调整的可能性。编辑软件可以独立地处理亮度(Y)和色度(U、V)信息,使得编辑者能够分别调整图像的亮度、对比度、饱和度和色调。这种分离处理方式对于创建专业级别的视觉效果至关重要。例如,在调整肤色或特定颜色时,编辑者可以只调整色度分量,而不影响整体的亮度平衡。

3. 广播与数字媒体

YUV格式在广播和数字媒体中的应用也非常重要。数字电视广播采用YUV格式来确保信号的兼容性,使得黑白和彩色电视都能接收到适合自己显示能力的信号。此外,在网络流媒体和视频点播服务中,YUV格式同样发挥着重要作用。流媒体服务提供商通常会使用YUV格式来优化视频的传输质量,通过调整色度的采样率来平衡视频质量与传输带宽的需求。

这三个部分概括了YUV格式在现代数字媒体处理中的核心应用。随着技术的发展和创新,YUV格式的应用领域还在不断扩展,它在图像和视频处理中的重要性也在不断增加。

结论

YUV格式是一种强大的颜色编码系统,它通过分离亮度和颜色信息,为图像和视频的存储、传输和处理提供了高效的方法。了解YUV格式及其与RGB的转换关系,对于从事图像和视频相关工作的专业人员来说至关重要。

希望这篇博客能帮助你更好地理解YUV格式及其在数字媒体领域的应用。如果你对YUV有更深入的问题或想要了解更多相关信息,欢迎在评论区留言讨论。

祝大家学习顺利~
如有任何错误,恳请批评指正~~
以上是我通过各种方式学习的经验和方法,欢迎大家评论区留言讨论呀,如果文章对你们产生了帮助,也欢迎点赞收藏,我会继续努力分享更多干货~


🎈关注我的公众号AI Sun可以获取Chatgpt最新发展报告以及腾讯字节等众多大厂面经。
😎也欢迎大家和我交流,相互学习,提升技术,风里雨里,我在等你~


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统之 — 线程

Linux系统之 — 线程 线程介绍线程使用死锁(Deadlock)竞态条件(Race Condition) 线程使用示例服务器端代码示例服务器端示例拆解1. 引入头文件和宏定义2. 定义全局变量3. 定义线程函数4. 主函数5. 错误处理和资源释放 客户端代码示…

Keil5 ST-LINK setting闪退问题解决

1. 官网下载新版驱动文件 MDK uVision crashes when using ST-Link debugger 2. 解压替换 STLinkUSBDriver6.1.2.0Signed 我的库文件目录: D:\Tool\Keil5\ARM\STLink

一文搞懂 java 线程池:ThreadPoolExecutor 和 FixedThreadPool 原理

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

Linux——shell原理和文件权限

1.shell原理 在我们使用云服务器时,需要通过shell进行使用,而shell则是一种外壳程序。 我们提到过,大部分的指令实际上就是文件,当用户需要执行某种功能时,由于用户不擅长和操作系统直接交互(操作复杂&…

k8s部署单机版mysql8

一、创建命名空间 # cat mysql8-namespace.yaml apiVersion: v1 kind: Namespace metadata:name: mysql8labels:name: mysql8# kubectl apply -f mysql8-namespace.yaml namespace/mysql8 created# kubectl get ns|grep mysql8 mysql8 Active 8s二、创建mysql配…

论文学习——使用基于多项式拟合的预测算法求解动态多目标问题

论文题目:Solving dynamic multi-objective problems using polynomial fitting-based prediction algorithm 使用基于多项式拟合的预测算法求解动态多目标问题(Qingyang Zhang , Xiangyu He,Shengxiang Yang , Yongquan Dong , Hui Song , Shouyong Ji…

配置WLAN 示例

规格 仅AR129CVW、AR129CGVW-L、AR109W、AR109GW-L、AR161W、AR161EW、AR161FGW-L、AR161FW、AR169FVW、AR169JFVW-4B4S、AR169JFVW-2S、AR169EGW-L、AR169EW、AR169FGW-L、AR169W-P-M9、AR1220EVW和AR301W支持WLAN-FAT AP功能。 组网需求 如图1所示,企业使用WLAN…

JDeveloper 12C 官网下载教程

首先、我们要登录Oracle官网 Oracle 甲骨文中国 | 云应用和云平台 登录进去如果不是中文可以点击右上角带有国旗的图标就行更改,选择一个你能看懂的文字。 然后,点击“资源”—点击“开发人员下载” 然后,点击“开发工具” 这里有很多工具可…

【设计模式】【行为型模式】【责任链模式】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录…

Python协作运动机器人刚体力学解耦模型

🎯要点 🎯腿式或固定式机器人模型 | 🎯网格、点云和体素网格碰撞检测 | 🎯正反向运动学和动力学 | 🎯机器人刚体力学计算 | 🎯编辑参考系姿势和路径 | 🎯软件接口实体机器人模拟 | &#x1f3a…

奇葩公司又发微博了,网友表示“乐”

多益网络 近日,多益网络官方微博发帖,公然表示对法院仲裁结果不服,认为劳动法有极多问题。 大家不要看微博内容似乎振振有词,极有可能只是多益网络单方面的选择性表达,毕竟多益网络的臭名早就家喻户晓。 况且对前员工直…

车载资料分享中:硬件在环、canoe、UDS诊断、OTA升级、TBOX测试

每日直播时间: 周一到周五:20:00-23:00 周六与周日:9:00-17:00 直播内容:(车厂一比一测试) HIL(硬件在环)测试、UDS功能诊断、UDS自动…

一首歌的时间 写成永远

大家好,我是秋意零。 就在,2024年6月20日。我本科毕业了,之前专科毕业挺有感触,也写了一篇文章进行记录。如今又毕业了,还是写一篇文章记录吧!! 专科毕业总结:大学三年总结&#xf…

使用ElementUI组件库

引入ElementUI组件库 1.安装插件 npm i element-ui -S 2.引入组件库 import ElementUI from element-ui; 3.引入全部样式 import element-ui/lib/theme-chalk/index.css; 4.使用 Vue.use(ElementUI); 5.在官网寻找所需样式 饿了么组件官网 我这里以button为例 6.在组件中使用…

利用深度学习模型进行语音障碍自动评估

语音的产生涉及器官的复杂协调,因此,语音包含了有关身体各个方面的信息,从认知状态和心理状态到呼吸条件。近十年来,研究者致力于发现和利用语音生物标志物——即与特定疾病相关的语音特征,用于诊断。随着人工智能&…

电信NR零流量小区处理

【摘要】随着目前网络建设逐步完善,5G用户的不断发展,针对零流量小区的分析及处理存在着必要性,零流量小区的出现既是用户分布及行为的直观体现,也是发展用户的一个指引,同时也能发现设备的一些故障。一个站点的能够带…

飞书API 2-3:如何使用 API 创建数据表,解放人工?

一、引入 作为飞书多维表的深度使用者,经常需要将一些数据库的数据同步到多维表上,在数据写入之前,一般需要新建数据表和字段。当通过网页端界面新建字段时,如果字段少,还能接受手动一个个创建,不过一旦字…

C++字体库开发

建议根据字体需求,多个组合使用。高度定制可基于freeTypeharfbuzz基础库完成。 GitHub - GNOME/pango: Read-only mirror of https://gitlab.gnome.org/GNOME/pango GitHub - googlefonts/fontview: Demo app that displays fonts with a free/libre/open-source …

更好的方法_交叉观察器API

交叉观察器(Intersection Observer)API 是一个强大的工具,可以用来检测元素是否进入视口或从视口移出。我们可以利用这个 API 来实现粘贴式导航(也称为粘性导航),即在用户滚动页面时,导航栏会在…

方法的用法

一.简介 目前为止我给出的所有的案例都是将代码放在main方法中,就会产生一些问题: 代码冗长,不利于维护变量过多,想不出那么多的变量名没有重用性 那么该如何解决呢? 我们可以编写功能性的代码块,来被ma…