Pythonで画像を扱う場合、PIL
や生numpy、opencv
などの選択肢がありますが、今回は比較的扱いやすいskimageを試してみます。
画像はそのままでは機械学習に用いるのが難しく、特徴を抽出する手法があり、今回はRGBを取り出してみます。 (もはや深層学習でその辺をすっとばす、という方が主流泣きはしますが、、、)
対象の画像の用意
skimageに含まれる猫の画像を使います
from skimage.data import chelsea import matplotlib.pyplot as plt img = chelsea() plt.imshow(img)
RGBのヒストグラムを作成
exposure.histgram
で、0~255のRGB成分の256通りの区切りと、その値を取得できます。ので、集計せずに折れ線で可視化します。
from skimage import exposure #RGBを順に取得 for i,c in enumerate(['r','g','b']): #...はnumpyの省略記号 img_hist, bins = exposure.histogram(img[...,i], source_range='dtype') #横軸=bins,縦軸 = 最大を1にして表示 plt.plot(bins, img_hist / img_hist.max(),c=c)
どうやら無事取り出せたようです。
この特徴量を用いてクラスタリングなどにつなげることができるようになります。