音视频色彩:RGB/YUV

news2024/9/24 23:29:03

目录

1.RGB

 1.1介绍       

1.2分类

1.2.1RGB16

1)RGB565

2)RGB555

1.2.2RGB24

1.2.3RGB222 

2.YUV

2.1介绍

2.2分类

2.2.1 YUV444 

2.2.2 YUV 422 

2.2.3 YUV 420 

 2.3存储格式

2.3.1 YUYV

2.3.2 UYVY

2.3.3 YUV 422P

2.3.4 YUV420P/YUV420SP

2.3.5 YU12 和 YU21

2.3.6 NV12 和 NV21

3. YUV 与 RGB 转换


1.RGB

 1.1介绍       

        RGB是一种颜色标准,指的是R(red)红色、G(green)绿色、B(blue)蓝色这三种颜色,所有的颜色是通过对这三种颜色通道的变化以及相互之间的叠加来得到的,是目前运用最广的颜色系统之一。

1.2分类

1.2.1RGB16

        RGB16就是用16位(2个字节)作为一个存储单元,实现一个RGB像素的存储

1)RGB565

        RGB565就是R占比5位,G占比6位,B占比5位

高字节     ------->     低字节
R R R R R G G G G G G B B B B B
2)RGB555

        RGB555就是最高位不使用,R占比5位、G占比5位、B占比5位

高字节      ------->     低字节
空 R R R R R G G G G G B B B B B

1.2.2RGB24

        与RGB16不同,RGB24将RGN分为3份,每一份占比8位,先排列B,再排列G,最后排列R

高字节              ------->             低字节
B B B B B B B B G G G G G G G G R R R R R R R R 空 空 空 空 空 空 空 空

1.2.3RGB222 

        RGB222是一种8位的RGB格式,各分量占用2bit位,剩下的2bit位不用,这种格式一般用于灰度图。

2.YUV

2.1介绍

1)YUV是指亮度参量和色度参量分开表示的像素格式.

        其中“Y”表示明亮度(Luminance或Luma),也就是灰度值;

        而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

2)YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。
        一般人们所讲的YUV大多是指YCbCr。

2.2分类

叉子表示Y;圆圈表示UV

2.2.1 YUV444 

        YUV 4:4:4 表示 Y、U、V 三分量采样率相同,即每个像素的三分量信息完整,都是 8bit,每个像素占用 3 个字节。

四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样的码流为: Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
映射出的像素点为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]

2.2.2 YUV 422 

        YUV 4:2:2 表示 UV 分量的采样率是 Y 分量的一半

四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样的码流为: Y0 U0 Y1 V1 Y2 U2 Y3 U3
映射出的像素点为:[Y0 U0 V1]、[Y1 U0 V1]、[Y2 U2 V3]、[Y3 U2 V3]

       其中,每采样一个像素点,都会采样其 Y 分量,而 U、V 分量都会间隔采集一个,映射为像素点时,第一个像素点和第二个像素点共用了 U0、V1 分量,以此类推。从而节省了图像空间。

比如一张 1920 * 1280 大小的图片,采用 YUV 4:2:2 采样时的大小为:

(1920 * 1280 * 8 + 1920 * 1280 * 0.5 * 8 * 2 ) / 1024 / 1024 = 4.68M

        可以看出,比 RGB 节省了三分之一的存储空间。

2.2.3 YUV 420 

        YUV 4:2:0 并不意味着不采样 V 分量。它指的是对每条扫描线来说,只有一种色度分量以 2:1 的采样率存储,相邻的扫描行存储不同的色度分量。也就是说,如果第一行是 4:2:0,下一行就是 4:0:2,在下一行就是 4:2:0,以此类推。

图像像素为:
[Y0 U0 V0]、[Y1 U1 V1]、 [Y2 U2 V2]、 [Y3 U3 V3]
[Y5 U5 V5]、[Y6 U6 V6]、 [Y7 U7 V7] 、[Y8 U8 V8]
​
采样的码流为:
Y0 U0 Y1 Y2 U2 Y3 
Y5 V5 Y6 Y7 V7 Y8
​
映射出的像素点为:
[Y0 U0 V5]、[Y1 U0 V5]、[Y2 U2 V7]、[Y3 U2 V7]
[Y5 U0 V5]、[Y6 U0 V5]、[Y7 U2 V7]、[Y8 U2 V7]

        其中,每采样一个像素点,都会采样 Y 分量,而 U、V 分量都会隔行按照 2:1 进行采样。

一张 1920 * 1280 大小的图片,采用 YUV 4:2:0 采样时的大小为:

