音视频开发—视频相关概念:YUV与RGB

文章目录

    • YUV相关概念
      • 组成部分
      • 优点
      • 常见的 YUV 格式
      • 数据量的计算
      • YUV4:2:0 存储格式
        • 平面模式(planar):
        • 打包模式(packed)
    • RGB 和 YUV 的定义
      • 关系与转换
        • RGB 到 YUV 的转换
        • YUV 到 RGB 的转换
      • 使用场景
      • 优缺点

YUV相关概念

YUV 是一种颜色编码格式,用于视频和图像处理。它与 RGB(红、绿、蓝)颜色模型不同,将颜色信息分为亮度(Y)和色度(U 和 V)分量。YUV 格式主要用于模拟视频和数字视频系统。

组成部分

  1. Y(亮度)

    • 代表图像的明暗信息。
    • 不包含颜色信息,仅表示图像的亮度。
  2. U 和 V(色度)

    • U(蓝色色度)和 V(红色色度)代表颜色信息。
    • 这些分量描述颜色的饱和度和色调。

优点

  • 带宽效率:通过分离亮度和色度分量,可以在压缩视频时减少带宽需求,因为人眼对亮度的变化比对色度的变化更敏感。
  • 兼容性:YUV 格式与黑白电视兼容,因为黑白电视只读取亮度信息。

常见的 YUV 格式

  • YUV 4:4:4:每个像素都有完整的亮度和色度信息。

    在这里插入图片描述

  • YUV 4:2:2:色度分量的水平分辨率是亮度分量的一半。
    在这里插入图片描述

  • YUV 4:2:0:色度分量的水平和垂直分辨率都是亮度分量的一半。

    4:2:0 表示在一个 2x2 的像素块中,亮度(Y)分量有 4 个样本,而色度(U 和 V)分量各有 1 个样本。这意味着色度信息的水平和垂直分辨率都是亮度分辨率的一半。

    在这里插入图片描述

YUV 格式广泛应用于视频压缩、电视广播和各种视频处理任务中。

RGB 和 YUV 是两种不同的颜色编码方式,各有其特定的应用场景和优缺点。它们之间的关系可以通过颜色空间转换来理解。

数据量的计算

YUV = Y*1.5

在 YUV 4:2:0 采样格式下,YUV 数据量是亮度(Y)数据量的 1.5 倍。这是因为:

  1. 亮度数据:每个像素都有一个 Y 分量。
  2. 色度数据:每 4 个像素共享 1 个 U 分量和 1 个 V 分量(在一个 2x2 像素块中)。

假设一个图像有 N 个像素:

  • 亮度(Y)数据量:N 个样本。
  • 色度(U 和 V)数据量:每个色度分量有 N/4 个样本,因此两个色度分量共计 N/2 个样本。

总的数据量 = Y 数据量 + U 数据量 + V 数据量 = N + N/4 + N/4 = N + N/2 = 1.5N

因此,YUV 数据量是亮度(Y)数据量的 1.5 倍。

YUV = RGB / 2

这个表达式表明,在数据量上,YUV 4:2:0 格式比 RGB 格式节省一半的数据量。这是因为:

  • RGB 格式:每个像素有 3 个分量(R、G、B),总数据量是 3N(N 是像素数)。
  • YUV 4:2:0 格式:总数据量是 1.5N(如上所述)。

将 YUV 数据量与 RGB 数据量比较:YUV = RGB / 2

这意味着 YUV 4:2:0 格式的数据量是 RGB 格式数据量的一半。

这两个表达式说明了 YUV 4:2:0 在视频压缩中的优势,即通过减少色度数据量,显著降低了总数据量,而不显著影响视觉质量。

YUV4:2:0 存储格式

在这里插入图片描述

是安装分层存储的,先按照Y分量存储,最后读取UV相关的,兼容性比较好,黑白电视直接读取,前四行即可。YUV的关系为 4个Y 对应一个U 一个V

平面模式(planar):
  1. Y 平面:首先存储所有像素的亮度数据(Y 分量)。
  2. U 平面:接着存储所有像素的色度数据(U 分量),每个色度值对应 2x2 像素块。
  3. V 平面:最后存储所有像素的色度数据(V 分量),每个色度值对应 2x2 像素块。

假设图像尺寸为 W×H,则:

  • Y 平面大小:W×H
  • U 平面大小:W/2×H/2
  • V 平面大小:W/2×H/2

总数据量为:W×H + (W×H)/4 + (W×H)/4 = W×H × 1.5

I420 : YYYYYYYY UU VV ------------>YUV420P

