一文搞懂图像RGB和YUV编码及相互转换

news2024/9/29 17:33:32

一文搞懂图像RGB和YUV编码及相互转换

硬件花园 • 来源:硬件花园 • 作者:硬件花园 • 2023-05-17 08:37 • 3987次阅读

1 色彩空间和色彩模型

色彩是人眼对于不同频率的光线的不同感受。色彩既是客观存在的,但又是主观感知的,所以不同人对色彩的感知会存在差异。为了规范色彩的表述,引入了色彩空间一词。 “色彩空间”源于西方的“Color Space”,又称作“色域”,色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间。我们经常用到的色彩空间主要有RGB、CMYK、Lab等。

08b0055e-f44b-11ed-9c1d-dac502259ad0.png

色彩空间

色彩模型是描述使用一组值(通常使用三个、四个值或者颜色成分)表示颜色方法的抽象数学模型。例如三原色光模式(RGB) 和印刷四分色模式(CMYK) 都是色彩模型。

不同的色彩模型的差异和优劣不在本文讨论范围之内。本文主要讨论YUV和RGB两种色彩模型的相关知识。

2 RGB色彩模型

我们知道, “色彩” 是人类大脑对事物的一种主观感觉,为了将这种 “感性” 进行 “理性” 描述,数学家们创建了 RGB 模型的概念:通过三个数的组合(色值)来表述某一种特定的颜色,从而人类可以将这种感性的色彩感受进行理性地表达和传递。

2.1 RGB三原色

08b87086-f44b-11ed-9c1d-dac502259ad0.png

RGB和CMY

rgb(255, 0, 0) 代表纯红色,rgb(0, 255, 0) 代表纯绿色,rgb(0, 0, 255) 代表纯蓝色,而 rgb(255, 255, 0) 代表纯黄色(光学中红色和绿色加法混合会呈现黄色)。

08c0ae86-f44b-11ed-9c1d-dac502259ad0.png

RGB三原色 通过 RGB 色彩模型,我们最多能表示出256x256x256=16777216种不同的色值,也就是我们常说的1600万色。

如果我们创建一个三维坐标系,三个轴的代表字母由X、Y、Z换成 R、G 和 B,即用 Red 代表X轴,Green代表Y轴,Blue代表Z轴,采用光学加法混色的方式构建这个立方空间的话,就形成了一个基于RGB模型的色彩空间了。

08c83408-f44b-11ed-9c1d-dac502259ad0.png

RGB三原色立体空间

我们知道通过 rgb(x, y, z)这种方式构建的每一个颜色点,都对应于这个立方体中的某一个点,也就是说每一种颜色都被包含在我们的色彩空间之内。

2.2RGB颜色模型存在的问题

因为在自然环境下获取的图像容易受自然光照、遮挡和阴影等情况的影响,即对亮度比较敏感,而RGB 颜色空间的三个分量都与亮度密切相关,即只要亮度改变,三个分量都会随之相应地改变。

另外,RGB 颜色空间是一种均匀性较差的颜色空间,人眼对于这三种颜色分量的敏感程度是不一样的,在单色中,人眼对红色最不敏感,蓝色最敏感,如果颜色的相似性直接用欧氏距离来度量,其结果与人眼视觉会有较大的偏差。对于某一种颜色,我们很难推测出较为精确的三个分量数值来表示。

而且,在视频领域如果使用RGB存储的话,视频数据会非常大。

比如有一个1080p(1920*1080)分辨率、帧率为30帧的视频,如果使用RGB进行存储的话,仅仅一分钟的视频就能达到 (1920*1080*8*30*60)bit(约等于27G)。这明显是不现实的,所以我们需要对视频数据进行压缩。

基于以上两点,所以我们需要一种数据相关性没那么强的颜色编码系统或色彩空间,而YUV正好就是这样,从下面的介绍中我们就会明白。YUV能够方便地编码和传输,并且减少带宽占用和信息出错。

3 YUV色彩模型

我们先回到人类刚拥有彩色电视的时候,在

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

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

相关文章

[论文阅读]PV-RCNN++

PV-RCNN PV-RCNN: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection 论文网址:PV-RCNN 论文代码:PV-RCNN 简读论文 这篇论文提出了两个用于3D物体检测的新框架PV-RCNN和PV-RCNN,主要的贡献如下: 提出P…

有电闭锁继电器 YDB-100 100V 辅助电源DC110V JOSEF约瑟 板后安装

YDB-100有电闭锁继电器 1 应用 本继电器用于发电厂和变电站内,用作高压母线合接地刀闸的闭锁元件,以防止高压母线带电时合接地刀闸。 2 主要性能 2 1采用进口集成电路和元器件构成。具有原理先进、性能稳定、可靠性高、动作值精度高、离散值小、整定范围…

ideal一键部署SpringBoot项目jar包到服务器

一 简介 我们在开发环境部署项目一般通过ideal将项目打包成jar包,然后连接linux服务器,将jar手动上传到服务中,重启服务。 概括的说流程是这样的: 本地打包->上传到服务器->kill掉以前的服务->重新启动jar包服务 每次总是循环这一…

暴力枚举

文章目录 循环枚举统计方形加强版烤鸡三连击升级版 子集枚举选数组合的输出 排列枚举三连击升级版全排列问题火星人 [NOIP2004 普及组] 火星人题目描述输入格式输出格式样例 #1样例输入 #1 循环枚举 统计方形加强版 题目背景 1997年普及组第一题 题目描述 有一个 n m n …

Kubernetes 准入控制

