Main Content

rgb2gray

RGB イメージまたはカラーマップをグレースケールに変換

説明

I = rgb2gray(RGB) は、トゥルーカラー イメージ RGB をグレースケールイメージ I に変換します。関数 rgb2gray は、輝度を保持したまま色相情報と彩度情報を削除することによって、RGB イメージをグレースケールに変換します。Parallel Computing Toolbox™ がインストールされている場合は、この rgb2gray による変換を GPU で実行できます。

newmap = rgb2gray(map) は、map に対応するグレースケール カラーマップを返します。

すべて折りたたむ

RGB イメージを読み取って表示し、グレースケールに変換します。

サンプル ファイル peppers.png を読み取り、RGB イメージを表示します。

RGB = imread('peppers.png');
imshow(RGB)

RGB イメージをグレースケール イメージに変換して表示します。

I = rgb2gray(RGB);
figure
imshow(I)

RGB カラーマップを使用したインデックス付きイメージを読み取ります。その後、カラーマップをグレースケールに変換します。

サンプル ファイル corn.tif を読み取ります。このファイルは RGB カラーマップを使用したインデックス付きイメージです。

[X,map] = imread('corn.tif');

イメージを表示します。

imshow(X,map)

RGB カラーマップをグレースケール カラーマップに変換してイメージを再表示します。

newmap = rgb2gray(map);
imshow(X,newmap)

入力引数

すべて折りたたむ

トゥルーカラー イメージ。m×n×3 の数値配列として指定します。

関数 rgb2gray は、データ型が double および single のトゥルーカラー イメージについて、値の範囲が [0, 1] であると想定します。イメージに [0, 1] の範囲外の値がある場合は、関数 rescale を使用して想定される範囲に値を再スケーリングできます。

Parallel Computing Toolbox がインストールされている場合は、RGBgpuArray オブジェクトにすることもできます。

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

カラーマップ。値の範囲が [0, 1] の c 行 3 列の数値行列として指定します。map の各行は、カラーマップの各色を構成する赤、緑、青の成分を指定する RGB 3 成分です。

Parallel Computing Toolbox がインストールされている場合は、mapgpuArray オブジェクトにすることもできます。

データ型: double

出力引数

すべて折りたたむ

グレースケール イメージ。m 行 n 列の数値配列として返されます。

Parallel Computing Toolbox がインストールされている場合は、IgpuArray オブジェクトにすることもできます。

グレースケール カラーマップ。値の範囲が [0, 1] の c 行 3 列の数値行列として返されます。newmap の 3 つの列が同一であるため、map の各行は単一の強度値を指定します。

Parallel Computing Toolbox がインストールされている場合は、newmapgpuArray オブジェクトにすることもできます。

データ型: double

ヒント

  • 入力イメージがグレースケール イメージである場合、関数 rgb2gray はエラーを返します。エラーを回避するには、代わりに関数 im2gray を使用できます。グレースケール イメージを入力として受け入れることができ、変更せずに返すことを除いて、関数 im2grayrgb2gray と同じです。関数 im2gray を使用する場合は、次の条件付きステートメントのようなコードは不要になります。

    if ndims(I) == 3
        I = rgb2gray(I);
    end

アルゴリズム

rgb2gray は、R 成分、G 成分、B 成分の重み付き和を計算することによって、RGB 値をグレースケール値に変換します。

0.298936021293775 * R + 0.587043074451121 * G + 114020904255103 * B 

rgb2gray のグレースケール値の計算に使用する係数は、小数点以下 3 桁に丸めてから Rec.ITU-R BT.601-7 で輝度 (E'y) を計算する場合に使用する係数と同一です。Rec.ITU-R BT.601-7 は次の式を使用して E'y を計算します。

0.299 * R + 0.587 * G + 0.114 * B

拡張機能

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入

参考

| | (Image Processing Toolbox) | (Image Processing Toolbox) | | (Image Processing Toolbox)