OpenCV 4基础篇| 色彩空间类型转换

目录

  • 1. 色彩空间基础
  • 2. 色彩空间类型
    • 2.1 GRAY 色彩空间
    • 2.2 BGR 色彩空间
    • 2.3 CMY(K) 色彩空间
    • 2.4 XYZ 色彩空间
    • 2.5 HSV 色彩空间
    • 2.6 HLS 色彩空间
    • 2.7 CIEL*a*b* 色彩空间
    • 2.8 CIEL*u*v* 色彩空间
    • 2.9 YCrCb 色彩空间
  • 3. 类型转换函数
    • 3.1 cv2.cvtColor
    • 3.2 cv2.inRange

1. 色彩空间基础

  • RGB 图像是一种比较常见的色彩空间类型,除此之外,比较常见的还有以下类型:GRAY 色彩空间(即灰度图像)XYZ 色彩空间YCrCb 色彩空间HSV 色彩空间HLS 色彩空间CIELab 色彩空间CIELuv 色彩空间等,这些不同的色彩空间,是根据不同角度进行定义的,比如从光学角度出发,可以将颜色解析为主波长、纯度、明度等;从心理学和视觉角度出发,可以将颜色解析为色调、饱和度、亮度等;从神经学来说,自然界中常见的各种光都可以通过三基色按照一定的比例混合构成。

  • 色彩空间也称为颜色空间、色彩模型、彩色模型、彩色空间、颜色模型、颜色系统等。色彩空间转换指的是图像从一个色彩空间转换到另一个色彩空间,比如讲图像从 RGB 色彩空间转换到 XYZ 色彩空间,不同的色彩空间适用不同的场景,所以有时候需要将它们进行互相转换。

2. 色彩空间类型

2.1 GRAY 色彩空间

  • GRAY色彩空间通常指的是灰度图像,这是一种单色图像,其中每个像素的值表示从黑色到白色的不同灰度级别。在GRAY色彩空间中,图像只有一个通道,通常用8位表示,这意味着有256个可能的灰度级别,范围从0(黑色)到255(白色)。在这个范围内,数值越小,像素颜色越接近黑色;数值越大,像素颜色越接近白色。中间的数值则代表不同亮度的灰色。
  • GRAY色彩空间常用于图像处理和分析,因为它简化了颜色信息,使得处理更加高效。例如,在人脸识别、文本识别或图像分割等任务中,灰度图像往往能提供足够的信息,而无需考虑颜色信息。此外,将彩色图像转换为灰度图像还可以减少计算量,加快处理速度。
  • 在OpenCV中,可以使用cv2.cvtColor()函数将彩色图像转换为灰度图像。转换时,OpenCV会应用一定的算法(如加权平均法)来计算每个像素的灰度值。转换后的灰度图像将只包含一个通道的数据,可以显著降低图像的数据量和处理复杂度。
  • 也可以自行采用计算公式:Y=0.2126R+0.7152G+0.0722*B,RGB分别为彩色图像的三通阀哦。
    1

2.2 BGR 色彩空间

  • BGR代表蓝(Blue)、绿(Green)和红(Red)三个颜色通道,这三个通道的组合可以表示出广泛的颜色范围。在BGR色彩空间中,每个颜色通道都使用8位(bit)来表示,因此其值的范围是从0到255。
  • BGR色彩空间常用于图像处理和计算机视觉库,在OpenCV中,读取的图像默认就是以BGR格式存储的。这是因为许多图像显示设备(如电视和计算机显示器)在显示图像时也是使用BGR顺序。
  • 与RGB色彩空间相比,BGR色彩空间只是颜色通道的顺序不同,RGB是红、绿、蓝的顺序,而BGR是蓝、绿、红的顺序。这种差异主要在于不同的图像处理库和显示设备可能采用不同的颜色通道顺序。

2.3 CMY(K) 色彩空间

  • CMYK色彩空间主要应用于印刷工业。在CMYK色彩空间中,颜色是通过青(Cyan)、品红(Magenta)、黄(Yellow)和黑(Key/Black)四种油墨以不同的网点面积率叠印而成的。这种色彩空间是基于减色混色原理的,与RGB等基于增色混色原理的色彩空间不同。
  • 在CMYK色彩空间中,青色、品红色和黄色是三种基本颜色,它们通过不同的组合可以产生出丰富的色彩。然而,由于实际印刷过程中油墨的特性、纸张的吸收性等因素,这三种颜色并不能完全混合产生黑色。因此,为了更准确地再现黑色,引入了黑色油墨(K)。
  • CMYK色彩空间的一个重要特点是它具有多值性,即对于同一种具有相同绝对色度的颜色,在相同的印刷过程前提下,可以用不同的CMYK数字组合来表示和印刷出来。这是因为在实际印刷过程中,油墨的网点面积率、油墨的颜色浓度等因素都会对最终的颜色产生影响。
  • 此外,CMYK色彩空间是与设备或印刷过程相关的表色空间,这意味着不同的印刷设备、不同的印刷工艺、不同的纸张等因素都可能导致相同的CMYK数字组合产生不同的颜色效果。因此,在实际应用中,需要根据具体的印刷条件和要求来选择合适的CMYK数字组合。
    1

