[scikit-image] 42. HoG(Histogram of Oriented Gradients)による画像の特徴抽出(skimage.feature hog)

python

はじめに

HoG(Histogram of Oriented Gradients)は、画像認識やコンピュータビジョンの分野で広く使用される特徴抽出手法です。この手法は、画像内の勾配方向のヒストグラムを計算することで、物体の形状や輪郭を効果的に捉えることができます。scikit-imageライブラリのskimage.feature.hog関数を使用することで、Pythonでこの手法を簡単に実装できます。

この記事では、HoGを使用した画像特徴抽出の基本的な概念と、scikit-imageでの実装方法について解説します。また、実際の画像データに対してHoGを適用し、その結果を可視化する方法も紹介します。

コード

コードをダウンロード

解説

モジュールのインポート

画像データの読み込み

HoG

このコードは画像からHoG特徴量を抽出しています。各パラメータの意味は以下の通りです:

  • image: 特徴抽出を行う入力画像
  • orientations=8: 勾配方向を8方向に量子化(方向の分割数)
  • pixels_per_cell=(16, 16): 各セルのサイズを16×16ピクセルに設定
  • cells_per_block=(2, 2): 1ブロックあたり2×2個のセルで構成
  • visualize=True: 可視化用のHoG画像も返す設定
  • multichannel=True: カラー画像(複数チャンネル)として処理

返り値は2つあり:

  • fd: 特徴ベクトル(feature descriptor)
  • hog_image: HoG特徴の可視化画像

HoGは画像内の勾配方向の分布を捉えることで、物体検出や画像認識に役立つ特徴量を抽出します。

画像の表示

まとめ

本記事では、scikit-imageのskimage.feature.hog関数を使用したHoG(Histogram of Oriented Gradients)による画像特徴抽出について解説しました。HoGは画像内の勾配方向の分布を捉えることで、物体検出や画像認識タスクに有用な特徴量を抽出できます。

skimage.feature.hog関数の主要なパラメータ(orientations、pixels_per_cell、cells_per_block)の役割と設定方法を理解することで、様々な画像認識タスクに適した特徴抽出が可能になります。また、抽出した特徴量を機械学習アルゴリズムと組み合わせることで、効果的な画像分類システムを構築することができます。

参考

Histogram of Oriented Gradients — skimage 0.25.2 documentation
http://lang.sist.chukyo-u.ac.jp/Classes/ComputerVision/KeypointDescription.html#HOG%E8%A8%98%E8%BF%B0%E5%AD%90
https://www.jstage.jst.go.jp/article/itej/64/3/64_3_322/_pdf/-char/ja

コメント