(1920 * 1280 * 8 + 1920 * 1280 * 0.25 * 8 * 2 ) / 8 / 1024 / 1024 = 3.51M

 2.3存储格式

2.3.1 YUYV

        YUYV 格式属于 YUV422,采用打包格式进行存储,Y 和 UV 分量按照 2:1 比例采样,每个像素都采集 Y 分量,每隔一个像素采集它的 UV 分量。

Y0 U0 Y1 V0 Y2 U2 Y3 V2

2.3.2 UYVY

        UYVY 也是 YUV422 采样的存储格式中的一种,只不过与 YUYV 排列顺序相反。

U0 Y0 V0 Y1 U2 Y2 V2 Y3

2.3.3 YUV 422P

        YUV422P 属于 YUV422 的一种,它是一种 planer 模式,即 Y、U、V 分别存储。

2.3.4 YUV420P/YUV420SP

        YUV420P 是基于 planar 平面模式进行存储,先存储所有的 Y 分量,然后存储所有的 U 分量或者 V 分量。

        同样,YUV420SP 也是基于 planar 平面模式存储,与 YUV420P 的区别在于它的 U、V 分量是按照 UV 或者 VU 交替顺序进行存储。

2.3.5 YU12 和 YU21

        YU12 和 YV12 格式都属于 YUV 420P 类型,即先存储 Y 分量,再存储 U、V 分量,区别在于:YU12 是先 Y 再 U 后 V,而 YV12 是先 Y 再 V 后 U 。

2.3.6 NV12 和 NV21

        NV12 和 NV21 格式都属于 YUV420SP 类型。它也是先存储了 Y 分量,但接下来并不是再存储所有的 U 或者 V 分量,而是把 UV 分量交替连续存储。

        NV12 是 IOS 中有的模式,它的存储顺序是先存 Y 分量,再 UV 进行交替存储。

        NV21 是 安卓 中有的模式,它的存储顺序是先存 Y 分量,在 VU 交替存储。

3. YUV 与 RGB 转换

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

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

相关文章

Java学习15-- 面向对象学习3. 对象的创建分析【★】

(本章看不懂多读几遍,弄懂后再往下章看) 面向对象学习3. 对象的创建分析 Java Memory Structure: 如上图所示: 主要分为Stack和Heap Memory 其中Stack主要放method包括main 程序从main开始所以main最先进入Stack,等…

e5 服务器具备哪些性能特点?

随着云计算和大数据技术的不断发展,服务器作为数据中心的核心设备,其性能特点也日益受到关注。其中,E5服务器作为当前主流的服务器类型之一,具备许多优秀的性能特点。本文将详细介绍E5服务器的性能特点,帮助读者更好地…

深度学习的新进展:解析技术演进与应用前景

深度学习的新进展:解析技术演进与应用前景 深度学习,作为人工智能领域的一颗璀璨明珠,一直以来都在不断刷新我们对技术和未来的认知。随着时间的推移,深度学习不断迎来新的进展,这不仅推动了技术的演进,也…

Vagrant 虚拟机工具基本操作指南

Vagrant 虚拟机工具基本操作指南 ​#虚拟机 #​ ​#vargant#​ ​#ubuntu#​ ‍ 虚拟机virtualbox ,VMWare及WSL等大家都很了解了,那Vagrant是什么东西? 它是一组命令行工具,可以象Docker管理容器一样管理虚拟机,这样快速创…

Flink Format系列(2)-CSV