YV12: YYYYYYYY VV UU------------>YUV420P

打包模式(packed)

在某些情况下,色度分量 U 和 V 可以交织存储,以减少存取操作的复杂性。

在这种模式下,U 和 V 的存储大小与平面模式相同,但存储顺序不同。

常见的格式有NV12 和NV21

NV12: YYYYYYYY UVUV ---------->YUV420SP

NV21: YYYYYYYY VUVU ---------->YUV420SP

RGB 和 YUV 的定义

  • RGB(红、绿、蓝):

    • 一种加色法颜色模型,通过混合红色、绿色和蓝色光来创建各种颜色。
    • 常用于显示器、相机和其他捕获设备。
  • YUV(亮度、色度 - U 和 V):

    • 将颜色信息分为亮度(Y)和两个色度分量(U 和 V)。
    • 主要用于视频压缩和传输。

关系与转换

RGB 到 YUV 的转换

RGB 转 YUV 可以通过以下数学公式实现:

[ Y = 0.299R + 0.587G + 0.114B ]
[ U = 0.492 (B - Y) ]
[ V = 0.877 (R - Y) ]

这些公式表示如何从 RGB 值计算 YUV 值。

YUV 到 RGB 的转换

从 YUV 转回 RGB 可以通过以下公式:

[ R = Y + 1.140V ]
[ G = Y - 0.395U - 0.581V ]
[ B = Y + 2.032U ]

使用场景

  • RGB:用于需要精确颜色表示的应用,如计算机图形学、图像编辑和显示设备。
  • YUV:用于视频压缩和传输,因其更有效的带宽利用和与模拟电视的兼容性。

优缺点

  • RGB

    • 优点:直观,易于理解和操作。
    • 缺点:不适合视频压缩,带宽需求较高。
  • YUV

    • 优点:更适合视频压缩,带宽效率高,兼容性好。
    • 缺点:需要转换过程,色彩操作较复杂。

总的来说,RGB 和 YUV 各有优势,具体选择取决于应用需求和具体场景。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux--EXT2文件系统

