na_o_ysのブログ

プログラミングのメモ

どうぶつしょうぎの盤面認識アプリを作る (4) 駒の認識

(1) 準備編
(2) 勉強編
(3) 盤面の正規化
(4) 駒の認識


正規化された入力画像から、各駒の位置を取得します。

  • 駒 (先手ゾウ) の位置を特定
    f:id:na_o_s:20150726020835p:plain:h500

概略

  • 駒の画像を用意する
  • テンプレートマッチングで駒の位置を特定する
    • 駒が傾いている場合を考慮して、複数の角度でマッチングする

駒画像

f:id:na_o_s:20150726020955p:plainf:id:na_o_s:20150726021051p:plainf:id:na_o_s:20150726021058p:plainf:id:na_o_s:20150726021109p:plainf:id:na_o_s:20150726021117p:plain

テンプレートマッチング

真っ直ぐに置かれている駒については、正しく認識されますが、盤に対して傾いている駒が認識されません。

そこで、-70 度 〜 +70 度の 2 度刻み回転した駒画像生成し、マッチングさせます。

入力画像の歪みが小さければ、これで高い精度でマッチングできるようです。

棋譜データへの変換

取得したデータを別プログラムに流し込むため、文字列データに変換します。

今回の入力画像からは次の配列が得られます。

[['k' '' 'z']
 ['l' 'h' '']
 ['' 'H' '']
 ['Z' 'L' 'K']]