【OpenCV3图像处理】颜色空间转换(一)颜色空间分类总结

2024-06-12 08:58

本文主要是介绍【OpenCV3图像处理】颜色空间转换(一)颜色空间分类总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

颜色空间 

近100多年来,为了满足不同用途的需要,人们开发了许多不同名称的颜色空间,“可以说表示颜色空间的数目是无穷的”,但是,现有的颜色空间还没有一个完全符合人的视觉感知特性、颜色本身的物理特性或发光物体或反光物体的特性。人们还在继续开发各种新的颜色空间。

不同的颜色空间有着不同的特性,使用在不同的领域。因此在实际中需要进行不同颜色空间的转换。不同颜色空间的转换可以是直接转换,也可以通过与设备无关的颜色空间进行转换。这时就会遇到选择颜色空间和转换方法的问题。

 

为了使用颜色空间,首先应该了解各种颜色空间的特性。颜色空间的分类有多种方法。

1.按使用类别分类

彩色色度学模型:CIE-RGB、CIE-XYZ、均匀色差彩色模型(CIE 1976Luv和CIE Lab)

工业彩色模型:RGB彩色显示模型、CMYK彩色印制模型、彩色传输模型YUV(PAL)、YIQ(NTSC)、YCrCb(数字高清晰度电视)

视觉彩色模型:HVC(孟赛尔)、HSB(Photoshop)、HLS(Windows画图和Apple Color Picker)、HSI(图像分割)、HSY(电视)、Ohta(图像分割)等。

2.按颜色感知分类

混合颜色模型:按3种基色的比例混合而成的颜色。RGB、CMYK、XYZ等

非线形亮度/色度颜色模型:用一个分量表示非色彩的感知,用两个分量表示色彩的感知,这两个分量都是色差属性。L*a*b、L*u*v、YUV、YIQ等。

强度/饱和度/色调模型:用强度描述亮度或灰度等光强的感知,用饱和度和色调描述色彩的感知,这两个分量接近人眼对颜色的感觉。如HIS、HSL、HSV、LCH等

 

一.彩色色度学模型

1.CIE-RGB彩色模型

CIE-RGB彩色模型是国际照明委员会(CIE)制定了第一个彩色色度学模型。它是在三原色学说下,以红色、绿色、蓝色作为三种基色建立起来的颜色模型。其不足点是:在某些情况下,颜色值会出现负值。

2.CIE-XYZ彩色模型

CIE-XYZ彩色模型是为消除CIE—RGB色度坐标中负值而设计的。其中三刺激值X、Y、Z,并不代表真实的物理彩色。其颜色空间包含了人类能够发觉的所有颜色,但并不是均匀色差空间。

3.均匀色差空间

在均匀色差空间中,相同距离的彩色色差与人眼主观感觉基本一致。有Luv和Lab两种均匀色差彩色模型。普遍认为,Lab彩色模型更接近人眼的主观感觉。

Buchsbaum等人对色彩迁移进行了研究,利用一些正交线性变换将人类视觉系统所能感受到的红、绿、蓝三色信号变换到三个不相关的色彩分量。在他们的研究基础上,Ruderman等人经过对大量的自然界图像进行颜色分布统计,得到了图像的颜色分布统计结果,并用转化色彩空间的方法形成一个统计意义上具有近似正交基的均匀色彩空间lαβ,并给出了简单的3×3矩阵运算实现RGB到lαβ空间的转化。lαβ色彩空间是基于数据驱动对人类感觉的研究,它假设人类的视觉系统理想地适应自然景色的处理,由亮度分量l,和两个色度分量α和β组成。其中,α表示黄一蓝通道(yellow—blue opponent),β表示红一绿通道(red—green opponent),如图:

 

Ruderman等人在一幅用lαβ色彩空间表示的图像中随机抽取1000个像素点,生成了图4所示的坐标关系图。从中可以看出,lαβ色彩空间不仅基本消除了颜色分量之间的强相关性,而且有效地将图像的灰度信息和颜色信息分离开来。所以可以分别对三个通道图像进行独立的运算,而不需要修改另外两个通道的信息,从而不会影响原图像的自然效果。

 

                                                                                                   lab空间l-a、l-b、a-b关系图