参考资料: linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图_一个块组中索引节点表和数据块区最多占用字节-CSDN博客 linux环境: Linux version 5.15.146.1-microsoft-standard-WSL2 (root65c757a075e2) (gcc (GCC) 11.2.0, GNU ld…

GPT-4o有点坑

GPT-4o有点坑 0. 前言1. GPT-4o简介2. GPT-4o带来的好处2.1 可以上传图片和文件2.2 更丰富的功能以及插件 3. "坑"的地方3.1 使用时间短3.2 GPT-4o变懒了 4. 总结 0. 前言 原本不想对GPT-4o的内容来进行评论的,但是看了相关的评论一直在说:技…

truncate IDL_UB1$导致数据库open hang---惜分飞

在一次数据库恢复中,发现IDL_UB1$表被truncate,然后数据库在open过程中会hang住,而且不报任何错误,这里通过试验进行重现.对于这类问题,以前有过类似处理测试:truncate IDL_UB1$恢复试验数据库版本 SQL> select * from v$version; BANNER ---------------------…

vue3学习(六)

前言 接上一篇学习笔记,今天主要是抽空学习了vue的状态管理,这里学习的是vuex,版本4.1。学习还没有学习完,里面有大坑,难怪现在官网出的状态管理用Pinia。 一、vuex状态管理知识点 上面的方式没有写全,还有…

对象转为Map

方案一&#xff0c;Jackson String json objectMapperFace.writeValueAsString(contract);Map<String,Object> map objectMapperFace.readValue(json, Map.class);方案二 &#xff0c; apache BeanUtils Map<String,String> beanMap null;try {beanMap BeanUti…

MyBatis延迟加载缓存分页逆向工程

文章目录 延迟加载概述步骤 缓存一级缓存介绍原理 二级缓存介绍 设置缓存对象策略原理开启步骤属性解释是否使用一级缓存 分页插件使用步骤 逆向工程介绍搭建使用增删修改查 延迟加载 概述 延迟加载本身是依赖于多表查询的 延迟加载中返回值要选择resultMap返回的结果一定是D…

Docker管理工具Portainer忘记admin登录密码

停止Portainer容器 docker stop portainer找到portainer容器挂载信息 docker inspect portainer找到目录挂载信息 重置密码 docker run --rm -v /var/lib/docker/volumes/portainer_data/_data:/data portainer/helper-reset-password生成新的admin密码&#xff0c;使用新密…

分享6个打开就能让人眼前一亮的网站,每次浏览都像发现新大陆~

1、ZLibrary zh.zlibrary-be.se/ ZLibrary是一个广受欢迎的在线图书馆&#xff0c;它提供了一个庞大的电子书和文章资源库&#xff0c;数量超过千万。这个平台覆盖了国内外众多领域的电子书资源&#xff0c;几乎可以满足用户98%以上的搜索需求&#xff0c;无论是学术研究、文…

【介绍下运维,什么是运维?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

大数据开发面试题【Mysql篇】

181、mysql数据库中的引擎 用于数据存储、处理和保护数据的核心服务&#xff0c;不同的数据库引擎有其各自的特点&#xff0c;常见的引擎&#xff1a;InnoDB&#xff0c;Mylsam、Memory、Mrg_Mylsam、Blackhole innodb&#xff1a;是一个事务性存储引擎&#xff0c;提供了对事…

C++的第一道门坎:类与对象(一)

目录 1.面向过程与面向对象 1.1面向过程 1.2面向对象 1.3对比 2.类的引入 2.1类的声明方式 2.2类的成员的两种定义方式 2.2.1单文件定义 2.2.2多文件定义 3.类的访问限定符与封装 3.1访问限定符 3.2封装 4.类对象 4.1类对象的实例化 4.2类对象的存储 4.2.1 存储…

高并发项目-分布式Session解决方案

分布式Session解决方案 1.保存Session&#xff0c;进入商品列表页面 1.保存Session 1.编写工具类 1.MD5Util.java package com.sxs.seckill.utils;import org.apache.commons.codec.digest.DigestUtils;/*** Description: MD5加密工具类** Author sun* Create 2024/5/5 14…

Window系统安装Docker

因为docker只适合在liunx系统上运行&#xff0c;如果在window上安装的话&#xff0c;就需要开启window的虚拟化&#xff0c;打开控制面板&#xff0c;点击程序&#xff0c;在程序和功能中可以看到启动和关闭window功能&#xff0c;点开后&#xff0c;找到Hyper-V&#xff0c;Wi…

【环信IM集成教程】分分钟带你实现视频消息的在线播放和本地播放

有种需求&#xff0c;叫下班前实现 发送视频消息是即时通讯应用中很常见的功能&#xff0c;现在的视频播放场景五花八门&#xff0c;眼瞅快下班&#xff0c;接到产品需求 如何实现这个需求&#xff0c;好准点下班回家抢显卡 &#xff0c;快速提升自己的工作效率&#xff0c;那…

yolov5-ros模型结合zed2相机部署在 Ubuntu系统

前言 本篇文章主要讲解yolov5-ros模型结合zed2相机进行实时检测&#xff0c;经改进实现了红绿灯检测&#xff0c;并输出检测类别与置信度&#xff01; 目录 一、环境配置二、zed2驱动安装三、yolov5-ros功能包配置四、运行官方权重文件四、运行自己权重文件 一、环境配置 1、…

vue2转vue3初步下载pnpm遇到的问题 pnpm : 无法加载文件 D:\nodejs\pnpm.ps1

安装pnpm npm install -g pnpm pnpm -v 提示&#xff1a; 解决&#xff1a;nvm install 18.18.0 下载最稳定版本的nodejs nvm use 18.18.0 然后注意重新下载删除pnpm npm uninstall -g pnpm npm install -g pnpmlatest 在vscode使用pnpm报错 解决&#xff1a;管理员运行Windo…

博士毕业论文/CTEX/LATEX

LATEX环境安装 CTEX 安装 &#xff08;垃圾&#xff0c;不要装&#xff09; 运行 clean.batcomp.bat 缺少字体 Couldn’t find Adobe Heiti S.cfg’ miktex-maketfm: No creation rule for font “Adobe Heiti Std”.解决方法&#xff1a;其实就是下载这四个字体之后&…

深度学习-语言模型

深度学习-语言模型 统计语言模型神经网络语言模型语言模型的应用序列模型&#xff08;Sequence Model&#xff09;语言模型&#xff08;Language Model&#xff09;序列模型和语言模型的区别 语言模型&#xff08;Language Model&#xff09;是自然语言处理&#xff08;NLP&…

16:00面试,16:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

32. 【Java教程】集合

在前面的小节中&#xff0c;我们学习了数组&#xff0c;本小节学习的集合同样用于存放一组数据&#xff0c;我们将学习什么是集合、集合的应用场景 &#xff0c;在应用场景部分我们将对比 Java 数组与集合的区别&#xff0c;还将系统介绍 Java 集合的架构&#xff0c;也将结合实…