【画像処理】RGBカラーからグレースケールへ変換する計算式

RGBカラー画像をグレースケールへ色空間変換する原理や特徴、計算式についてまとめました。

RGBからグレースケールへの変換

グレースケール変換とは、以下のようにカラー画像をモノクロ調に変換する処理です。

→変換→

単に「写真をレトロな雰囲気にしたい」という画像加工的な使い方でも用いられますが、以下のとおり画像解析でも重要なテクニックとなります。

【ポイント】
画像中から顔を探索するなど、計算コストの重い処理を行う場合、カラー画像(24ビット、RGB)をグレースケール画像(8ビット)に変換することで計算効率を向上させることが多いです。
(1画素あたりのデータ量が24bitから8bitとなるため、単純に考えると処理速度は3倍になります)

→変換→ →顔を探索→

参考:【Python版OpenCV】Haar Cascadeで顔検出、アニメ顔検出、顔にモザイク処理

カラー画像の画素値をグレースケールに変換する場合、RGBのいずれか1つの要素値を抽出、RGBの値の平均値を用いるなど様々な方法があります。

解説動画

変換式の例(加重平均法)

代表例としては、RGB各要素に一定の重み付けをして平均をとるNTSC(テレビ放送規格)加重平均法があります。計算式は以下のとおりです。

$$ Gray = (Red\times 0.30) + (Green\times 0.59) + (Blue\times 0.11) $$

Red(赤)、Green(緑)、Blue(青)はRGBカラー画像の画素値、Grayはグレースケール画像の画素値です。

計算例

例えば、Red(0, 0)=255, Green(0, 0)=12, Blue(0, 0)=35のとき、Gray(0, 0)の画素値は以下のように87となります。

$$ Gray(0, 0)=Red(0, 0)\times 0.3 + Green(0, 0)\times 0.59 + Blue(0, 0)\times 0.11 $$
$$ =(255 \cdot 0.3) + (12 \cdot 0.59) + (35 \cdot 0.11)=87.43\simeq 87 $$

グレースケール変換のアルゴリズムについては、以下ページで詳細を解説しています。

【画像処理】RGBカラーからグレースケールへ変換する計算式
RGBカラー画像をグレースケールへ色空間変換する原理や特徴、計算式についてまとめました。

プログラムでの実装例

Python版OpenCVで画像データをRGBからグレースケールに変換するプログラムを実装する方法を以下ページで解説しています。

【Python/OpenCV】グレースケール変換(cv2.cvtColor)
PythonとOpenCVを用いて画像をグレースケール変換する方法をソースコード付きで解説します。

その他の画像処理アルゴリズムについては、以下ページで解説しています。

【画像処理超入門】アルゴリズムの仕組みと実装方法を簡単に解説
画像処理超アルゴリズムの仕組みとプログラミングによる実装方法を簡単に解説します。
この記事を書いた人
西住技研

在学中はシステム制御理論や画像処理、機械学習を専攻分野として研究していました。就職後は、プログラミング(Python)を活用したデータ分析や作業自動化に取り組み、現在に至ります。そこで得たノウハウをブログで発信しています。
YoutubeX(旧Twitter)でも情報発信中です

西住技研をフォローする
画像処理

コメント