当前位置: 首页 > news >正文

opencv-18 什么是色彩空间?

1.什么是色彩空间类型?

色彩空间类型,也称为颜色空间类型或色彩模型,是一种表示图像中颜色的方式。在计算机图形学和数字图像处理中,有许多种色彩空间类型,每种类型有不同的表达方式和特点。

常见的色彩空间类型包括:

RGB (Red, Green, Blue):
RGB 是最常见和广泛使用的色彩空间类型。它使用红色(R)、绿色(G)和蓝色(B)三个通道来表示颜色。每个通道的取值范围通常是 0 到 255,其中 0 表示最小强度(无颜色),255 表示最大强度(全颜色)。

HSV (Hue, Saturation, Value):
HSV 色彩空间是基于人类视觉感知的方式来表示颜色。它使用色调(Hue)、饱和度(Saturation)和明度(Value)三个分量来表示颜色。色调表示颜色的类型(如红色、绿色、蓝色等),饱和度表示颜色的纯度或鲜艳程度,明度表示颜色的明亮程度。

CMYK (Cyan, Magenta, Yellow, Key/Black):
CMYK 色彩空间主要用于印刷领域。它使用青色(Cyan)、品红(Magenta)、黄色(Yellow)和黑色(Key/Black)四个分量来表示颜色。CMYK 色彩空间适用于描述印刷颜色和色彩叠加的过程。

Lab (CIELAB):
Lab 色彩空间是一种基于人类视觉感知的颜色空间。它使用亮度(L)和两个色度通道(a、b)来表示颜色。L 表示亮度(从黑到白),a 和 b 分别表示颜色在红绿和黄蓝方向上的偏移。

YUV/YCbCr:
YUV 和 YCbCr 色彩空间主要用于数字视频和图像压缩。它们使用亮度分量(Y)和两个色度分量(U、V或Cb、Cr)来表示颜色。Y 表示亮度信息,U 和 V(或Cb 和 Cr)表示颜色的色度信息。

每种色彩空间类型都有其特定的应用场景和优缺点。在图像处理和计算机视觉中,根据不同的需求和算法,选择合适的色彩空间类型可以提高处理效率和结果质量。例如,RGB色彩空间适用于计算机显示和处理,HSV 色彩空间适用于颜色选择和图像分割,Lab 色彩空间适用于色彩感知相关的任务等。

opencv 中比较常用的色彩空间包括 GRAY 色彩空间、XYZ 色彩空间、YCrCb 色彩空间、HSV 色彩空间、HLS 色彩空间、CIELab色彩空间、CIELuv色彩空间、Bayer 色彩空间等,下面将依次介绍

GRAY色彩空间

GRAY(灰度图像)通常指 8 位灰度图,其具有 256 个灰度级,像素值的范围是[0,255]。
当图像由 RGB 色彩空间转换为 GRAY 色彩空间时,其处理方式如下:

Gray = 0.299 · 𝑅 + 0.587 · 𝐺 + 0.114 · 𝐵

上述是标准的转换方式,也是 OpenCV 中使用的转换方式。有时,也可以采用简化形式完
成转换:

Gray = 𝑅 + 𝐺 + 𝐵

当图像由 GRAY 色彩空间转换为 RGB 色彩空间时,最终所有通道的值都将是相同的,其
处理方式如下:

𝑅 = Gray
𝐺 = Gray
𝐵 = Gray

XYZ色彩空间

XYZ 色彩空间是由 CIE(International Commission on Illumination)定义的,是一种更便于计算的色彩空间,它可以与 RGB 色彩空间相互转换。
将 RGB 色彩空间转换为 XYZ 色彩空间,其转换形式为:

在这里插入图片描述
将 XYZ 色彩空间转换为 RGB 色彩空间,其转换形式为:

在这里插入图片描述
YCrCb色彩空间

人眼视觉系统(HVS,Human Visual System)对颜色的敏感度要低于对亮度的敏感度。在
传统的 RGB 色彩空间内,RGB 三原色具有相同的重要性,但是忽略了亮度信息。
在 YCrCb 色彩空间中,Y 代表光源的亮度,色度信息保存在 Cr 和 Cb 中,其中,Cr 表示红色分量信息,Cb 表示蓝色分量信息。
亮度给出了颜色亮或暗的程度信息,该信息可以通过照明中强度成分的加权和来计算。
在RGB 光源中,绿色分量的影响最大,蓝色分量的影响最小。
从 RGB 色彩空间到 YCrCb 色彩空间的转换公式为:

𝑌 = 0.299 · 𝑅 + 0.587 · 𝐺 + 0.114 · B