Flink的csv格式支持读和写csv格式的数据,只需要指定 format csv,下面以kafka为例。 CREATE TABLE user_behavior (user_id BIGINT,item_id BIGINT,category_id BIGINT,behavior STRING,ts TIMESTAMP(3) ) WITH (connector kafka,topic user_behavior…

NLP_“预训练+微调大模型”模式和Prompt/Instruct模式的异同

文章目录 “预训练微调大模型”的模式以提示/指令模式直接使用大模型“预训练微调大模型”模式和Prompt/Instruct模式的异同小结 “预训练微调大模型”的模式 经过预训练的大模型所习得的语义信息和所蕴含的语言知识,很容易向下游任务迁移。NLP应用人员可以根据自己…

阅读《极客时间 | Kafka核心技术与实战》(一)【Kafka入门】

阅读《极客时间 | Kafka核心技术与实战》 为什么要学习Kafka消息引擎系统ABC一篇文章带你快速搞定Kafka术语我应该选择哪种Kafka?聊聊Kafka的版本号 为什么要学习Kafka 如果你是一名软件开发工程师的话,掌握 Kafka 的第一步就是要根据你掌握的编程语言去…

c++阶梯之类与对象(中)< 续集 >

前文: c阶梯之类与对象(上)-CSDN博客 c阶梯之类与对象(中)-CSDN博客 前言: 在上文中,我们学习了类的六个默认成员函数之构造,析构与拷贝构造函数,接下来我们来看看剩下…

探讨CSDN等级制度:博客等级、原力等级、创作者等级

个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS 🐼本文由…

HarmonyOS 鸿蒙应用开发(九、还是蓝海,如何贡献第三方库)

快来共享第三方库吧,不但可以通过分享自己的成果,可以获得来自全球开发者的技术反馈和建议,提升自身技术能力,还有助于提高个人或团队在开源社区中的知名度和影响力。在流量时代和粉丝经济时代,获得曝光度和流量密码。…

Java学习16-- 面向对象学习45. 面向对象三大特征抽象类和接口

面向对象学习4. 面向对象三大特征 1封装:高内聚(内部细节自己用,外部不能介入),低耦合(保留很少接口给外部使用),信息隐藏(禁止外界直接访问内部数据(private),如需要,可通过get/set接口访问&a…

微信小程序(三十八)滚动容器

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.滚动触底事件 2.下拉刷新事件 源码&#xff1a; index.wxml <view class"Area"> <!-- scroll-y 垂直滚动refresher-enabled 允许刷新bindrefresherrefresh 绑定刷新作用函数bindscrollto…

自然语言处理(NLP)——使用Rasa创建聊天机器人

1 基本概念 1.1 自然语言处理的分类 IR-BOT&#xff1a;检索型问答系统 Task-bot&#xff1a;任务型对话系统 Chitchat-bot:闲聊系统 1.2 任务型对话Task-Bot:task-oriented bot 这张图展示了一个语音对话系统&#xff08;或聊天机器人&#xff09;的基本组成部分和它们之间的…

各款Excel、word在线预览工具对比分析以及onlyoffice预览Excel加载时间长的解决方案

对于onlyoffice插件预览慢的问题分析&#xff1a; 研究了一下onlyoffice&#xff0c;得出以下结论&#xff01; 对于预览慢的问题&#xff0c;原因出在文件类型上&#xff0c;文件类型为低版本xls而非新版xlsx文件&#xff0c;onlyoffice服务器会自动将该文件转换为xlsx文件再…

【大厂AI课学习笔记】1.5 AI技术领域(6)目标检测

目标检测是CV中的重要场景。 在图像中定位感兴趣的目标&#xff0c;准确判断每个目标的类别&#xff0c;并给出每个目标的边界框。 上图是目标检测的典型应用案例。 目标检测的难点是小目标的高精度检测。 目前主要的应用领域是机器人导航、自动驾驶、智能视频监督、工业检测…

Java 排序

Java 排序 1 Collection 排序 Collections类中的: sort方法可以对List对象进行排序,该方法使用自然排序&#xff0c;即根据元素的自然顺序进行排序。如果需要对自定义对象进行排序&#xff0c;需要实现Comparable接口并重写compareTo方法。Collections类还提供了一些静态方法…

提速MySQL:数据库性能加速策略全解析

提速MySQL&#xff1a;数据库性能加速策略全解析 引言理解MySQL性能指标监控和评估性能指标索引优化技巧索引优化实战案例 查询优化实战查询优化案例分析 存储引擎优化InnoDB vs MyISAM选择和优化存储引擎存储引擎优化实例 配置调整与系统优化配置调整系统优化优化实例 实战案例…

NAT——网络地址转换、NAPT

网络地址转换 NAT (Network Address Translation) 1994 年提出。 需要在专用网连接到互联网的路由器上安装 NAT 软件。 装有 NAT 软件的路由器叫做 NAT路由器&#xff0c;它至少有一个有效的外部全球 IP 地址。 所有使用本地地址的主机在和外界通信时&#xff0c;都要在 NA…

【python绘图】爱心、樱花树、饼图、折线图、雷达图

一、爱心 import turtledef curvemove():for i in range(200):turtle.speed(0)turtle.right(1) # 光标向右偏1度turtle.forward(1)# 前进1pxturtle.penup() turtle.goto(0, -70) turtle.pendown()turtle.color(red) turtle.begin_fill() turtle.left(140) turtle.forward(111…

计算机网络-无线通信技术与原理

一般我们网络工程师接触比较多的是交换机、路由器&#xff0c;很少涉及到WiFi和无线设置&#xff0c;但是呢在实际工作中一般企业也是有这些需求的&#xff0c;这就需要我们对于无线的一些基本配置也要有独立部署能力&#xff0c;今天来简单了解一下。 一、无线网络基础 1.1 无…