しかし、どこまで可能なのか?知る必要があり各種の画像処理のパフォーマンステストをしています。
結果的に言えば、私のプログラムのチューニングをすれば、かなりの事ができるという事でした。プログラムを見直すと、無駄な処理やループが沢山ありました。今は、とにかく、数を優先している為、ロジックに無駄が沢山あります (-_-)
(私が開発しているのは、人が操作しない、自律型ロボットです。人が操作する物は、ラジコンだと考えて、ハッキリ分けています。趣味の一つがラジコン飛行なので、、、)
テストの例
「画像入手(webcam 640x480 CV_U8C3) -> 動くボール認識 -> 認識画像出力」
上記100回の処理時間 → 10回計測 平均45秒 約2回/秒 の認識処理
同上 ファイル出力無し → 10回計測 平均30秒 約3回/秒 の認識処理
テスト方法は、下図のピンクのボールを手に持って、Webcamの前で不規則に動かします。Raspberry Pi上の認識プログラムが、usb接続されたwebcamから画像を入手して、動いているボールだけを認識します。
図1 ピンクのボールをwebcamの前で不規則に動かし、ボールだけを認識する |
図2 左上から右下に、処理結果の順で並べている 赤が、手で不規則に動かしたボールの認識結果。 光の影響があるので、完全な'円'になっていない。白丸は同じボールであることを示す 認識プログラムは、複数の動く物体を認識できる |
図2の8枚のボールの動きは、約3.6秒間(45秒/100x8)の動きのsnapshotになります。
1回の処理毎に、認識した結果をファイルに保存した画像の一部を並べました。保存をしない場合は、同じ時間で、12回のボール認識ができます。
1秒間に、3回の画像認識処理ができれば、僕のロボットの要求仕様を十分に満たす事が出来ます。実際には、風景内の沢山の認識をしているので、ロボットの運用上は1秒間に1回の画像認識処理で十分です。
1秒間に、3回の画像認識処理ができれば、僕のロボットの要求仕様を十分に満たす事が出来ます。実際には、風景内の沢山の認識をしているので、ロボットの運用上は1秒間に1回の画像認識処理で十分です。
Raspberry Piは、見た目以上に、すごいヤツです。
peace!
0 件のコメント:
コメントを投稿