Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのscikit-learnで画像をRGBからグレースケールに変換する方法


Scikit-learn(通称:sklearn)は、Pythonで機械学習アルゴリズムを実装するために広く利用されているライブラリです。

画像をあるカラースペースから別のカラースペースへ変換する処理は、変換後のカラースペースがその後の操作にとってより適した入力となるように行われるのが一般的です。具体的には、色相・輝度・彩度などの分離などが挙げられます。画像がRGB表現で扱われている場合、色相や輝度の属性はR(赤)・G(緑)・B(青)の3チャンネルの線形結合として表されます。

RGBカラースペースの画像をグレースケールに変換する際は、各ピクセルの値が赤・緑・青のピクセル値の重み付き和として計算されます。その式は以下の通りです。

Y = 0.2125 R + 0.7154 G + 0.0721 B

これらの重みが特別に定められているのは、3つの値に等しい重みを与える場合と比べて、CRT蛍光体が人間の知覚における赤・緑・青の色の感じ方をより正確に反映できるためです。

それでは、実際にRGB画像をグレースケール画像へ変換する方法を見ていきましょう。

サンプルコード

from skimage import io
import matplotlib.pyplot as plt
from skimage import data
from skimage.color import rgb2gray
from skimage import data
path = "path to puppy_1.JPG"
orig_img = io.imread(path)
grayscale_img = rgb2gray(orig_img)
fig, axes = plt.subplots(1, 2, figsize=(8, 4))
ax = axes.ravel()
ax[0].imshow(orig_img)
ax[0].set_title("Original image")
ax[1].imshow(grayscale_img, cmap=plt.cm.gray)
ax[1].set_title("Grayscale image")
fig.tight_layout()
plt.show()

出力結果

Pythonのscikit-learnで画像をRGBからグレースケールに変換する方法

コードの解説

  • 必要なライブラリをインポートします。
  • 画像が保存されているパスを定義します。
  • 「imread」関数を使って指定したパスにアクセスし、画像を読み込みます。
  • 「imshow」関数を使って、画像をコンソール上に表示します。
  • 「rgb2gray」関数を使って、画像をRGBカラースペースからグレースケールカラースペースへ変換します。
  • matplotlibライブラリを使ってデータをプロットし、元の画像とグレースケール変換後の画像を並べて表示します。
  • 結果はコンソール上に出力されます。
  1. Pythonのscikit-learnを使って画像の輪郭を検出する方法

    scikit-learn(通称:sklearn)は、機械学習アルゴリズムを実装するために使用されるPythonのライブラリです。オープンソースとして公開されているため、無料で利用できます。このライブラリは、NumPy・SciPy・Matplotlibという3つのライブラリを基盤として構築されています。画像から輪郭を抽出する際には、「マーチングスクエア法(marching squares)」と呼ばれる手法が用いられます。具体的には、skimageライブラリのmeasureモジュールに含まれる「find_contours」関数を使用します。この関数では、配列内の値が線形補間されるため、出力画像にお

  2. Pythonでscikit-learnライブラリを使って画像の解像度を取得する方法

    はじめに:データ前処理とはデータ前処理とは、さまざまなリソース(または単一のリソース)から収集したすべてのデータを、共通のフォーマットや統一されたデータセットにまとめる作業のことです。現実世界のデータは決して完璧ではないため、欠損セル、エラー、外れ値、列間の不整合などが含まれている可能性があります。また、画像が正しく配置されていなかったり、不鮮明だったり、ファイルサイズが過大だったりすることもあります。前処理の目的は、こうした不整合やエラーを取り除き、データを分析可能な状態に整えることにあります。画像の解像度を取得するには、組み込み関数「shape」を使用します。画像を読み込むと、そのピクセル