Mahotas - RGB 到 LAB 颜色空间转换



LAB 颜色空间是一个近似人类颜色感知的颜色模型。它将颜色信息分成三个通道:

  • L(亮度) - L 通道表示感知到的颜色亮度(亮度)。其范围从 0(最暗黑色)到 100(最亮白色)。

  • A(绿-红轴) - 表示颜色在绿-红轴上的位置。负值表示绿色,正值表示红色。

  • B(蓝-黄轴) - 表示颜色在蓝-黄轴上的位置。负值表示蓝色,正值表示黄色。

在从 RGB 到 LAB 的转换过程中,每个 RGB 像素值都被归一化到 0 到 1 的范围内。

然后,应用各种数学变换,例如调整亮度,使颜色更准确地符合我们的感知,并将它们转换为 LAB 值。

这些调整有助于我们以符合人类视觉方式表示颜色。

Mahotas 中的 RGB 到 LAB 转换

在 Mahotas 中,我们可以使用 colors.rgb2lab() 函数将 RGB 图像转换为 LAB 图像。

Mahotas 中的 RGB 到 LAB 转换包括以下步骤:

  • 归一化 RGB 值 - 首先将每个像素的 RGB 值调整到 0 到 1 之间的标准化范围。

  • 伽马校正 - 对归一化的 RGB 值应用伽马校正以调整图像的亮度级别。

  • 线性化 RGB 值 - 将伽马校正后的 RGB 值转换为线性 RGB 颜色空间,确保输入和输出值之间存在线性关系。

  • 转换为 XYZ 颜色空间 - 使用变换矩阵将线性 RGB 值转换为 XYZ 颜色空间,该空间表示图像的颜色信息。

  • 计算 LAB 值 - 从 XYZ 值中,使用特定公式计算 LAB 值,考虑我们眼睛如何感知颜色。LAB 颜色空间将亮度 (L) 与颜色分量 (A 和 B) 分开。

  • 应用参考白值 - 根据参考白值调整 LAB 值,以确保准确的颜色表示。

  • LAB 表示 - 生成的 LAB 值表示图像的颜色信息。L 通道表示亮度,而 A 和 B 通道表示沿两个轴的颜色信息。

使用 mahotas.colors.rgb2lab() 函数

mahotas.colors.rgb2lab() 函数以 RGB 图像作为输入,并返回图像的 LAB 颜色空间版本。

生成的 LAB 图像保留了原始 RGB 图像的结构和内容,同时提供了增强的颜色表示。

语法

以下是 mahotas 中 rgb2lab() 函数的基本语法:

mahotas.colors.rgb2lab(rgb, dtype={float})

其中:

  • rgb - 它是 RGB 颜色空间中的输入图像。

  • dtype (可选) - 它是返回图像的数据类型(默认为浮点数)。

示例

在下面的示例中,我们使用 mh.colors.rgb2lab() 函数将 RGB 图像转换为 LAB 图像:

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# Loading the image
image = mh.imread('sea.bmp')
# Converting it to LAB
lab_image = mh.colors.rgb2lab(image)
# Creating a figure and axes for subplots
fig, axes = mtplt.subplots(1, 2)
# Displaying the original RGB image
axes[0].imshow(image)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# Displaying the LAB image
axes[1].imshow(lab_image)
axes[1].set_title('LAB Image')
axes[1].set_axis_off()
# Adjusting spacing between subplots
mtplt.tight_layout()
# Showing the figures
mtplt.show()
输出

以下是上述代码的输出:

LAB Color Space

随机图像的 RGB 到 LAB 转换

我们可以通过以下方式将随机生成的 RGB 图像转换为 LAB 颜色空间:

  • 首先,定义图像的所需大小,指定其宽度和高度。
  • 我们还确定颜色深度,通常为 8 位,范围从 0 到 255。
  • 接下来,我们使用 NumPy 的 "random.randint()" 函数为图像中的每个像素生成随机 RGB 值。
  • 获得 RGB 图像后,我们将其转换为 LAB 颜色空间。

生成的图像将位于 LAB 颜色空间中,其中图像的亮度和颜色信息被分离到不同的通道中。

示例

以下示例显示了将随机生成的 RGB 图像转换为 LAB 颜色空间图像:

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# Creating a random RGB image
image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)
# Converting it to LAB
lab_image = mh.colors.rgb2lab(image)
# Creating a figure and axes for subplots
fig, axes = mtplt.subplots(1, 2)
# Displaying the original RGB image
axes[0].imshow(image)
axes[0].set_title('RGB Image')
axes[0].set_axis_off()
# Displaying the LAB image
axes[1].imshow(lab_image)
axes[1].set_title('LAB Image')
axes[1].set_axis_off()
# Adjusting spacing between subplots
mtplt.tight_layout()
# Showing the figures
mtplt.show()

输出

上述代码的输出如下:

RGB LAB Image
广告