PythonでRGB色空間を別の色空間(HSV)へ変換する方法を解説
画像をある色空間から別の色空間へ変換する処理は、一般的に、変換後の色空間がその後の画像処理にとってより扱いやすい入力となるように行われます。具体的には、色相・輝度・彩度といった要素を個別に分離して操作したい場合などが挙げられます。
RGB表現で画像を扱う場合、色相や輝度の属性はR(赤)・G(緑)・B(青)の3チャンネルの線形結合として表現されるため、特定の属性だけを取り出すことが難しくなります。
一方、HSV表現(Hは色相:Hue、Sは彩度:Saturation、Vは明度:Value)で画像を表すと、色の情報と明るさの情報を独立したチャンネルとして扱えるようになります。
ここでは、Pythonのscikit-imageライブラリを使って、RGB色空間をHSV色空間へ変換する例を紹介します。scikit-imageが未インストールの場合は、事前にpip install scikit-imageを実行しておいてください。
サンプルコード
import matplotlib.pyplot as plt
from skimage import data, io
from skimage.color import rgb2hsv
path = "path to puppy_1.JPG"
img = io.imread(path)
rgb_img = img
hsv_img = rgb2hsv(rgb_img)
value_img = hsv_img[:, :, 2]
fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(8, 2))
ax0.imshow(rgb_img)
ax0.set_title("Original image")
ax0.axis('off')
ax1.imshow(value_img)
ax1.set_title("Image converted to HSV channel")
ax1.axis('off')
fig.tight_layout()
plt.show()
出力結果

左側に元のRGB画像、右側にHSV色空間へ変換した画像の明度(Value)チャンネルがグレースケールで表示されます。
コードの解説
- 必要なライブラリ(matplotlib、scikit-image)をインポートします。
- 読み込む画像が保存されているパスを定義します。
- 「imread」関数を使用して、指定したパスから画像を読み込みます。
- 「rgb2hsv」関数を使用して、画像をRGB色空間からHSV色空間へ変換します。
- HSV画像の3番目のチャンネル(V:明度)を「hsv_img[:, :, 2]」として取り出します。
- matplotlibライブラリを使用してデータをプロットし、元の画像とHSV変換後の画像を並べて表示します。
- 最終的な結果がコンソール上に出力されます。
このように、rgb2hsv関数を使えばわずか数行のコードでRGB画像をHSV色空間へ変換でき、色相や彩度、明度を個別に分析・加工することが可能になります。
-
Pythonのscikit-learnで画像をRGBからグレースケールに変換する方法
Scikit-learn(通称:sklearn)は、Pythonで機械学習アルゴリズムを実装するために広く利用されているライブラリです。 画像をあるカラースペースから別のカラースペースへ変換する処理は、変換後のカラースペースがその後の操作にとってより適した入力となるように行われるのが一般的です。具体的には、色相・輝度・彩度などの分離などが挙げられます。画像がRGB表現で扱われている場合、色相や輝度の属性はR(赤)・G(緑)・B(青)の3チャンネルの線形結合として表されます。 RGBカラースペースの画像をグレースケールに変換する際は、各ピクセルの値が赤・緑・青のピクセル値の重み付き和として計算
-
Pythonでscikit-learnライブラリを使って画像の解像度を取得する方法
はじめに:データ前処理とはデータ前処理とは、さまざまなリソース(または単一のリソース)から収集したすべてのデータを、共通のフォーマットや統一されたデータセットにまとめる作業のことです。現実世界のデータは決して完璧ではないため、欠損セル、エラー、外れ値、列間の不整合などが含まれている可能性があります。また、画像が正しく配置されていなかったり、不鮮明だったり、ファイルサイズが過大だったりすることもあります。前処理の目的は、こうした不整合やエラーを取り除き、データを分析可能な状態に整えることにあります。画像の解像度を取得するには、組み込み関数「shape」を使用します。画像を読み込むと、そのピクセル