Main Content

rgb2xyz

将 RGB 转换为 CIE 1931 XYZ

说明

XYZ = rgb2xyz(RGB) 将 sRGB 图像的红色、绿色和蓝色值转换为 CIE 1931 XYZ 值(2° 观察者)。

示例

XYZ = rgb2xyz(RGB,Name,Value) 使用一个或多个名称-值参量指定其他转换选项,例如 RGB 图像的颜色空间。

示例

全部折叠

将图像和颜色值从 RGB 转换为 CIE 1931 XYZ 颜色空间。

将 RGB 图像转换为 XYZ

将 RGB 图像读取到工作区。

RGB = imread('peppers.png');

将图像转换为 XYZ 颜色空间。

XYZ = rgb2xyz(RGB);

并排显示原始图像和新图像。

figure
imshowpair(RGB,XYZ,'montage');
title('Image in RGB Color Space (Left) and XYZ Color Space (Right)');

将 RGB 颜色值转换为 XYZ

将白色值从 RGB 转换为 XYZ 颜色空间。在 RGB 中,白色由向量 [1 1 1] 表示。

rgb2xyz([1 1 1])
ans = 1×3

    0.9505    1.0000    1.0888

使用 D50 作为参考白,将 RGB 颜色转换为 XYZ

XYZ_D50 = rgb2xyz(RGB,'WhitePoint','d50');

并排显示第一个输出 XYZ 图像与以 D50 作为参考白的 XYZ 图像。

figure
imshowpair(XYZ,XYZ_D50,'montage');
title('XYZ Image, Without (Left) and With (Right) Reference White');

将 Adobe RGB (1998) 颜色转换为 XYZ

XYZ_Adobe = rgb2xyz(RGB,'ColorSpace','adobe-rgb-1998');

显示从默认 RGB 和 Adobe RGB (1998) 颜色空间生成的 XYZ 图像。

figure
imshowpair(XYZ,XYZ_Adobe,'montage');
title(['XYZ Image, Starting From Default RGB (Left) and Adobe RGB ',...
  '(Right) Color Space']);

输入参数

全部折叠

要转换的 RGB 颜色值,指定为数值数组,采用下列格式之一。

  • c×3 颜色图。每行指定一个 RGB 颜色值。

  • m×n×3 图像

  • m×n×3×p 图像堆叠

数据类型: single | double | uint8 | uint16

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但对各个参量对组的顺序没有要求。

示例: xyz = rgb2xyz([.2 .3 .4],WhitePoint="d50")

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: xyz = rgb2xyz([.2 .3 .4],"WhitePoint","d50")

输入 RGB 值的颜色空间,指定为 "srgb""adobe-rgb-1998""prophoto-rgb""linear-rgb"。如果您指定 "linear-rgb",则 rgb2xyz 假设输入 RGB 值是线性化的 sRGB 值。

数据类型: string | char

参考白点,以 1×3 向量或表中列出的 CIE 标准光源之一形式指定。

白点
"a"

CIE 标准光源 A,[1.0985, 1.0000, 0.3558]。模拟典型的家用白炽灯,相关色温为 2856 K。

"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。也称为地平线日光

"d55"

CIE 标准光源 D55,[0.9568, 1.0000, 0.9214]。模拟上午中间时刻或下午中间时刻的日光,相关色温为 5500 K。

"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

输出参量

全部折叠

转换后的 XYZ 颜色值,以与输入大小相同的数值数组形式返回。输出类型是 double 类,但如果输入类型是 single,则输出类型也是 single

提示

  • 如果您将输入 RGB 颜色空间指定为 "linear-rgb",则 rgb2xyz 假设输入值是线性化的 sRGB 值。相反,如果您需要输入颜色空间为线性化 Adobe RGB (1998),则您可以使用 lin2rgb 函数。

    例如,要将线性化 Adobe RGB (1998) 图像 RGBlinadobe 转换为 CIE 1931 XYZ 颜色空间,请分两步执行转换:

    RGBadobe = lin2rgb(RGBlinadobe,"ColorSpace","adobe-rgb-1998");
    XYZ = rgb2xyz(RGBadobe,"ColorSpace","adobe-rgb-1998");
    

版本历史记录

在 R2014b 中推出

全部展开