株式会社インデペンデンスシステムズ横浜システム開発エンジニアの西田五郎が運営しております。その他新規開発案件のご依頼をお待ちしております。2015年5月1日OpenCVでのORBアルゴリズムによる特徴点抽出とマッチングの処理についての2回目です。C++コンソールアプリでORBによる特徴点抽出の基本的と思われる処理を作成しました。今回はGUIを使ってマッチング処理を試してみました。処理としては、1枚の画像を最大10枚の画像とORBによる特徴点抽出とマッチングを行い、10枚の中で有効なマッチングの数が多かった画像とのマッチング画像を表示します。今回テストした内容です。数字の画像(以下は例として2の画像)を用意しました。Pゴシックのサイズ250のフォントです。これで同じ画像の2を0から9までと比較してみます。同じ2の画像で最大の有効なマッチングの個数が得られます。今回のプログラムで以下のように実行します。0から9までの画像を同じディレクトリに用意します。ここでは、C:\image配下に用意しました。プログラムを以下のように実行していきます。0から9までの画像の場所を指定します。ここでは初期設定のC:\imageのままです。画像の種類も初期設定のJPEGです。元画像を読み込みます。ここで元画像というのは0.jpgから9.jpgの画像のことです。対象画像を読み込みます。ここでは2ですが、もちろんどれでもいいです。マッチング実行ボタンで実行します。有効なマッチング数が最大のマッチング画像が表示されます。実際のマッチングの結果はデバッグ画面に表示するようにしています。デバッガを起動して以下のように出力画面に表示されます。実際の数値は以下です。それぞれ70個の特徴点が抽出され、ハミング距離がしきい値内の個数が以下となりました。6しきい値を1.0にしてみました。似ていると評価される点に絞るという意味合いです。1しきい値を3.0にしてみました。多くの特徴点を有効にしています。11この数字が何を意味しているかというと、このフォントでこの大きさで2とどれが似ているかということだと思うのですが、いかがでしょうか。確かに3や8の方が1や4と比較して似ているとは思います。次にORBで得意とされる回転を試します。