2.4 XYZ 色彩空间

  • XYZ色彩空间是由国际照明委员会(CIE)制定的一种色彩空间标准,也是最先采用数学方式来定义的色彩空间之一。XYZ色彩空间中的三个分量X、Y、Z分别代表不同颜色刺激的光谱三刺激值,它们是基于人眼对不同波长光的响应曲线进行加权计算得出的。

  • 在XYZ色彩空间中,Y分量代表亮度,而X和Z分量则与色度有关。通过调整X、Y、Z三个分量的值,可以精确地定义和表示各种颜色。与RGB色彩空间相比,XYZ色彩空间具有更高的精度和更广泛的色域,因为它不是基于特定的显示设备或染料,而是基于人眼的视觉特性。

  • XYZ色彩空间通常用于颜色测量、颜色管理和颜色再现等领域。例如,在颜色测量中,可以使用XYZ色彩空间来测量物体表面的反射光谱,并计算出其对应的XYZ值。在颜色管理中,XYZ色彩空间可以作为不同色彩空间之间的桥梁,将其他色彩空间中的颜色转换为XYZ色彩空间中的颜色,以实现跨设备、跨媒体的颜色一致性。
    在这里插入图片描述

2.5 HSV 色彩空间

  • 与RGB色彩空间相比,HSV色彩空间更接近于人类对颜色的感知方式,因此更适合用于颜色分析和处理。
  • 在HSV色彩空间中,颜色由三个分量表示:色调(Hue)、饱和度(Saturation)和亮度(Value)。色调H表示颜色的基本属性,是一个角度度量,范围通常为0°-360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。饱和度S表示颜色的纯度或深浅程度,范围通常为0%~100%,值越大,颜色越饱和。亮度V表示颜色的明亮程度,范围也通常为0%-100%,值越大,颜色越亮。
  • 在HSV色彩空间中,颜色之间的相似性和差异性可以更容易地进行度量和分析。例如,在色调H上相差较小的颜色通常被认为是相似的颜色,而在饱和度S或亮度V上相差较大的颜色则可能被认为是不同的颜色。这种特性使得HSV色彩空间在颜色分割、颜色跟踪和颜色识别等应用中具有优势。
  • 此外,HSV色彩空间还可以通过调整饱和度S和亮度V来实现对颜色的调整和修改。例如,增加饱和度S可以使颜色更加鲜艳,而增加亮度V则可以使颜色更加明亮。这种灵活性使得HSV色彩空间在图像处理中得到了广泛应用。
    5
  • 取值详情如下:
    在这里插入图片描述
  • 颜色库:
    在这里插入图片描述

在这里插入图片描述

2.6 HLS 色彩空间

  • HLS色彩空间也是一种描述颜色的方法,它由色调(Hue)、光亮度(Lightness)和饱和度(Saturation)三个分量组成。HLS色彩空间与HSV色彩空间有些类似,但在亮度的定义上有所不同。在HLS色彩空间中,亮度L是一个衡量从物体表面反射出来的光线的数量,它的取值范围通常是0到1,其中0表示黑色,1表示白色。
  • 色调H在HLS色彩空间中的含义与HSV模型中的色调相同,它描述了一个纯色彩的基本属性,比如红色、蓝色等。色调的取值范围也是0到360度。
  • 饱和度S在HLS色彩空间中表示纯色彩所添加的白光的程度,也就是色彩的纯度。当饱和度降低时,颜色会变得更加灰色。当饱和度值为零时,颜色将变为灰度值。
  • HLS色彩空间在艺术家和图像处理中也被广泛使用。与HSV色彩空间相比,HLS色彩空间更强调光亮度而不是颜色的强度或明度。这意味着在HLS色彩空间中,即使饱和度很高,如果光亮度很低,颜色也会显得比较暗。

