Main Content

rgb2lin

ガンマ補正された RGB 値の線形化

説明

B = rgb2lin(A) は、B が線形 RGB 値を含むように、イメージ A 内の sRGB 値のガンマ補正を元に戻します。

B = rgb2lin(A,Name,Value) は追加オプションを制御するために名前と値の引数を使用してガンマ補正を元に戻します。

すべて折りたたむ

イメージを開きます。JPEG ファイル形式はガンマ補正された sRGB 色空間にイメージを保存します。

A = imread("foosball.jpg");

イメージを表示します。

imshow(A)
title("Scene With sRGB Gamma Correction")

Figure contains an axes object. The axes object with title Scene With sRGB Gamma Correction contains an object of type image.

関数 rgb2lin を使用することにより、ガンマ補正を元に戻してイメージを線形化します。オプションで、線形化された値のデータ型を指定します。

B = rgb2lin(A,OutputType="double");

線形化されたイメージを表示します。線形化されたイメージ内の影は、予想どおり、元のイメージ内の影よりも暗くなります。

imshow(B)
title("Linearized Scene")

Figure contains an axes object. The axes object with title Linearized Scene contains an object of type image.

入力引数

すべて折りたたむ

ガンマ補正された RGB カラー値。次のいずれかの形式の数値配列として指定します。

  • c 行 3 列のカラーマップ。各行が 1 つの RGB の色の値を指定します。

  • m x n x 3 のイメージ

  • m × n × 3 × p のイメージのスタック

データ型: single | double | uint8 | uint16

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: B = rgb2lin(I,ColorSpace="adobe-rgb-1998") は、Adobe RGB (1998) 規格に基づいて、ガンマ補正されたイメージ I を線形化します。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: B = rgb2lin(I,"ColorSpace","adobe-rgb-1998") は、Adobe RGB (1998) 規格に基づいて、ガンマ補正されたイメージ I を線形化します。

入力イメージの色空間。"srgb""adobe-rgb-1998"、または "prophoto-rgb" として指定します。

データ型: char | string

出力 RGB 値のデータ型。"double""single""uint8"、または "uint16" を指定します。既定では、出力データ型は A のデータ型と同じです。

データ型: char | string

出力引数

すべて折りたたむ

線形化された RGB カラー値。入力 A と同じサイズの数値配列として返されます。

アルゴリズム

すべて折りたたむ

sRGB 規格を使用した線形化

sRGB 三刺激値は、以下のパラメトリック曲線を使用して線形化されます。

f(u) = -f(-u), u < 0

f(u) = c ⋅ u, 0 ≤ u < d

f(u) = (a ⋅ u + b)ɣ, u ≥ d,

ここで u は以下のパラメーターを持つカラー値を表します。

a = 1/1.055

b = 0.055/1.055

c = 1/12.92

d = 0.04045

ɣ = 2.4

Adobe RGB (1998) 規格を使用した線形化

Adobe RGB (1998) 三刺激値は、以下の単純なべき関数を使用して線形化されます[2]

v = uɣ,

ここで

ɣ = 2.19921875

ProPhoto (ROMM RGB) 規格を使用した線形化

ProPhoto (ROMM RGB) 三刺激値は、以下のパラメトリック曲線を使用して線形化されます[3]

f(u) = 0, u < 0

f(u) = u/16, 0 ≤ u < 16*Et

f(u) = u1.8 + b, 16*Et < u < 1,

f(u) = 1, u ≥ 1

ここで

Et = 1/512

参照

[1] Ebner, Marc. "Gamma Correction." Color Constancy. Chichester, West Sussex: John Wiley & Sons, 2007.

[2] Adobe Systems Incorporated. "Inverting the color component transfer function." Adobe RGB (1998) Color Image Encoding. Section 4.3.5.2, May 2005, p.12.

[3] ISO 22028-2:2013 Photography and graphic technology — Extended colour encodings for digital image storage, manipulation and interchange — Part 2: Reference output medium metric RGB colour image encoding (ROMM RGB). https://www.iso.org/standard/56591.html

バージョン履歴

R2017b で導入

すべて展開する

参考