Main Content

rgb2xyz

RGB を CIE 1931 XYZ に変換

説明

XYZ = rgb2xyz(RGB) は sRGB イメージの赤、緑、青の値を CIE 1931 XYZ 値 (2 度視野) に変換します。

XYZ = rgb2xyz(RGB,Name,Value) では、1 つ以上の名前と値の引数を使用して、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 列のカラーマップ。各行が 1 つの RGB の色の値を指定します。

  • m x n x 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 (プロファイル接続空間) の輝度。小数ビットが 16 ビットの 32 ビット符号付き固定小数点数による [0.9642, 1.000, 0.8249] の近似。実際の値: [31595,32768, 27030]/32768

データ型: single | double | string | char

出力引数

すべて折りたたむ

変換後の XYZ の色の値。入力と同じサイズの数値配列として返されます。出力の型は、入力の型が single の場合には single クラス、 そうでない場合には double クラスになります。

ヒント

  • 入力 RGB 色空間を "linear-rgb" に指定した場合、rgb2xyz は、入力値が線形化された sRGB 値であると仮定します。代わりに、入力色空間を線形化された Adobe RGB (1998) にする場合は、関数 lin2rgb を使用できます。

    たとえば、線形化された Adobe RGB (1998) イメージ RGBlinadobe を CIE 1931 XYZ 色空間に変換するには、変換を次の 2 つのステップで実行します。

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

バージョン履歴

R2014b で導入

すべて展開する