2.7 CIELab* 色彩空间

  • CIELab色彩空间是一种均匀色彩空间,也是一种面向视觉感知的颜色模型。在这个色彩空间中,颜色的表示方式与人类视觉系统对颜色的感知方式更加一致。CIELab色彩空间中的三个分量分别为L*、a和b:
    • L*分量表示像素的亮度,取值范围在[0, 100]之间,表示从纯黑(0)到纯白(100)。这个分量与人类对亮度的感知是线性相关的。
    • a*分量表示从红色到绿色的范围,取值范围是[-127, 127]。正值表示红色,负值表示绿色。这个分量与人类对红色和绿色的感知是线性相关的。
    • b*分量表示从黄色到蓝色的范围,取值范围也是[-127, 127]。正值表示黄色,负值表示蓝色。这个分量与人类对黄色和蓝色的感知是线性相关的。
  • 由于CIELab色彩空间是均匀色彩空间,这意味着在色彩空间中的两个颜色之间的欧氏距离与它们在视觉上的感知差异是成正比的。这个特性使得CIELab色彩空间在颜色差异测量、颜色匹配和颜色校正等应用中非常有用。
  • 此外,CIELab色彩空间是从CIE的XYZ色彩空间发展而来的。在处理颜色时,通常需要先将颜色从RGB色彩空间转换到XYZ色彩空间,然后再转换到CIELab色彩空间。这种转换通常基于一定的数学公式或算法:
    在这里插入图片描述

2.8 CIELuv* 色彩空间

  • CIELuv色彩空间,也称为LUV色彩空间,是另一种国际照明委员会(CIE)推荐的颜色空间。与CIELab色彩空间类似,它也是均匀色彩空间,并且面向视觉感知。CIELuv色彩空间中的三个分量分别为L、u和v。
    • L分量在CIELuv色彩空间中同样表示亮度,取值范围在[0, 100]之间,从纯黑(0)到纯白(100)。这个分量与人类对亮度的感知是线性相关的。
    • u和v分量一起表示色度,取值范围通常是[-100, 100]。u分量表示从黄色到蓝色的范围,正值表示黄色,负值表示蓝色。v分量表示从紫色到绿色的范围,正值表示紫色,负值表示绿色。
  • CIELuv色彩空间与CIELab色彩空间的主要区别在于它们对颜色的表示方式。虽然它们都是均匀色彩空间,并且都试图与人类视觉感知相匹配,但它们在处理某些颜色时可能会有所不同。此外,CIELuv*色彩空间对蓝色的变化较为敏感,而对红色的变化则相对不太敏感。
  • CIELuv色彩空间通常用于颜色测量、颜色管理和颜色校正等领域。与CIELab色彩空间一样,处理颜色时通常需要将颜色从RGB色彩空间转换到XYZ色彩空间,然后再转换到CIELuv*色彩空间。这种转换通常基于一定的数学公式或算法:
    4

2.9 YCrCb 色彩空间

  • YCrCb色彩空间,也称为YUV色彩空间,是一种广泛应用于数字视频和图像处理的颜色编码方法。YCrCb色彩空间将颜色信息分为亮度分量(Y)和色度分量(Cr和Cb),这种分离使得在处理视频信号时可以更有效地利用带宽,并且兼容老式的黑白电视。
  • 在YCrCb色彩空间中,Y分量表示亮度信息,即像素的明暗程度。它的取值范围通常是[0, 255]或[16, 235],具体取决于不同的标准和实现方式。Y分量的值越大,像素越亮;值越小,像素越暗。
  • Cr和Cb分量表示色度信息,即像素的颜色属性。Cr分量通常表示红色与亮度的差异,而Cb分量表示蓝色与亮度的差异。它们的取值范围也通常是[0, 255]或[16, 240]。通过调整Cr和Cb的值,可以改变像素的颜色。
  • YCrCb色彩空间在图像处理中有许多应用,特别是在颜色空间转换、图像压缩和颜色校正等方面。例如,在人脸检测中,将图像从RGB色彩空间转换为YCrCb色彩空间可以简化肤色检测的过程,因为肤色在YCrCb空间中的聚类效果更好。此外,YCrCb色彩空间也常用于JPEG等图像压缩算法中,以减少存储和传输所需的带宽。
  • 需要注意的是,YCrCb色彩空间与RGB色彩空间之间存在转换关系。在将图像从RGB色彩空间转换为YCrCb色彩空间时,通常使用特定的转换公式或矩阵进行计算。这些转换公式或矩阵的具体形式可能因不同的标准和实现方式而有所差异:

在这里插入图片描述

3. 类型转换函数

3.1 cv2.cvtColor

