rgb2lab
将 RGB 转换为 CIE 1976 L*a*b*
说明
示例
将 RGB 白色转换为 L*a*b*
将颜色值转换为 L*a*b*,指定颜色空间
使用 ColorSpace
参数将 Adobe RGB (1998) 颜色值转换为 L*a*b*。
rgb2lab([.2 .3 .4],'ColorSpace','adobe-rgb-1998')
ans = 1×3
30.1783 -5.6902 -20.8223
将 RGB 颜色转换为 L*a*b*,指定参考白
使用 rgb2lab
通过 D50 参考白将 RGB 颜色转换为 L*a*b。
rgb2lab([.2 .3 .4],'WhitePoint','d50')
ans = 1×3
31.3294 -4.0732 -18.1750
将 RGB 图像转换为 L*a*b* 并显示 L* 分量
将 RGB 图像读入工作区。
rgb = imread('peppers.png');
将 RGB 图像转换为 L*a*b* 颜色空间。
lab = rgb2lab(rgb);
显示 L*a*b* 图像的 L* 分量。
imshow(lab(:,:,1),[0 100])
输入参数
RGB
— RGB 颜色值
数值数组
要转换的 RGB 颜色值,指定为数值数组,采用下列格式之一。
c×3 颜色图。每行指定一个 RGB 颜色值。
m×n×3 图像
m×n×3×p 图像堆叠
数据类型: single
| double
| uint8
| uint16
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量后,但对各个参量对组的顺序没有要求。
示例: lab = rgb2lab([0.25 0.40 0.10],WhitePoint="d50")
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: lab = rgb2lab([0.25 0.40 0.10],"WhitePoint","d50")
ColorSpace
— 输入 RGB 值的颜色空间
"srgb"
(默认) | "adobe-rgb-1998"
| "prophoto-rgb"
| "linear-rgb"
输入 RGB 值的颜色空间,指定为 "srgb"
、"adobe-rgb-1998"
、"prophoto-rgb"
或 "linear-rgb"
。如果您指定 "linear-rgb"
,则 rgb2lab
假设输入 RGB 值是线性化的 sRGB 值。
数据类型: string
| char
WhitePoint
— 参考白点
"d65"
(默认) | "a"
| "c"
| "e"
| "d50"
| "d55"
| "icc"
| 1×3 向量
参考白点,以 1×3 向量或表中列出的 CIE 标准光源之一形式指定。
值 | 白点 |
---|---|
"a" | CIE 标准光源 A, |
"c" | CIE 标准光源 C,[0.9807, 1.0000, 1.1822] 。模拟平均或北方日光,相关色温为 6774 K。CIE 已弃用此光源。 |
"e" | 等能量辐射体,[1.000, 1.000, 1.000] 。用作理论参考。 |
"d50" | CIE 标准光源 D50,[0.9642, 1.0000, 0.8251] 。模拟日出或日落时的暖日光,相关色温为 5003 K。也称为地平线日光。 |
| CIE 标准光源 D55, |
"d65" | CIE 标准光源 D65,[0.9504, 1.0000, 1.0888] 。模拟正午日光,相关色温为 6504 K。 |
"icc" | ICC 配置文件中使用的配置文件连接空间 (PCS) 光源。使用有符号 32 位定点数(具有 16 个小数位)的逼近 [0.9642, 1.000, 0.8249] 。实际值:[31595,32768, 27030]/32768 。 |
数据类型: single
| double
| string
| char
输出参量
lab
— 转换后的 L*a*b* 颜色值
数值数组
转换后的 L*a*b* 颜色值,以与输入大小相同的数值数组形式返回。输出类型是 double
,但如果输入类型是 single
,则输出类型也是 single
。
属性 | 描述 |
---|---|
L* | 图像的亮度。值在 [0, 100] 范围内,其中 0 指定黑色,100 指定白色。随着 L* 的增加,颜色变得更亮。 |
a* | 图像中红色或绿色色调的量。大的正 a* 值对应于红色/品红色。大的负 a* 值对应于绿色。虽然 a* 没有单一范围,但值通常在 [-100, 100] 或 [-128, 127) 范围内。 |
b* | 图像中黄色或蓝色色调的量。大的正 b* 值对应于黄色。大的负 b* 值对应于蓝色。虽然 b* 没有单一范围,但值通常在 [-100, 100] 或 [-128, 127) 范围内。 |
数据类型: double
| single
提示
如果您将输入 RGB 颜色空间指定为
"linear-rgb"
,则rgb2lab
假设输入值是线性化的 sRGB 值。相反,如果您需要输入颜色空间为线性化 Adobe RGB (1998),则您可以使用lin2rgb
函数。例如,要将线性化 Adobe RGB (1998) 图像
RGBlinadobe
转换为 CIE 1976 L*a*b* 颜色空间,请分两步执行转换:RGBadobe = lin2rgb(RGBlinadobe,"ColorSpace","adobe-rgb-1998"); LAB = rgb2lab(RGBadobe,"ColorSpace","adobe-rgb-1998");
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
ColorSpace
名称-值参量仅支持值"srgb"
、"adobe-rgb-1998"
和"linear-rgb"
。生成代码时,所有字符向量输入参量必须为编译时常量。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2014b 中推出R2022b: 支持 ProPhoto (ROMM RGB) 颜色空间
rgb2lab
现在支持 ProPhoto (ROMM RGB) 颜色空间,其色域比 sRGB 和 Adobe RGB 1998 颜色空间更广。要使用 ProPhoto 颜色空间,请将 ColorSpace
名称-值参量指定为 "prophoto-rgb"
。
R2022b: 支持基于线程的环境
rgb2lab
现在支持基于线程的环境。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)