このリポジトリを動かす
リポジトリの概要
halconのエンジニアが書いたマシンビジョンアルゴリズムとアプリケーション、
317ページ3.11.5を参照して、halconの形状ベースのマッチングを実装してみる。
準備
- docker kinetic image 実行
docker ros kinetic https://qiita.com/seigot/items/9a3a101dbbd7828ee00b
docker run -it --rm -p 6080:80 ct2034/vnc-ros-kinetic-full
- その中にcloneしてtest.cppのテストフォルダへのパスを修正 ビルド
実行結果
- original
test.cppに3種類のサンプルがあるみたい,上はangle_test()関数が実行されている
- scale_test()を実行
結果
- noise_test()実行
結果
- angle_test() : モードを"test"じゃなく"train"に変更 ※ 引数を ("test", True) から ("train", True)にする
結果
回転用の,テンプレートデータを作成しているみたい
- scale_test()でモードをtestからtrainに変更
以下のような出力がされた
empl_id: 0
templ_id: 1
have no enough features, exaustive mode
templ_id: 2
have no enough features, exaustive mode
templ_id: 3
templ_id: 4
templ_id: 5
templ_id: 6
templ_id: 7
templ_id: 8
templ_id: 9
...
縮尺を変えたデータセットを作成??
- noise_test() testからtrainに変更
結果
こちらも回転用のテンプレートデータセットを作成しているみたい
- 画像を変えてみる
angle_test()の画像を変更
train.pngを
test.pngを
プログラムを以下のように変更
trainモードで形状データセット作成 => testモードでマッチング処理実行
結果
探索できた
探索にかかった時間は,0.2sくらい,すごい!
construct response map
elasped time:0.0653973s
templ match
elasped time:0.0182259s
elasped time:0.0861984s
matches.size(): 41
match.template_id: 0
match.similarity: 100
test.pngを変えてみた
結果
いい感じ!
train画像作成のためにクロップに使用したツール: https://www.iloveimg.com/crop-image/crop-png
プログラム中身
(test.cpp)
angle_test()最後の方
match.x,match.yが認識位置