YUV与RGB 以及之间的转换

news2025/1/18 19:06:20

目录

一、RGB

二、YUV

三、YUV类型和存储方式

1、类型

2、存储方式

四、分析YUV 4:2:0

1、YU12(I420,YUV420P)

2、YV12

3、NV12(YUV420SP)

4、NV21(YUV420SP)

5、占用空间大小比较

五、RGB与YUV之间的转换

1、转换标准

2、Color Range

3、计算公式


在视频技术中,通常碰到的两种颜色空间RGB和YUV

一、RGB

        指图像的每一个像素都是有R、G、B三个值。

        摄像头采集的原始图像和显示器显示的图像都是RGB图像

        RGB图像中分量的排序R,G,B,也可能是B、G、R

二、YUV

        在视频领域更多使用YUV

        Y 亮度信息,是图像的总体轮廓;黑白电视机

        UV色彩信息,主要描绘图像的色彩信息。

三、YUV类型和存储方式

1、类型

        YUV 4:4:4   每一个Y对应一组UV

        YUV 4:2:2 每两个Y共用一组UV

        YUV 4:2:0 每四个Y共用一组UV

2、存储方式

        planer:Y U V 连续存储

        Packed:先存储完所有Y,然后U,V连续的交错存储

四、分析YUV 4:2:0

        每上、下、左、右4个像素点共用一个U和一个V。分为以下4种

1、YU12(I420,YUV420P)

这种类型是Planar格式,先存储完Y,再存储U,之后存储V

2、YV12

这种类型是Planar格式,先存储完Y,再存储V,之后存储U

 

3、NV12(YUV420SP)

这种类型是Packed格式,先存储完Y,之后U,V交错存储。

4、NV21(YUV420SP)

这种类型是Packed格式,先存储完Y,之后V,U交错存储。

 

5、占用空间大小比较

4X4像素的YUV420只需要24字节,而RGB需要48字节,存储少了一半。

4X4X3(每个点三个字节R,G,B) = 48

五、RGB与YUV之间的转换

1、转换标准

        BT709(高清) 和BT601标准(标清)

2、Color Range

        一个8bit的RGB,每个分量的范围并不都是 0~255

        1)Full Range

                范围取值 0~255

        2)Limited Range

                范围取值 16~235

3、计算公式

BT601 limited range

YUV->RGB

R = Y - 16 + 1.372 * (V - 128)

G = Y - 16 - 0.337 * (U - 128) - 0.699 * (V - 128)

B = Y - 16 + 1.734 * (U - 128)

RGB->YUV

Y = 0.299 * R + 0.587 * G + 0.114 * B + 16

U = -0.173 * R - 0.339 * G + 0.511 * B + 128

V = 0.511 * B - 0.428 * G - 0.083 * B + 128

BT601 full range

YUV->RGB

R = 1.164 * (Y - 16) + 1.596 * (V - 128)

G = 1.164 * (Y - 16) - 0.392 * (U - 128) - 0.812 * (V - 128)

B = 1.164 * (Y - 16) + 2.016 * (U - 128)

RGB->YUV

Y = 0.257 * R + 0.504 * G + 0.098 * B + 16

U = -0.148 * R - 0.291 * G + 0.439 * B + 128

V = 0.439 * R - 0.368 * G - 0.072 * B + 128


BT709 full range

YUV->RGB

R = 1.1644 * (Y - 16) + 1.7928 * (V - 128)

G = 1.1644 * (Y - 16) - 0.2133 * (U - 128) - 0.533 * (V - 128)

B = 1.1644 * (Y - 16) + 2.1124 * (U - 128)

RGB->YUV

Y = 0.1826 * R + 0.6142 * G + 0.0620 * B + 16

U = -0.1006 * R - 0.3386 * G + 0.4392 * B + 128

V = 0.4392 * B - 0.3989 * G - 0.0403 * B + 128

BT709 limit range

YUV->RGB

R = Y + 1.5748 * (V - 128)

G = Y - 0.1881 * (U - 128) - 0.4681 * (V - 128)

B = Y + 1.8556 * (U - 128)

RGB->YUV

Y = 0.2126 * R + 0.7152 * G + 0.0722 * B

U = -0.1146 * R - 0.3854 * G + 0.500 * B + 128

V = 0.500 * B - 0.4542 * G - 0.0468 * B + 128

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

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

相关文章

【ArcGIS】属性表导出及乱码问题

这玩意其实说难不难,但是乱码有时候还是烦人 直接复制到EXCEL 部分表细节被我删掉了 直接点击全选,然后复制,再到EXCEL里粘贴。我有时候就是这么干的。而且量大概是二十万行左右。 Table to Table 如果你的属性文件大于65533行&#xff…

十一、组合API(1)

本章概要 为什么要引入组合APIsetup() 函数 组合(Composition)API 是在 Vue 3.0 中引入的,它是一组附加的、基于函数的 API ,允许灵活地组合组件逻辑。 组合 API 并没有引入新的概念,更多地是将 Vue 的核心功能&…

项目相互依赖调用解决方法两种方法

Bmodel依赖于Amodel,但是Amodel又需要BModel的信息。原来是在Amodel创建一块内存,在Bmodel中将内存地址赋给这块内存,然后在Amodel去做其他操作。 方法一:采用静态变量static链接:C开发中一个解决方案里,两…

LeetCode 0808. 分汤:好题【感叹号】

【LetMeFly】808.分汤:好题! 力扣题目链接:https://leetcode.cn/problems/soup-servings/ 有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作: 提供 100ml 的 汤A 和 0ml 的 汤B 。提供 75ml 的 汤A 和 2…

