名称 |
MIRS1001 ダイレクションボード認識 |
番号 |
MIRS1001-SOFT-0005 |
最終更新日:2011.2.28
版数 |
更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2010.10.4 |
川合 |
古橋 |
初版 |
A02 |
2011.2.28 |
川合 |
古橋 |
完成 |
- 目的
- 概要
- テンプレートマッチングについて
- テンプレートマッチングの弱点
- フローチャート
- 工夫点
- 改良点
- 結果
- まとめ
- 目的
OpenCV標準パッケージにある関数を利用し、ダイレクションボードにある数字を認識する。
- 概要
数字認識にOpenCVのテンプレートマッチング(cvMatchTemplate)を利用する。
各数字の画像を準備し、テンプレートマッチングをすることにより各情報を取得する。
その各情報から、ダイレクションボードにある数字を認識する。
- テンプレートマッチングについて
テンプレート画像と呼ばれる探索対象となるオブジェクト等の画像と, 探索領域となる画像を入力とする. テンプレート画像を少しずつずらしながら,探索領域内の対象領域との比較を行う.比較に用いられる相関関数には,計算量を考慮して,分散や平均を仮定した近似式が用いられることが多い.これにより、画像中の値の最大,最小値,およびその位置を調べることができる。
- テンプレートマッチングの弱点
テンプレートマッチングの弱点は誤認識の確率が高いことである。例えば3と5や、3と9など、似ている数字を勘違いしやすいことである。誤認識の要因として、撮った画像の大きさや傾きがある。
また、テンプレートマッチングの計算は時間がかかる。演習室等のパソコンでの処理は気にならない程度だが、MIRSでは非常に長くなる。
*実際にプログラムの処理時間を計測したところ、MIRSでは約30倍もの時間がかかった。
- フローチャート
1.ダイレクションボードを撮る
2.撮った画像を2値化処理
3. 2値化処理した画像とテンプレート用画像の読み込み
4.撮った画像を角度補正
5.画像をリサイズ
6.0から9までの数字画像をテンプレートマッチング
7.相互相関係数が大きければ相互相関係数と座標を更新
8.テンプレート後に、各パラメーターにより数字を認識する。
工夫点
○認識率を上げるために
撮った画像を、-1.5度(358.5度)から1.5度まで角度を補正する。更に、撮った画像を30%から40%までリサイズする。これらの角度補正と画像サイズの補正をすることで、各数字の最も良い相互相関係数を得ることができる。
○処理を高速化するために
プログラムに初期の段階ではループ内に無駄な処理があった。まずは無駄な処理を減らした。次に、switch文やif文を減らした。次にテンプレートマッチングの計算量を減らす。そのためにテンプレート用画像を小さくして、それに伴い撮った画像も小さくリサイズする。
アルゴリズムの方面について。ダイレクションボードでは1から8までの数字は上にあるので画像を上の部分だけ切り取り、1から8だけテンプレートマッチング。下の部分は9のみをテンプレートマッチングする。そうすることで、計算量を減らすことができる。
○誤認識した場合
左右で最も大きい相互相関係数が0.85以下なら、0にする。そうすることで誤認識率を下げる。誤認識した場合、どっちの数字が認識できなかったか調べて、返り値を変える。メインプログラムで、誤認識した返り値の場合、認識できなかったほうを向くプログラムに処理を渡す。
改良点
1班のMIRSでは正体補正後の撮った画像は、ダイレクションボードに近かったために大きくなってしまった。
そのために、下の画像を認識させるプログラムを省略した。
そのために、1班のMIRSは上の画像しか認識できなかった。
結果
MIRSが正面にいれば認識率はほぼ100%。数字部分が外に出なければ、認識率は90%を超えた。
当たり前だが、撮った画像内に数字が入っていなければ認識率は0%。
処理時間を気にせず、撮った画像に数字が入っていれば、認識率を100%近くまで高めることが可能だった。
一つの数字だけなら認識率100%も可能かもしれない。
まとめ
初期の段階で、誤認識率の高さと処理の遅さが問題だった。
しかし、上記のような工夫をすることで解決した。
認識率の高さと処理時間は比例するので、MIRSに適したパラメーターを設定するのが大変だった。
沼津工業高等専門学校 電子制御工学科