第19回LSIデザインコンテスト・イン沖縄  設計仕様書 - 3-2

3-2. アルゴリズム

以下にMATLAB®ベースで設計を行ったプログラムをもとに,テンプレートマッチングを用いた人物検出のアルゴリズムを示す.

なお,開発環境としてMATLAB®R2012a(7.14.0.739)の環境下で作成,検証を行った.


  • m ファイル:Template_matching.m
  • 被探索画像:original.png
  • テンプレート画像:template.png

  • (1)入力
    被探索画像とテンプレート画像を読み込む.

    (2)グレースケール化・二値化処理
    カラー画像のままでのマッチング処理は困難である(256^3通りの基準値が存在する)ため,以下の方法で被探索画像とテンプレート画像をグレースケール変換し,その後二値化を行う.

    ・グレースケール化
    画像のグレースケール化にはNTSC系加重平均法を用いる.NTSC系加重平均法とは,カラー画像から256階調グレースケール画像へ変換する方法のひとつで,以下の式で計算できる.

    Y=0.298912*R+0.586611*G+0.114478*B


    この式の係数は,色に対する人間の視感的特性から実験的に求められたものである.

    ・二値化
    グレースケール画像を二値化するために,まず閾値を決定する.被探索画像のヒストグラムを求め, 輝度の低い側にあるピクセルが全ピクセル数の半分になる輝度値を閾値として用いる.画素値が閾値よりも小さければ白,大きければ黒とみなす.

    (3)マッチング処理
    テンプレートマッチングによりSADを算出する.(2)で二値化処理を行ったため,SADはテンプレート画像と被探索画像の画素値の排他的論理和(XOR)の総和によって表すことができる. 左上から順に右下までテンプレート画像を移動させ,それぞれの箇所でのSADを求める.

    (4)マッチング箇所の描画
    得られたSADを閾値と比較し,SADが閾値より低い箇所を赤枠線で囲む.今回は閾値を1200とした.すなわち画素値の異なるピクセル数が1200ピクセル以内であれば一致しているとみなす.

    (5)出力
    マッチング箇所が赤枠線で囲われた画像データを出力する.


    これらのアルゴリズムをフローチャートとして図1に示す.

    Figure 1

    図1:テンプレートマッチングのフローチャート

    Reference

    [1] CodeZine 開発者のための実装系Webマガジン “テンプレートマッチング法を用いた顔画像の検出”
        http://codezine.jp/article/detail/86

    [2] 中山 謙二,金沢大学“テンプレートマッチングによる顔検出”
        http://leo.ec.t.kanazawa-u.ac.jp/~nakayama/

    <<Back                 Next>>