Google Earth Engine(GEE)—— 各矿区时序NDVI变化图(包含具体的运行函数)

函数: ee.Filter.eq(name, value) Filter to metadata equal to the given value. Returns the constructed filter. Arguments: name (String): The property name to filter on. value (Object): The value to compare against. Returns: Filter ui.Chart.image.s…

7、Jedis测试

文章目录7、Jedis测试7.1. Jedis所需要的jar包7.2. 连接Redis注意事项7.3. Jedis常用操作7.3.1. 创建动态的工程7.3.2. 创建测试程序7.4. 测试相关数据类型7.4.1. Jedis-API:Key7.4.2. Jedis-API:String7.4.3. Jedis-API:List7.4.4. Jedis-AP…

葡萄糖-聚乙二醇-6-羧甲基荧光素 Glucose-PEG-6-FAM

葡萄糖-聚乙二醇-6-羧甲基荧光素 Glucose-PEG-6-FAM 中文名称:葡萄糖-6-羧甲基荧光素 英文名称:Glucose-6-FAM 别称:6-羧甲基荧光素标记葡萄糖,6-羧甲基荧光素-葡萄糖 PEG接枝修饰葡萄糖 Glucose-PEG-6-FAM 葡萄糖-聚乙二醇…

需求收集方法工具,以及进行需求分析的6大要素

通过本文你将了解:1、需求管理流程包括哪四个步骤;2、如何进行需求收集;3、如何进行需求分析?4、如何进行需求分发;5、如何进行需求验证;6、有哪些辅助软件需求管理的工具系统?一、需求管理包括…

MyBatis核心配置文件

1.environments 注 : environments下面可以配置多个环境 , 需要使用哪个环境default里面的参数就对应哪个Id. 2.properties 配置连接 方法一 :(直接配置参数) 方法二 :(使用properties配置文件) (1)创建一个 properties 文件 , 在里面配置连接 (2)在核心配置文件中配置使用p…

41.朴素贝叶斯Naive Bayes公式推导与理解+求解公园凉鞋问题(借助文氏图)

朴素贝叶斯是基于概率论统计学的分类算法。 贝叶斯理论是指根据一个已发生事件的概率,计算另一个事件的发生概率。 目录 1.相关概念 1.1先验概率 应用举例 1.2条件概率 应用举例 1.3全概率公式 应用举例 1.4后验概率 应用举例 2.课堂笔记 ​ 3.文…

ubuntu16.04+cuda10.0+cudnn7.6+tensorflow_gpu-1.11.0环境安装

为了搭深度学习环境,又装了一遍各种库,在此记录安装版本和流程. ubuntu16.04cuda10.0cudnn7.6tensorflow_gpu-1.11.0环境安装1 安装NVIDIA显卡2 安装CUDA10.03 安装CUDNN4 安装tensorflow_gpu-1.11.01 安装NVIDIA显卡 查看自己的显卡型号: lspci |grep -i nvidianvidia官网:h…

linux安装Zookeeper3.5.7详解

官网下载链接:Apache ZooKeeper 如下图可以下载历史版本 然后找到3.5.7版本,直接下载即可然后将Zookeeper拷贝到一个文件夹下,这里我选择的是/opt/software文件夹 然后将其解压到指定目录下 tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C …

让你全方位了解tftp协议,学tftp协议不再难

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,端口号为69,是一种高效的文件传输方式。 其目标是在UDP之上建立一个类似于FTP的但仅支持文件上传和下载功能的传输协议&a…

【Jmeter基础篇】06:HTTP信息头管理器的使用 | 梯度加压性能测试

一、什么是信息头? 其实就是请求头,它会随着我们的HTTP请求一起发送到服务器。 二、使用场景 需要传输cookie,token或其他某些信息,或是需要伪造请求头的时候。 三、实际案例 比如我在使用Apache Jmeter发送请求的时候&#…

【Hack The Box】linux练习-- Haircut

HTB 学习笔记 【Hack The Box】linux练习-- Haircut 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年9月7日🌴 &#x1f36…

Fiddler收费没得用?这款抓包神器 Github star 过万,一个字:香

关于抓包,那是测试人员必备技能之一了,通常我们会通过一些抓包工具来辅助我们测试、定位bug。 我最早接触并使用的就是 fiddler ,不过目前最新版本已经要开始付费了,以前很老的那版我也不爱用了,这可咋整?…

软件测试投了几十份简历为什么没有面试邀约?

最近有不少人问,测试岗位,为啥投了简历却连一个面试机会都没有?如下图: 投3份简历没有回音,有可能是投的公司规模较大,你自身条件不过关(如学历,年龄不符合要求)。 投30…

网络是怎样连接的--DNS服务器查询原理

文章目录3.1 DNS服务器基本工作3.2 寻找相应的DNS服务器并获取ip地址3.3 通过缓存加快DNS服务器的响应3.1 DNS服务器基本工作 DNS服务器的基本工作就是接收来自客户端的查询消息,然后根据消息的内容返回响应。 其中,来自客户端的查询消息包含以下3种信…

Java 面试题 —— 简单工厂、工厂方法、抽象工厂的区别

Java 面试题 —— 简单工厂、工厂方法、抽象工厂的区别 1、简单工厂模式 ​ 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。 ​ 在简单工厂…

常见仿射变换矩阵

旋转(Rotation) def _get_rotation_matrix(rotate_degrees):radian math.radians(rotate_degrees)rotation_matrix np.array([[np.cos(radian), -np.sin(radian), 0.],[np.sin(radian), np.cos(radian), 0.], [0., 0., 1.]],dtypenp.float32)return r…