lin2rgb
線形 RGB 値へのガンマ補正の適用
説明
例
sRGB と Adobe RGB のガンマ曲線のプロット
線形値の範囲を定義します。このベクトルは、0 と 1 との間に 257 個の等間隔の点を定義します。
lin = linspace(0,1,257);
sRGB 規格に基づいて線形値にガンマ補正を適用します。その後、Adobe RGB (1998) 規格に基づいて線形値にガンマ補正を適用します。
sRGB = lin2rgb(lin); adobeRGB = lin2rgb(lin,'ColorSpace','adobe-rgb-1998');
ガンマ補正曲線をプロットします。
figure plot(lin,sRGB,'b',lin,adobeRGB,'r') title('Gamma-Corrected vs. Linear Values') legend('sRGB','Adobe RGB (1998)','Location','southeast')
他の可視化の方法としては、各色空間を表すカラー バーをプロットします。
cb_lin = ones(30,257) .* lin; cb_sRGB = ones(30,257) .* sRGB; cb_adobeRGB = ones(30,257) .* adobeRGB; figure subplot(3,1,1); imshow(cb_lin); title('Linear RGB') subplot(3,1,2); imshow(cb_sRGB); title('sRGB'); subplot(3,1,3); imshow(cb_adobeRGB); title('Adobe RGB (1998)');
ガンマ補正された色空間は、予想どおり、線形色空間よりも迅速に明るくなります。
線形 RGB イメージへの sRGB ガンマ補正の適用
最小限に処理された線形 RGB 強度を含むイメージ ファイルを開きます。
A = imread('foosballraw.tiff');
イメージ データは、黒のレベルを補正し、ピクセルごとに 16 ビットにスケーリングした後の生のセンサー データです。関数demosaic
を使用して、強度を内挿して色を再構成します。カラー フィルターの配列パターンは RGGB です。
A_demosaiced = demosaic(A,'rggb');
イメージを表示します。画面上に全体が表示されるようにイメージを縮小するには、オプションの初期倍率を 100 未満の値に設定します。
figure imshow(A_demosaiced,'InitialMagnification',25) title('Sensor Data Without sRGB Gamma Correction')
線形 RGB 色空間にあるため、イメージが暗く表示されます。sRGB 規格に従ってイメージにガンマ補正を適用し、値を倍精度で保存します。
A_sRGB = lin2rgb(A_demosaiced,'OutputType','double');
オプションの倍率を設定して、ガンマ補正後のイメージを表示します。
figure imshow(A_sRGB,'InitialMagnification',25) title('Sensor Data With sRGB Gamma Correction');
ガンマ補正されたイメージは、予想どおり、線形イメージよりも明るく見えます。
入力引数
A
— 線形 RGB カラー値
数値配列
線形 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 = lin2rgb(I,ColorSpace="adobe-rgb-1998")
は、Adobe RGB (1998) 規格に基づいてイメージ I
にガンマ補正を適用します。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: B = lin2rgb(I,"ColorSpace","adobe-rgb-1998")
は、Adobe RGB (1998) 規格に基づいてイメージ I
にガンマ補正を適用します。
ColorSpace
— 出力イメージの色空間
"srgb"
(既定値) | "adobe-rgb-1998"
| "prophoto-rgb"
出力イメージの色空間。"srgb"
、"adobe-rgb-1998"
、または "prophoto-rgb"
を指定します。
データ型: string
| char
OutputType
— 出力 RGB 値のデータ型
"double"
| "single"
| "uint8"
| "uint16"
出力 RGB 値のデータ型。"double"
、"single"
、"uint8"
、または "uint16"
を指定します。既定では、出力データ型は A
のデータ型と同じです。
データ型: string
| char
アルゴリズム
sRGB 規格を使用したガンマ補正
線形 RGB 三刺激値を sRGB 三刺激値に変換するためのガンマ補正は、以下のパラメトリック曲線によって定義されます。
f(u) = -f(-u), u < 0
f(u) = c ⋅ u, 0 ≤ u < d
f(u) = a ⋅ uɣ + b, u ≥ d,
ここで u は以下のパラメーターを持つカラー値を表します。
a = 1.055
b = –0.055
c = 12.92
d = 0.0031308
ɣ = 1/2.4
Adobe RGB (1998) 規格を使用したガンマ補正
線形 RGB 三刺激値を Adobe RGB (1998) 三刺激値に変換するためのガンマ補正は、以下の単純なべき乗関数を使用します[2]。
v = uɣ, u ≥ 0
v = -(-u)ɣ, u < 0,
ここで
ɣ = 1/2.19921875
ProPhoto (ROMM RGB) 規格を使用したガンマ補正
線形 RGB 三刺激値を ProPhoto 三刺激値に変換するためのガンマ補正は、以下のパラメトリック曲線によって定義されます[3]。
f(u) = 0, u < 0
f(u) = u/16, 0 ≤ u < 16*Et
f(u) = u1/1.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 で導入R2022b: ProPhoto (ROMM RGB) 色空間のサポート
lin2rgb
は、sRGB 色空間や Adobe RGB 1998 色空間よりも色域の広い ProPhoto (ROMM RGB) 色空間をサポートするようになりました。ProPhoto 色空間を使用するには、名前と値の引数 ColorSpace
を "prophoto-rgb"
として指定します。
参考
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)