Cr = (𝑅 − 𝑌) × 0.713 + delta
Cb = (𝐵 − 𝑌) × 0.564 + delta
式中 delta 的值为:
delta = �
从 YCrCb 色彩空间到 RGB 色彩空间的转换公式为:

𝑅 = 𝑌 + 1.403 · (Cr − delta)
𝐺 = 𝑌 − 0.714 · (Cr − delta)0.344 · (Cb − delta)
𝐵 = 𝑌 + 1.773 · (Cb − delta)

式中,delta 的值与上面公式中的 delta 值相同。

HSV色彩空间

RGB 是从硬件的角度提出的颜色模型,在与人眼匹配的过程中可能存在一定的差异,HSV色彩空间是一种面向视觉感知的颜色模型。HSV 色彩空间从心理学和视觉的角度出发,指出人眼的色彩知觉主要包含三要素:色调(Hue,也称为色相)、饱和度(Saturation)、亮度(Value),
色调指光的颜色,饱和度是指色彩的深浅程度,亮度指人眼感受到的光的明暗程度。
** 色调:**色调与混合光谱中的主要光波长相关,例如“赤橙黄绿青蓝紫”分别表示不同的色调。如果从波长的角度考虑,不同波长的光表现为不同的颜色,实际上它们体现的是
色调的差异。
** 饱和度:**指相对纯净度,或一种颜色混合白光的数量。纯谱色是全饱和的,像深红色(红
加白)和淡紫色(紫加白)这样的彩色是欠饱和的,饱和度与所加白光的数量成反比。
** 亮度:**反映的是人眼感受到的光的明暗程度,该指标与物体的反射度有关。对于色彩来
讲,如果在其中掺入的白色越多,则其亮度越高;如果在其中掺入的黑色越多,则其亮
度越低。
在具体实现上,我们将物理空间的颜色分布在圆周上,不同的角度代表不同的颜色。因此,
通过调整色调值就能选取不同的颜色,色调的取值区间为[0, 360]。色调取不同值时,所代表的颜色如表 4-1 所示,两个角度之间的角度对应两个颜色之间的过渡色。

在这里插入图片描述
饱和度为一比例值,范围是[0, 1],具体为所选颜色的纯度值和该颜色最大纯度值之间的比
值。饱和度的值为 0 时,只有灰度。亮度表示色彩的明亮程度,取值范围也是[0, 1]。
在 HSV 色彩模型中,取色变得更加直观。例如,取值“色调=0,饱和度=1,亮度=1”,则
当前色彩为深红色,而且颜色较亮;取值“色调=120,饱和度=0.3,亮度=0.4”,则当前色彩为
浅绿色,而且颜色较暗。
在从 RGB 色彩空间转换到 HSV 色彩空间之前,需要先将 RGB 色彩空间的值转换到[0, 1]
之间,然后再进行处理。具体处理方法为:

在这里插入图片描述
在这里插入图片描述
计算结果可能存在 H<0 的情况,如果出现这种情况,则需要对 H 进行进一步计算,如下。

在这里插入图片描述
由上述公式计算可知:

𝑆 ∈ [0,1]
𝑉 ∈ [0,1]
𝐻 ∈ [0,360]

当然,也可以通过公式完成从 HSV 色彩空间到 RGB 色彩空间的转换。在 OpenCV 的官方
文档中有完整的转换公式,这里不再赘述。
当然,所有这些转换都被封装在 OpenCV 的 cv2.cvtColor()函数内。通常情况下,我们都是直接调用该函数来完成色彩空间转换的,而不用考虑函数的内部实现细节。

HLS色彩空间

HLS 色彩空间包含的三要素是色调 H(Hue)、光亮度/明度 L(Lightness)、饱和度 S
(Saturation)。
与 HSV 色彩空间类似,只是 HLS 色彩空间用“光亮度/明度 L(lightness)”替换了“亮度
(Value)”。
** 色调:**表示人眼所能感知的颜色,在 HLS 模型中,所有的颜色分布在一个平面的色调
环上,整个色调环为 360 度的圆心角,不同的角度代表不同的颜色,如表 4-1 所示。
** 光亮度/明度:**用来控制色彩的明暗变化,它的取值范围也是[0, 1]。我们通过光亮度/明
度的大小来衡量有多少光线从物体表面反射出来。光亮度/明度对于眼睛感知颜色很重
要,因为当一个具有色彩的物体处于光线太强或者光线太暗的地方时,眼睛是无法准确
感知物体颜色的。
** 饱和度:**使用[0, 1]的值描述相同色调、相同光亮度/明度下的色彩纯度变化。饱和度的
值越大,表示颜色的纯度越高,颜色越鲜艳;反之,饱和度的值越小,色彩的纯度越低,
颜色越暗沉。通常用该属性表示颜色的深浅,比如深绿色、浅绿色。

