当前位置: 首页 > 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…...

为你的项目量身定制,基于快马ai生成openclaw实战集成安装方案

最近在做一个图像处理相关的项目&#xff0c;需要在Ubuntu服务器上集成OpenClaw来处理图像数据&#xff0c;同时还要和OpenCV协同工作。整个过程踩了不少坑&#xff0c;今天就把我的实战经验分享给大家&#xff0c;特别是如何利用InsCode(快马)平台来快速生成定制化的安装方案。…...

AgentCPM-Report开源模型教程:Pixel Epic在科研团队中的协作部署实践

AgentCPM-Report开源模型教程&#xff1a;Pixel Epic在科研团队中的协作部署实践 1. 项目介绍与核心价值 Pixel Epic是一款基于AgentCPM-Report大模型构建的创新型研究报告辅助工具。它将枯燥的科研工作流程转化为充满游戏化体验的交互过程&#xff0c;让团队成员在轻松愉悦的…...

5种认知减负策略:2025年macOS效率工具深度测评与工作流优化指南

5种认知减负策略&#xff1a;2025年macOS效率工具深度测评与工作流优化指南 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 在数字化工作环境中&#xff0c;macOS菜单栏作为系统与用户交互的核心界面…...

Jenkins页面加载慢到怀疑人生?别急着重启,先检查这个Dark Theme插件

Jenkins页面加载缓慢的深度排查&#xff1a;从Dark Theme插件到系统优化 最近在虚拟机环境中使用Jenkins时&#xff0c;突然发现页面加载速度从原先的1秒内变成了10秒以上。这种变化并非渐进式的&#xff0c;而是某天突然出现的。页面功能一切正常&#xff0c;但每次跳转都需要…...

Windows下OpenClaw安装指南:Qwen3-14b_int4_awq模型接入与飞书机器人配置

Windows下OpenClaw安装指南&#xff1a;Qwen3-14b_int4_awq模型接入与飞书机器人配置 1. 为什么选择OpenClaw作为个人自动化助手 去年年底&#xff0c;我开始寻找一款能够真正理解自然语言指令的本地自动化工具。当时市面上大多数RPA工具都需要复杂的流程设计&#xff0c;直到…...

基于单片机的汽车雨刷器装置

文章目录一、摘要二、系统设计总体思路三、系统方案设计四、效果图源码获取一、摘要 下雨天时道路十分模糊&#xff0c;能见度非常低&#xff0c;司机分散注意力去手动打开雨刷器开关会非常危险。据统计&#xff0c;全世界雨天行车的车祸事故有7&#xff05;是因为司机手动打开…...

Vant Weapp组件库无障碍颜色方案实践指南

Vant Weapp组件库无障碍颜色方案实践指南 【免费下载链接】vant-weapp 轻量、可靠的小程序 UI 组件库 项目地址: https://gitcode.com/gh_mirrors/va/vant-weapp 问题引入&#xff1a;被忽视的视觉障碍用户体验痛点 在小程序开发中&#xff0c;颜色设计往往聚焦于视觉美…...

Excel VBA宏实战:一键按多列条件拆分工作表

1. 为什么需要按多列条件拆分工作表&#xff1f; 相信很多处理过Excel数据的朋友都遇到过这样的场景&#xff1a;领导突然丢给你一份包含全校学生成绩的表格&#xff0c;要求你按照"班级学科"的组合条件拆分成多个独立的工作表。手动操作时&#xff0c;你需要反复筛选…...

AB测试、质量监控都离不开它:深入浅出聊聊样本均值的t分布与F检验

AB测试与质量监控的统计基石&#xff1a;t分布与F检验实战指南 当产品经理纠结于哪个按钮颜色能带来更高转化率&#xff0c;当质量工程师需要判断生产线波动是否超出正常范围&#xff0c;背后都隐藏着两个关键统计工具&#xff1a;t分布与F检验。这些理论概念之所以能走出教科书…...

5种手柄映射方案让手游玩家实现主机级操控体验

5种手柄映射方案让手游玩家实现主机级操控体验 【免费下载链接】escrcpy &#x1f4f1; Display and control your Android device graphically with scrcpy. 项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy 手机游戏操控优化一直是困扰玩家的核心痛点&…...