Python

【OpenCV】色空間HSVとグレースケール

ここでは、色の表し方「色空間」と、グレースケール変換についてまとめています。

 

OpenCV の色空間「HSV」

色空間とは、色の表し方です。
画像処理の基本知識で紹介した最も一般的な色空間「RGB」の他に、「HSV」という色空間があります。

色空間HSV

HSVは以下の3要素で表現されます。

  • 色相:H(Hue):0~359
  • 彩度:S(Saturation):0~100%
  • 明度:V(Value):0~100%

ポイント

HSVのメリットは、「色」自体を表現しやすいということ。

OpenCV で HSV を扱う場合は、以下の範囲で画素値が表されます。

  • 色相:H:0~179
  • 彩度:S:0~255
  • 明度:V:0~255
SANACHAN
SANACHAN
それぞれの値域はオリジナルと異なるため、注意が必要ですね。

 

OpenCV でのグレースケール

グレースケールは、色の強度という1つの情報で画像を表現します。

RGB:3つの情報で画像を表現

RGB画像

グレースケール:色の強度だけで画像を表現

グレースケール

RGB画像からグレースケール画像を生成するには、以下の式を使って計算します。

 グレースケール計算式
Gray = (0.2989 × Red) + (0.5870 × Green) + (0.1140 × Blue)

 

OpenCV で色空間を変換

これまで、画像の表現方法として HSV とグレースケールについて紹介しましたので、
OpenCV を使って RGB 画像から変換する方法をご紹介いたします。

OpenCV の標準APIである cvtColor(<画素値の numpy 配列>, <変換種別>) で簡単に変換できます。

  • 1~3行目:元画像を読み込んでいます
  • 4行目:cvtColor() API を使用して、RGBからHSVの色空間へ変換しています
    ※OpenCV では BGR の順で画素を表すため、BGR2HSV という名称になっています
  • 5行目:cvtColor() API を使用して、RGBからグレースケールの色空間へ変換しています
  • 6行目以降:画像を表示します
cvtColorの結果

cvtColorの結果表示

 

Tips:おまけ

OpenCV では、画像を読み込む際に第2引数に 0 を指定することで
グレースケール画像として読み込むことができます。

 グレースケール読み込み
img_gray = cv2.imread("sample.jpg", 0)

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Python
-,