【Haar-Like特徴量】原理と計算式・高速化

Haar-Like特徴量の基本的な原理や仕組みについてまとめました。

【はじめに】Haar-Like特徴量とは

Haar-Like特徴では、次のような矩形領域のパターンを設定し、白領域に対応する画素の和と、黒領域に対応する画素の和の差を特徴量とします。

画素値をそのまま用いる場合と比べて、照明条件の変動やノイズの影響を受けにくくなる利点があり、顔検出などに使われています。

例えば、顔の目の部分は、「目玉が暗い」「目元は明るい」というのが大体誰でも共通しています。
このような特徴をたくさん取ることで顔全体の特徴を捉えていきます。

【アルゴリズム】Haar-Like特徴量の計算

①Haar-like特徴に用いるパターンを複数用意します。

②入力画像の任意の位置に探索窓を配置します。

③探索窓の任意の位置に矩形領域を配置します。

④矩形領域に任意のパターンを設定します。

⑤パターンの黒領域、白領域それぞれの画素値の和の平均A_1, A_2を求めます。
そして、それらの差を特徴量Hとします。

(1)   \begin{eqnarray*} H= A_1-A_2 \end{eqnarray*}

画素値の和の計算には積分画像を用いること処理を高速化します。

積分画像の原理・計算式・高速化
この記事では、積分画像の基本原理や計算式・特徴・例題についてまとめました。

⑥矩形領域の位置・サイズ・パターンを変えて⑤の計算を繰り返します。

⑦検索窓の位置を変えて②~⑥を繰り返します。

【高速化】ブースティング(Boosting)

探索窓のサイズにもよりますが、矩形領域の位置・サイズ・パターンの組み合わせの総数は膨大です。
したがって、計算した特徴量全てをそのまま使って顔検出などに利用すると、計算時間が膨大になってしまいます。
そこで、学習によって決定した重要度が高い特徴量のみを使うことで、計算時間を短縮します。
これをブースティング(Boosting)といいます。

【例】
入力画像のサイズが24×24[px]の場合・・・特徴量候補は約18万個
ブースティング・・・重要度が高い数百~数千個の特徴量のみを選択
【機械学習】ブースト(boost・AdaBoost)の原理・計算式
機械学習で識別器の作成などに使われるブースト(boost・AdaBoost)のアルゴリズムや計算についてまとめました。
【画像処理入門】アルゴリズム&プログラミング
この記事では、画像処理における基本的なアルゴリズムとその実装例(プログラム)についてまとめました。

コメント