色ではなく、HOGで画像の特徴量をつくってみます。
hogを可視化してみる
画像用意
from skimage.data import chelsea import matplotlib.pyplot as plt img = chelsea() plt.imshow(img)
hogとhog画像の取得。
引数として方向、セルあたりのピクセル数、ブロックあたりのセル数、マルチチャンネルか(今回はRGBなのでTrue)を渡します。
from skimage.feature import hog from skimage import data, exposure #hogとhog画像の取得 fd, hog_image = hog( img, orientations=8, pixels_per_cell=(16, 16), cells_per_block=(10, 10), visualize=True, multichannel=True, feature_vector=True ) #可視化 plt.imshow(hog_image,cmap=plt.cm.gray)
見えてる。
分類なんかで使う時は別に画像はいらないので、visualize=False
にするとfd
だけ帰ってきます。
#特徴量ほしい
fd
1dじゃない状態で欲しい場合
feature_vector=True
だと1dにされた状態ですが、ブロック/セル/オリエントごとに欲しい場合はFalse
にして渡します。
fd = hog( img, orientations=8, pixels_per_cell=(16, 16), cells_per_block=(10, 10), visualize=False, multichannel=True, #こいつ feature_vector=False fd.shape #(9, 19, 10, 10, 8)
このとき配列は最初から、ブロック列、ブロック行、セル列、行セル、方向を表しています。
上だとブロックは919,1ブロックは10セル10セルで計算される方向数は8方向を表しています。
このあたりパラメータとして渡した、下記と連動しています。
#方向数 orientations=8, #セルあたりのピクセル数 pixels_per_cell=(16, 16), ブロックあたりのセル数 cells_per_block=(10, 10)