dst = cvtColor(src, code[, dstCn])
  • 作用:实现色彩空间的变换。该函数能够实现多个仓彩空间之间的转换。
  • 参数说明:
    • dst:输出的结果,与原始输入图像的数据类型和深度相同
    • src:输入的图像。可以是 8 位无符号图像、16位无符号图像、单精度浮点数
    • dstCn:目标图像的通道数,默认为 0,自动通过原始输入图像和 code 参数计算得到
    • code:色彩空间转换码,code转换码列表

3.2 cv2.inRange

cv2.inRange(src, lowerb, upperb[, dst])
  • 作用:判断图像内的像素点的像素值是否在指定的范围内。
  • 参数说明:
    • src:输入图像,可以是灰度图像或彩色图像。
    • lowerb:表示下界的阈值,可以是一个标量值或与输入图像通道数相同的数组。对于灰度图像,lowerb是一个标量值;对于彩色图像,可以通过传递一个数组来指定每个通道的下界阈值。
    • upperb:表示上界的阈值,与lowerb的类型相同,用于指定上界阈值。对于灰度图像,upperb是一个标量值;对于彩色图像,可以通过传递一个数组来指定每个通道的上界阈值。
    • dst(可选):输出图像,用于存储计算得到的阈值图像。它应该具有与输入图像相同的尺寸和数据类型。
      cv2.inRange函数的工作原理是扫描图像的每个像素,如果像素值在lowerbupperb指定的范围内,则将该像素设置为白色(或指定的其他值),否则设置为黑色。这样,就可以提取出指定范围内的颜色,并将该颜色的区域设置为白色,其余区域设置为黑色。

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

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

相关文章

安达发|APS生产排程软件6大核心技术

APS生产排程软件是一种先进的生产计划和调度工具,它通过整合企业内外部资源,实现生产计划的优化和生产过程的自动化控制。APS生产排程软件的核心技术包括产品工艺数据管理(PDM)、客户需求管理(CRM)、高级计…

生成自己的rola模型简单版四步完成

工具准备:秋叶整合包,lora 训练器 秋叶整合包地址:https://pan.quark.cn/s/2c832199b09b#/list/share lora训练器地址:lora训练器_免费高速下载|百度网盘-分享无限制 (baidu.com) 第一章 图像预处理 根据自己需要准备一个图片…

软件工具安装遇到bug、报错不知道怎么解决?看这里!

前言 本文举例了几个常见的软件工具使用问题,文末会提供一些我自己整理和使用的工具资料 。 "在追逐零 Bug 的路上,我们不断学习、改进,更加坚定自己的技术信念。让我们相信,每一个 Bug 都是我们成长的机会。" 一、VM…

LeetCode 热题 100 | 二叉树(中下)

目录 1 基础知识 1.1 队列 queue 1.2 栈 stack 1.3 常用数据结构 1.4 排序 2 98. 验证二叉搜索树 3 230. 二叉搜索树中第 K 小的元素 4 199. 二叉树的右视图 菜鸟做题忘了第几周&#xff0c;躺平过了个年TT 1 基础知识 1.1 队列 queue queue<type> q…

【办公类-16-07-04】合并版“2023下学期 中班户外游戏(有场地和无场地版,一周一次)”(python 排班表系列)

背景需求&#xff1a; 把 无场地版&#xff08;贴周计划用&#xff09; 和 有场地版&#xff08;贴教室墙壁上用&#xff09; 组合在一起&#xff0c;一个代码生成两套。 【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地&#xff0c;6周一次循环”&…

论文阅读——ONE-PEACE

ONE-PEACE: EXPLORING ONE GENERAL REPRESENTATION MODEL TOWARD UNLIMITED MODALITIES 适应不同模态并且支持多模态交互。 预训练任务不仅能提取单模态信息&#xff0c;还能模态间对齐。 预训练任务通用且直接&#xff0c;使得他们可以应用到不同模态。 各个模态独立编码&am…

Maxwell安装部署

1 Maxwell输出格式 database&#xff1a;变更数据所属的数据库table&#xff1a;变更数据所属的表type&#xff1a;数据变更类型ts&#xff1a;数据变更发生的时间xid&#xff1a;事务idcommit&#xff1a;事务提交标志&#xff0c;可用于重新组装事务data&#xff1a;对于inse…

无人机数据链技术,无人机数据链路系统技术详解,无人机数传技术

早期的无人机更多的为军事应用服务&#xff0c;如军事任务侦查等&#xff0c;随着技术和社会的发展&#xff0c;工业级无人机和民用无人机得到快速的发展&#xff0c;工业级无人机用于农业植保、地理测绘、电力巡检、救灾援助等&#xff1b;民用无人机用于航拍、物流等等领域。…