色彩空间的转换

       色彩空间一方面要符合人眼的视觉感知特性,另一方面应方便图像的处理。图像色彩迁移的过程是一个改变图像颜色基调的过程,通常希望在改变图像的一个颜色属性时,不改变图像其它的颜色属性。由前面的介绍可知,RGB空间的三通道具有很强的相关性,而lαβ空间的各通道具有最小的相关性。所以,在lαβ空间对图像的颜色进行出来将会变得十分方便。因此,选择在lαβ空间进行图像间的色彩迁移,这就需要将图像从RGB空间转换到lαβ空间。

1.从RGB空间到lαβ空间的转换

需要进行3次变换,即RGB->CIEXYZ->LMS->lαβ,具体步骤如下:

1)从RGB空间到CIE XYZ空间的转换

 

2)从CIE XYZ空间到LMS空间的转换

 

通过1、2可以得到RGB空间到LMS空间的转换。由于数据在LMS空间比较分散,所以进一步将其转换到以10为底的对数空间,这样不仅使数据分布更加聚敛,而且符号人类对于颜色感觉的心理物理学研究结果。

 

3)从LMS空间到lαβ空间的转换

这一变换是基于对数据的主成分分析(PCA,Principal ComponentAnalysis)得到的,其中l为第一主成分,α为第二主成分,β为第三主成分。

 

经过这三个步骤就完成了从RGB空间到lαβ空间的转换。

色彩空间的逆转换

当图像在lαβ空间进行处理之后,为了显示处理的结果,需要把图像转换到RGB空间,具体步骤为:

1)从lαβ空间到LMS对数空间的转换

 

2)从LMS对数空间到LMS线性空间的转换

 

3)从LMS空间到RGB空间的转换

 

 

二.工业彩色模型

1.RGB彩色显示模型

RGB模型是一种加色系统,色彩源于红、绿、蓝三基色。用于CRT显示器、数字扫描仪、数字摄像机和显示设备上,是当前应用最广泛的一种彩色模型。RGB彩色模型可用一个三维空间的立方体来表示,在此系统中计算的任何颜色都该立方体内,其彩色空间在L*a*b*彩色空间内。但人眼不能直接感觉红、绿、蓝三色的比例,因此对图像进行增强处理结果难以控制。

2.CMYK彩色印制模型

CMYK彩色模型是一种减色模型,色彩来源于青、品红、黄3种基色,其彩色空间小于RGB彩色空间。主要适用于印刷油墨和调色剂等实体物质产生颜色的场合,广泛用于彩色印刷领域。

3.彩色传输模型

彩色传输模型主要用于彩色电视机信号传输标准,他们的共同特点是都能向下兼容黑白显示器,即在黑白显示器上也能显示彩色图像,只不过显示为灰度图像。YUV彩色传输模型适用于PAL、SECAM彩色电视制式。YIQ彩色传输模型适用于美国国家电视标准委员会(NTSC)彩色电视制式,它是经YUV模型旋转色差分量而形成的彩色空间。YCrCb彩色传输适用于计算机用的显示器。

 

三.视觉彩色模型

根据人眼视觉特性提出的,用色调(Hue)、饱和度(Saturation)、亮度(luminance)来描述彩色模型。其彩色空间能更好的与人的视觉特性相匹配。

1.   基于孟塞尔彩色系统的HVC模型

蒙塞尔系统是比较经典和理想的均匀的颜色表示系统。它在视觉上是等色差的,即沿色调、亮度值、或饱和度方向上等量的变化产生相同的视觉差异。遗憾的是,蒙塞尔系统没有具体的描述公式,是依靠大量的实验数据,以查表方式(表的大小为256*256*256)和蒙塞尔色品卡建立起来的,因此和其它的彩色模型的转换十分复杂,必须通过数据查询和线性插值,计算量繁多。

2.   HSB彩色模型

HSB彩色模型是一个单锥体,红、绿、蓝以及各自的补色色调均匀分布于圆周上,是基于孟塞尔彩色系统的一种理想情况。其彩色模型问题在于:

① 除白色外,R、G、B三值中只要其中一个值是255,饱和度就等于最大值100;同一亮度下,各种颜色的饱和度都相等。这和孟塞尔系统颜色模型不一致。

