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 # 加载图像 image = mh.imread('sea.bmp') # 将其转换为 LAB lab_image = mh.colors.rgb2lab(image) # 为子图创建图形和轴 fig, axis = mtplt.subplots(1, 2) # 显示原始 RGB 图像 axes[0].imshow(image) axes[0].set_title('RGB Image') axes[0].set_axis_off() # 显示 LAB 图像 axes[1].imshow(lab_image) axes[1].set_title('LAB Image') axes[1].set_axis_off() # 调整子图之间的间距 mtplt.tight_layout() # 显示图形 mtplt.show()
输出
以下是上述代码的输出−

随机图像的 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 # 创建随机 RGB 图像 image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8) # 将其转换为 LAB lab_image = mh.colors.rgb2lab(image) # 为子图创建图形和轴 fig, axis = mtplt.subplots(1, 2) # 显示原始 RGB 图像 axes[0].imshow(image) axes[0].set_title('RGB Image') axes[0].set_axis_off() # 显示 LAB 图像 axes[1].imshow(lab_image) axes[1].set_title('LAB Image') axes[1].set_axis_off() # 调整子图之间的间距 mtplt.tight_layout() # 显示图 mtplt.show()
输出
上述代码的输出如下 −