美国Mercari煤炉注册教程,还不快来Get!

想要掘金全球电商市场&#xff0c;美国的Mercari平台绝对值得关注。Mercari&#xff0c;也被称作煤炉&#xff0c;类似于我们国内的闲鱼二手交易平台&#xff0c;它同时拥有美国和日本两个市场。其中&#xff0c;美国市场的消费需求稳定且持续增长&#xff0c;成为了许多跨境电…

医卫医学试题及答案,分享几个实用搜题和学习工具 #笔记#笔记#微信

收录了大量考试类型的题库&#xff0c;大到考公&#xff0c;小到知识竞赛&#xff0c;题库资源算是比较丰富的了。操作起来也不难&#xff0c;我们只需输入题目内容&#xff0c;即可快速搜索出答案&#xff0c;而且它在给出答案的同时还会附带解析。最重要的是&#xff0c;搜题…

​LeetCode解法汇总105. 从前序与中序遍历序列构造二叉树

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给定两个整…

2024年【N1叉车司机】考试题及N1叉车司机新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 N1叉车司机考试题是安全生产模拟考试一点通总题库中生成的一套N1叉车司机新版试题&#xff0c;安全生产模拟考试一点通上N1叉车司机作业手机同步练习。2024年【N1叉车司机】考试题及N1叉车司机新版试题 1、【多选题】…

【Linux系统化学习】动静态库 | 软硬链接

目录 硬链接和软链接 硬链接 软链接 动态库和静态库 静态库 静态库的生成 静态库的使用 将库打包和使用 动态库 动态库的生成 动态库的使用 库搜索路径 硬链接和软链接 硬链接 上篇文章我们说到真正找到磁盘上的文件并不是文件名&#xff0c;而是inode。其实在…

Day 6.文件属性和权限的获取

时间获取 1.time time_t time(time_t *tloc); 功能&#xff1a; 返回1907-1-1到现在的秒数&#xff08;格林威治时间&#xff09; 参数&#xff1a; tloc&#xff1a;存放秒数空间的首地址 返回值&#xff1a; 成功返回秒数 失败返回-1 2.localtime struct tm *loca…

Python入门:常用模块—logging模块

logging日志的分级&#xff1a; debug(),info(),warning(),error(),critical() 5个级别 最简单用法 1 2 3 4 import logging logging.warning("user [mike] attempted wrong password more than 3 times") logging.critical("server is down") 输出&…

普中51单片机学习(二)

51单片机介绍 所需基础知识 基础数模电知识&#xff0c;简单的C语言。 PS&#xff1a;如果有不懂的直接通义千问。。。 什么是单片机 在一片集成电路芯片上集成微处理器、存储器、I/O接口电路&#xff0c;从而构成了单芯片微型计算机&#xff0c;即单片机。 学习方法 多实…

Sqoop 入门基础

简介 Sqoop&#xff08;SQL to Hadoop&#xff09;是一个开源工具&#xff0c;用于在关系型数据库和Hadoop之间传输数据。它提供了一种快速高效的方式&#xff0c;将数据从关系型数据库导入到Hadoop集群进行分析&#xff0c;并支持将Hadoop集群中的数据导出到关系型数据库中。本…

智慧社区管理系统:构建未来的生活模式

在这个信息化、智能化的时代&#xff0c;我们期待的不再是简单的居住空间&#xff0c;而是一个集安全、便捷、舒适、环保于一体的智能化社区。为此&#xff0c;我们推出了全新的智慧社区管理系统&#xff0c;旨在将先进的科技力量引入社区管理&#xff0c;为居民提供更优质的生…

OpenProject + Rocky8安装

文章目录 1、概要2、整体架构流程3、准备4、安装5、openproject 配置5.1、第一步&#xff1a;OpenProject 版本选择5.2、第二步&#xff1a;PostgreSQL 支持5.3、第三步&#xff1a;Apache2 Web 服务器支持5.4、第四步&#xff1a;hostname 支持5.5、 第五步&#xff1a;服务器…

【Docker】Docker存储卷

文章目录 一、什么是存储卷二、为什么需要存储卷三、存储卷分类四、管理卷Volume创建卷方式一&#xff1a;Volume 命令操作方式二&#xff1a;-v 或者--mount 指定方式三&#xff1a;Dockerfile 匿名卷 操作案例Docker 命令创建管理卷Docker -v 创建管理卷Docker mount 创建管理…