② HSB模型中,在同一亮度平面上(如亮度最大的平面上),可见到所有的颜色。这与人眼的视觉特性相违背。

③ 只要R、G、B中有一个值为255,那么亮度B就达到最大值100。这与Grassman的三色调配公理和格拉斯曼定律内容不符。

3.   HLS彩色模型

HLS彩色模型是一个双锥体,其色调H与HSV模型中的色调分布完全一样。不同的是:HLS模型中的最亮纯色位于L=0.5处,亮度为最大时,只能看到白色。它也是基于孟塞尔彩色系统的一种理想模型,其自身也同样存在一些不足:

① 除白色外,R、G、B三值中只要其中一个值是255,饱和度就等于最大值100;同一亮度下,各种颜色的饱和度都相等;且饱和度随着亮度L均匀的变化。

②HLS模型中的三个属性(H、L、S)并不完全独立。可由公式亮度看出,这给人们单独处理某一属性时带来麻烦。

③ 在L=0.5的平面上能够看到所有的纯彩色;而实际上这些颜色看起来并不一样亮,但看起来一样亮的颜色,其亮度值未必相等,与人眼之间有误差。这个问题在HSB模型中也同样存在。

4.    HSY彩色模型

HSY模型是一种彩色传输模型,传输基本的色差和亮度信号,被用于摄像机传输模式。YCrCb模型、YUV模型以及YIQ模型都是在HSY模型基础上对色差信号进行调制和压缩而形成的彩色电视机信号的传输标准。

①它的亮度变化(在各种纯彩色之间)完全符合人眼的实际视觉感受。它的亮度公式是根据人的视觉特性,由美国国家电视制式委员会的NTSC制式推导得到的

②在 HSY模型饱和度最大的颜色并不在一个圆周上,同一亮度平面上的各颜色的饱和度也不一样大,这很接近人眼的实际视觉感受,和孟塞尔颜色系统理论相符。

③基色色调与其补色近似互补,但是各基色及其补色在圆周上的分布不均匀。

有关研究表明:人眼对亮度、饱和度信息的变化比色调信号所携带的信息的变化要敏感的得多,也就是说人眼对色调的变化相对不敏感。

基于以上综合分析,采用HSY彩色模型作为测量工具,进行实际测试。测试结果和预期分析的结果非常符合,亮度和饱和度相对于HSB和HLS彩色模型,更符合人眼的实际视觉感受,色调分布无大的差别。从总体上说HSY彩色模型的测试效果更好。

5.    HSI彩色模型

 

HSI (hue、saturation、intensity) 和HSV (hue、saturation、value)颜色空间在设计上使得颜色感知和解释的方式与人很接近,在需要手动指定颜色值时经常需要使用它们。HLS (hue、lightness、saturation) 类似于HSI,只是使用了术语lightness,而不是光强度intensity来表示亮度。

HSI和HSV颜色空间的差异在于亮度分量(I or V)的计算方式。HSI颜色空间适合传统的图像处理函数,如卷积、均化、直方图等,可以通过处理亮度值来实现这些操作,因为亮度I对R、G、B值的依赖程度是一样的。HSV颜色空间适合处理色度和饱和度,因为它使得饱和度具有更大的动态取值范围

6.    Ohta颜色空间

Ohta颜色空间是1980年Ohta 等人提出的颜色空间,该空间中三个颜色分量,I1,I2,I3,为一组正交的颜色特征集,它们也可由RGB颜色空间转换得到,三个分量各自互相独立。

 

 

利用该模型也可以对彩色图像进行分割,可以得到很好的效果(黄色的图像背景)

 

数字图像处理和计算机视觉领域,遇到应用问题,应该怎么选择合适的色彩空间,下面是葛老师总结的一个表格,供参考

小结:图象处理使用HIS较多,图形学使用HSV较多。图象分割使用HSV较多,Ohta较新。

 

 OpenCV转换图像的色彩空间的方法,参见博客:

【OpenCV图像处理】颜色空间转换函数 cvtColor()

 

这篇关于【OpenCV3图像处理】颜色空间转换(一)颜色空间分类总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053768

相关文章

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert