RGB HSV LAB 灰度图之间的爱恨情仇(持续更新)

发布于:2024-10-12 ⋅ 阅读:(23) ⋅ 点赞:(0)

一:RGB

1.1 什么是RGB

首先了解RGB中三个字母分别代表什么含义:R(red)红色,G(green)绿色,B(blue)蓝色。我们在屏幕中看见的所有颜色都是通过RGB所拼出来的。

这张图大小是3840x2400。也就代表这张图有3840x2400多个像素组成,那其实每个像素都是由RGB三个通道构成(三个通道分别是R,G,B)所展示出来的,这样让我看见了不同的颜色。

每个通道都是由两位的十六进制数组成,不同通道的十六进制数可以不相同,也就是代表不同通道的发光程度不同(亮度不同)。

为什么三个的发光程度不同就导致我们看见的色彩有差异呢?

因为人的眼睛对不同波长的光有不同的感受, 红、绿、蓝三种颜色处于可见光谱中较为特殊的位置,能够刺激人眼视网膜上的三种不同类型的视锥细胞。当我们把红色和绿色混合在一起时,人眼会同时收到红色光和绿色光的刺激让人感受到了黄色。同理,当不同颜色的光同时刺激眼睛时,我们会感受到不同的颜色。

因此我们在使用类似可以选择颜色的软件时,选好颜色后会告诉你R,G,B的分量到底时多少。

当然对于RGB的理解较为简单。接下来了解一下灰度图。

1.2 灰度图

1.2.1 什么是灰度图

灰度图只有一个亮度通道,我们常常会看见将RGB图转化为灰度图。

灰度可以理解为图像中像素的亮度值。在灰度图中,最黑的部分用灰度值 0 表示,最白的部分用灰度值 255 表示(对于 8 位灰度图像而言)。介于两者之间的灰度值则代表了不同程度的灰色。例如,灰度值为 128 的像素呈现出中等亮度的灰色。

1.2.2 RGB转为灰度图

使用公式 Gray = 0.299R + 0.587G + 0.114B 来计算其对应的灰度值。

分析一下为什么灰度图的数值表示亮度,再RGB中我们提到R,G,B都是表示亮度的不同,那题目进行运算得到的结果也是亮度。并且从公式中也可以了解,原本三通道的RGB转换为灰度就一个值了,也就印证为什么灰度图是单通道。

二:HSV

HSV相较于RGB来说,可能突然学会觉得有点不太容易理解,但是请记住HSV是更加符合我们人对于颜色的感知的,其实在我们各种软件在调色板中调色时,我们根据地其实是HSV来进行选择(这就是为什么说HSV是符合人对于颜色的感知),同时软件一般会显示RGB的数值。

2.1 什么是HSV

首先了解HSV中三个字母分别代表什么含义:H(Hue)色相,S(Saturation)饱和度,V(Value)明度/亮度。

色相:简单来说,我们会描述一朵花是红色,一片叶子是绿色,我们说的颜色就是色相,它决定了颜色的种类。色相通常用一个角度值来表示,范围从 0° 到 360°。0° 或 360° 表示红色,120° 表示绿色,240° 表示蓝色。在这个角度范围内,不同的角度对应着不同的颜色。例如,60° 附近的颜色为黄色,180° 附近的颜色为青色,300° 附近的颜色为品红色。

饱和度: 饱和度表示颜色的纯度,即颜色的鲜艳程度。饱和度越高,颜色越鲜艳浓烈;饱和度越低,颜色越暗淡发灰,接近灰色。饱和度的取值范围通常是从 0% 到 100%。当饱和度为 0% 时,颜色变为灰色,完全没有色彩;当饱和度为 100% 时,颜色达到最鲜艳的状态。可能这样不够直观,最简单的方法去手机上调一下饱和度感受一下。

明度/亮度:明度也称为亮度,它决定了颜色的明亮程度。明度越高,颜色越亮,接近白色;明度越低,颜色越暗,接近黑色。明度的取值范围通常也是从 0% 到 100%。当明度为 0% 时,颜色为黑色;当明度为 100% 时,颜色为白色。在中间的取值范围内,不同的明度值对应着不同亮度的颜色。同样也可以去手机上调一下亮度感受一下。

2.2 HSV的“灰度”

我们在1.2中提到,灰度图是单通道的,并且其通道是代表亮度值。

而HSV中V也代表亮度,那是否我们保留HSV中的V通道,也可以实现RGB转化为灰度图的效果呢?

其实两者的差别不大,论文《An improved gray line profile method to inspect the warp–weft density of fabrics》中就使用保留HSV中的V来对图像轮廓进行处理。

当然其实两者也有细微区别。

HSV中保留V,可以理解在三个通道中H,S通道舍去,保留亮度(也仅仅保留了亮度,对比度丢失了因为饱和度和色相被去除了)。

RGB转化为灰度,我们在上面说了转化的公式,这种方式得到的灰度图更加考虑到人眼感知亮度的特点,不是简单的颜色亮度的映射,其中保留了对于颜色对比度的细节因为其是由同颜色的亮度共同组合而成。

HSV中的V值主要是颜色的亮度信息,而RGB转灰度更能保留色彩对比效果。

所以现在大多的图片预处理选择使用的都是转为灰度图这样的方式,并且相对于保留V通道,又更多的api可以对灰度图进行处理。

三 LAB

我们知道了RGB和HSV了,我们要知道,RGB是基于设备依赖的颜色模型,而HSV我们说是更适合人对于颜色感知的,但是我也要了解,HSV是由RGB派生出的颜色模型。

现在我们将要介绍一个完全基于人类视觉感知的,与设备无关的,旨在更好模拟人眼的色彩感知。

LAB颜色空间比RGB覆盖更大的颜色范围,能够表示人眼能看到的所有颜色,甚至一大部分已经超过人类视觉范围了,都不能称为“颜色”了。

3.1 什么是LAB

首先了解LAB中三个字母分别代表什么含义:L(Lightness)亮度,A(Green-Red)绿色到红色的通道,B(Blue-Yellow)蓝色到黄色的通道。

L(Lightness)亮度:表示颜色的亮度或明度范围,取值范围通常是0到100。0时为绝对的黑色,100为绝对的白色。

A(Green-Red)绿色到红色的通道:A值表示颜色在绿色和红色之间的分布,A为负表示偏向绿色,A为正表示偏向红色,A的取值范围通常在-128到+127之间,A为0是表示灰色。

B(Blue-Yellow)蓝色到黄色的通道:B值表示颜色在蓝色到黄色之间的分布,B为负表示偏向蓝色,B为负表示偏向黄色,B的取值范围通常在-128到+127之间,B为0时表示灰色。

3.2  LAB的“灰度”

我们在上面说到RGB转灰度图,HSV中保留V。

我们看到LAB中L也是代表亮度的,那是否我们保留L也可以达到灰度图的效果呢?

文章《Multi-scale density detection for yarn-dyed fabrics with deformed repeat patterns》中就使用LAB值提取L通道对纹理进行分析。

首先我们可以明确。两种方法都旨在将彩色图像转换为灰度图,最终结果是没有颜色的图像,只有明暗强度。

但是和HSV中保留V类似,当我们在LAB中仅保留L通道时,实际上是在使用亮度信息来生成灰度图。这意味着,颜色被忽略,灰度图像仅基于颜色的明暗程度生成。但RGB转灰度RGB转灰度使用的是各个通道的加权值,而这些加权值主要基于光的物理特性和人眼对RGB三原色的感知。它依赖于红、绿、蓝三色的亮度贡献。

那返回刚刚提到的文章,由于对于色织物,作者想排除掉颜色对于纹理边缘的影响,选择提取L通道,这样看起来非常符合逻辑,那我们也就可以根据这样的方向进行分析。

还有其他颜色空间的模型将持续更新,感谢关注!!!