Author:rab 目录 前言一、限制范围二、配置案例2.1 名称空间 CPU 与内存约束2.1.1 CPU 约束2.1.2 内存约束2.1.3 默认 CPU 申请约束2.1.4 默认内存申请约束 2.2 名称空间总容量限额约束 总结 前言 LimitRange 是限制命名空间内可为每个适用的对象类别 (…

基于51单片机的停车场管理系统仿真电路设计

**单片机设计介绍,基于51单片机的停车场管理系统仿真电路设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 停车场管理系统仿真电路设计介绍 停车场管理系统主要用于自动化管理和控制停车场,以提高停车…

Elasticsearch内存分析

文章目录 Elasticsearch JVM内存由哪些部分组成Indexing BufferNode Query CacheShard Request CacheField Data CacheSegments Cache查询 非堆内存内存压力mat分析es的jvm缓存监控 Elasticsearch JVM内存由哪些部分组成 官方建议Elasticsearch设置堆内存为32G,因为…

第三章:人工智能深度学习教程-人工智能与机器学习与深度学习之间的区别

人工智能基本上是通过一组规则(算法)将人类智能融入机器的机制。人工智能是两个词的组合:“人工”是指由人类或非自然物体制造的东西,“智能”是指相应地理解或思考的能力。另一个定义可能是“人工智能基本上是训练机器&#xff0…

Starward(米家游戏启动器)支持米哈游旗下的所有桌面端游戏

Starward应用名的由来 Starward 出自星穹铁道开服前的宣传语———愿此行,终抵群星 (May This Journey Lead Us Starward),虽然这不是一个正确的英文单词,但是很适合拿来用作应用名。 Starward 是一个米家游戏启动器,支持米哈游旗…

web3通过antd 在React dapp中构建订单组件基本结构

上文web3 dapp React项目引入 antd 对 balance 用户token信息组件进行样式改造 中 我们导入 antd组件 算是比较完整的编写了用户资产组件 那么 今天开始 我们就要说订单组件了 这个就会比之前的复杂很多 我们还是先开环境 ganache 终端执行 ganache -d然后 将合约 发布到区块链…

Django+Celery框架自动化定时任务开发

本章介绍使用DjCelery即DjangoCelery框架开发定时任务功能,在Autotestplat平台上实现单一接口自动化测试脚本、业务场景接口自动化测试脚本、App自动化测试脚本、Web自动化测试脚本等任务的定时执行、调度、管理等,从而取代Jenkins上的定时执行脚本和发送…

趋动云云端部署ChatGLM3-6B

趋动云端部署ChatGLM3-6B 文章目录 趋动云端部署ChatGLM3-6B1.项目创建2.模型部署3.总结参考 本部分主要内容:1.熟悉趋动云项目创建流程2.动手部署ChatGLM3-6B模型 1.项目创建 首先是趋动云的项目的创建,其主要以项目为载体,一个项目内可以进…

深度学习连接

全连接批量归一化 目的是:通过归一化,让所有的 x i x_i xi​具有一样的分布,学习率是一个值,每个参数 w i w_i wi​梯度的值大致相当实现是:实际上是在全连接中增加了两个节点 γ \gamma γ, β \beta β

设置区块链节点输出等级为警告级,并把日志存储阈值位100MB并验证;

题目 获取指定区块链节点输出等级为警告级,并设置日志存储阈值位100MB并验证; 操作步骤 1.切换目录 cd nodes/127.0.0.1/node0 2.打开配置文件并修改 vim config.ini warn:警告

拒绝一次性芯片,新技术:无线升级芯片

其便捷性和兼容性拥有4年经验的职场人都上手试用! 就算把产品寄到国外出问题了或需要升级 2.4G射频芯片帮您实现Mcu Ota无线升级产品0.3就能换一次救命的机会,相当于给产品买个保险! 问宇凡微拿了规格书和样品,经过几天的摸索研…

怎么更改文件创建日期?

怎么更改文件创建日期?如今科技发展日新月异,人们对于信息和数据的依赖程度日益加深。在这个高度信息化的时代,文件处理已经成为数字化办公不可或缺的环节。无论是个人还是企业,都需要通过数字化的方式来处理和管理大量的文档、表…

聊聊低代码技术

目录 一、什么是低代码开发? 二、为什么需要低代码开发,具备哪些优势? 三、低代码开发在实际工作中的作用 四、是不是有了低代码,就能不关注“质量”呢? 五、引迈旗下低代码开发平台--JNPF初体验 一、什么是低代码开发…

大厂硬性要求的性能优化,如何做到极致?可从7个方向切入

关于Android开发中的性能优化也是老生常谈的技术了。在许多大厂的招聘条件中就必须要求这项技术;因为Android 开发越来越规范, 国内工程师的素质,以及用户对产品的要求也越来越高。所以这也间接导致我们对研发项目的质量要求到了近乎苛刻的地…

『MySQL快速上手』-③-库的操作

文章目录 1.创建数据库2.创建数据库案例3.字符集和校验规则3.2 校验规则对数据库的影响3.2.1 进行查询3.2.2 进行排序 4.字符集和检验规则的作用5.操纵数据库5.1 查看数据库5.2 显示创建语句5.3 修改数据库5.4 数据库删除 6.备份与恢复6.1 备份6.2 还原6.3 注意事项 7.查看数据…

2023年最热门的五大编程技术趋势

2023年最热门的五大编程技术趋势 摘要:本文将介绍2023年最热门的五大编程技术趋势,包括人工智能、区块链、WebAssembly、5G和边缘计算以及自动化。我们将详细讨论这些趋势的当前状态、未来展望以及如何利用这些技术来提高您的编程技能。 一、前言 随着…