CIELab*色彩空间

CIELab*色彩空间是均匀色彩空间模型,它是面向视觉感知的颜色模型。从视觉感知均匀的角度来讲,人所感知到的两种颜色的区别程度,应该与这两种颜色在色彩空间中的距离成正比。在某个色彩空间中,如果人所观察到的两种颜色的区别程度,与这两种颜色在该色彩空
间中对应的点之间的欧式距离成正比,则称该色彩空间为均匀色彩空间。

CIELab色彩空间中的 L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白
a分量表示从红色到绿色的范围,取值范围是[-127,127];
b
分量表示从黄色到蓝色的范围,取值范围是[-127,127]。
在从 RGB 色彩空间转换到 CIELab*色彩空间之前,需要先将 RGB 色彩空间的值转换到[0, 1]之间,然后再进行处理。

由于 CIELab色彩空间是在 CIE 的 XYZ 色彩空间的基础上发展起来的,在具体处理时, 需要先将 RGB 转换为 XYZ
色彩空间,再将其转换到 CIEL
ab色彩空间

具体实现方法为:

在这里插入图片描述

相关文章:

opencv-18 什么是色彩空间?

1.什么是色彩空间类型&#xff1f; 色彩空间类型&#xff0c;也称为颜色空间类型或色彩模型&#xff0c;是一种表示图像中颜色的方式。在计算机图形学和数字图像处理中&#xff0c;有许多种色彩空间类型&#xff0c;每种类型有不同的表达方式和特点。 常见的色彩空间类型包括&a…...

RedHat离线安装工具yum+gcc+pcre+zlib+openssl+openssh

RedHat离线安装工具yumgccpcrezlibopensslopenssh 【一】安装gcc-c&#xff08;解决yum不可用问题&#xff09;&#xff08;1&#xff09;问题描述&#xff08;2&#xff09;替换安装yum&#xff08;3&#xff09;安装gcc 【二】安装pcre【三】安装zlib【四】安装openssl【五】…...

Redis概述及安装、使用和管理

目录 一、NoSQL非关系型数据库 1.NoSQL概述 2.关系型数据库和非关系型数据库区别 &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 &#xff08;3&#xff09;对事务性的支持不同 3.非关系型数据库使用场景 二、Redis概述 1.简介 2…...

【算法第十一天7.25】二叉树前、中、后递归、非递归遍历

链接&#xff1a;力扣94-二叉树中序遍历 链接&#xff1a;力扣144-二叉树前序遍历 链接&#xff1a;力扣145-二叉树后序遍历 树的结构 * public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { thi…...

Linux搭建Promtail + Loki + Grafana 轻量日志监控系统

一、简介 日志监控告警系统&#xff0c;较为主流的是ELK&#xff08;Elasticsearch 、 Logstash和Kibana核心套件构成&#xff09;&#xff0c;虽然优点是功能丰富&#xff0c;允许复杂的操作。但是&#xff0c;这些方案往往规模复杂&#xff0c;资源占用高&#xff0c;操作苦…...

[PyTorch][chapter 44][RNN]

简介 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类以序列&#xff08;sequence&#xff09;数据为输入&#xff0c;在序列的演进方向进行递归&#xff08;recursion&#xff09;且所有节点&#xff08;循环单元&#xff09;按链式连接的递归神经网…...

20230726----重返学习-vue3项目实战-知乎日报第3天-TS-简历

day-121-one-hundred-and-twenty-one-20230726-vue3项目实战-知乎日报第3天-TS-简历 vue3项目实战-知乎日报第3天 封装按钮组件 jsx函数式组件 只能做静态页面&#xff0c;内部没有方法让它自动更新。 封装第三方按钮-非计算属性版 封装第三方按钮-不使用计算属性 src/c…...

TypeScript 在前端开发中的应用实践

TypeScript 在前端开发中的应用实践 TypeScript 已经成为前端开发领域越来越多开发者的首选工具。它是一种静态类型的超集&#xff0c;由 Microsoft 推出&#xff0c;为开发者提供了强大的静态类型检查、面向对象编程和模块化开发的特性&#xff0c;解决了 JavaScript 的动态类…...

商业密码应用安全性评估量化评估规则2023版更新点

《商用密码应用安全性评估量化评估规则》&#xff08;2023版&#xff09;已于2023年7月发布&#xff0c;将在8月1日正式执行。相比较2021版&#xff0c;新版本有多处内容更新&#xff0c;具体包括5处微调和5处较大更新。 微调部分&#xff08;5处&#xff09; 序号2021版本202…...

【软件测试】单元测试工具---Junit详解

1.junit 1.1 junit是什么 JUnit是一个Java语言的单元测试框架。 虽然我们已经学习了selenium测试框架&#xff0c;但是有的时候测试用例很多&#xff0c;我们需要一个测试工具来管理这些测试用例&#xff0c;Junit就是一个很好的管理工具&#xff0c;简单来说Junit是一个针对…...

【算法基础:搜索与图论】3.4 求最短路算法(Dijkstrabellman-fordspfaFloyd)

文章目录 求最短路算法总览Dijkstra朴素 Dijkstra 算法&#xff08;⭐原理讲解&#xff01;⭐重要&#xff01;&#xff09;&#xff08;用于稠密图&#xff09;例题&#xff1a;849. Dijkstra求最短路 I代码1——使用邻接表代码2——使用邻接矩阵 补充&#xff1a;稠密图和稀疏…...

【Matlab】基于卷积神经网络的数据分类预测(Excel可直接替换数据)

【Matlab】基于卷积神经网络的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码6.完整代码7.运行结果1.模型原理 基于卷积神经网络(Convolutional Neural Network,CNN)的数据分类预测是一种常见的深度学习方法,广泛应用于图像识…...

【C++ 重要知识点总结】自定义类型-枚举和联合

复杂类型 除了类之外还有Union、Enum连个特殊的类型。 Union 概念 union即为联合&#xff0c;它是一种特殊的类。通过关键字union进行定义&#xff0c;一个union可以有多个数据成员。 union Token{char cval;int ival;double dval; };用法 互斥赋值。在任意时刻&#xff0c…...

Centos MySql安装,手动安装保姆级教程

1.删除原有的mariadb&#xff0c;不然mysql装不进去 查询MAriaDB命令 rpm -qa|grep mariadb 删除 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 &#xff08;yum -y remove mysql 如需要清除服务器上以前安装过的MySQL可执行此命令&#xff0c;执行前一…...

电脑C盘空间大小调整 --- 扩容(扩大/缩小)--磁盘分区大小调整/移动

概述&#xff1a; 此方法适合C盘右边没有可分配空间&#xff08;空闲空间&#xff09;的情况&#xff0c;D盘有数据不方便删除D盘分区的情况下&#xff0c;可以使用傲梅分区助手软件进行跨分区调整分区大小&#xff0c;不会损坏数据。反之可直接使用系统的磁盘管理工具进行调整…...

centos7设置网桥网卡

安装bridge-utils yum install bridge-utils修改ens33 网卡 TYPEEthernet BOOTPROTOnone DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno NAMEens33 UUID04b97484-25c8-45c7-8c8c-e335e8080e10 DEVICEens33 ONBOOTye…...

TCP模型和工作沟通方式

我们如何与客户沟通&#xff1f;理科生和技术人员可能在沟通技巧方面有所欠缺。 那么我们如何理解和掌握沟通的原则和技巧呢&#xff1f;我发现TCP网络交互模型很好的描述了沟通的原则和要点。下面我们就从TCP来讲沟通的过程。 TCP的客户端就像客户&#xff08;甲方&#xff…...

Langchain 的 ConversationSummaryBufferMemory

Langchain 的 ConversationSummaryBufferMemory ConversationSummaryBufferMemory 在内存中保留最近交互的缓冲区&#xff0c;但不仅仅是完全刷新旧的交互&#xff0c;而是将它们编译成摘要并使用两者。但与之前的实现不同的是&#xff0c;它使用令牌长度而不是交互次数来确定何…...

【Rust 基础篇】Rust 通道实现单个消费者多个生产者模式

导言 在 Rust 中&#xff0c;我们可以使用通道&#xff08;Channel&#xff09;来实现单个消费者多个生产者模式&#xff0c;简称为 MPMC。MPMC 是一种常见的并发模式&#xff0c;适用于多个线程同时向一个通道发送数据&#xff0c;而另一个线程从通道中消费数据的场景。本篇博…...

HTTP协议各版本介绍

HTTP协议是一种用于传输Web页面和其他资源的协议。 下面详细介绍一下HTTP的各个版本&#xff1a; 1.HTTP/0.9 这是最早的HTTP版本&#xff0c;于1991年发布。它非常简单&#xff0c;只能传输HTML格式的文本&#xff0c;并且不支持其他类型的资源、请求头和状态码。 2.HTTP/1…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...