2005/12/06
FlashPlayer8で動体検知
Basculeサイトで利用するために、FlashPlayer8のBitmapDataの機能を使って、動体検知機能を作りました。動いていることを検知するだけでなく、同一のものが連続して動いていることを検知します。
(そういう意味では、これはMotionTrackingなのかもしれないと今思いました。)
仕組み
映像を毎フレームBitmapData.drawし、直前のビットマップと「差の絶対値」でブレンドし続けます。この時、黒以外の部分を動いた部分とみなします。 動いた部分の矩形が、前フレームに動いた矩形と重なっていた場合、同一の動体が動いているとみなします。
2つの動いているものが重なると、1つのものとみなされてしまったり、しばらく静止してまた動き出すと、別のものが動き出したとみなされてしまいます。 その辺の精度が上がるとうれしいのですが、僕のへぼい頭ではこれが限界でした。 こういうことやりたいなら、こうやればここまでできるぜ、的なものがあったら教えてください。
ソース
motionDetector.zip
適当に自由に使ってください。
機能や精度が上がったり、面白いのが出来たら教えてください。
参考
開発にあたって、psyark.jpさんの肌色検出のエントリーを参考にさせていただきました。 quasimondo.comさんの ColorMatrixを利用しています。 また、このエンジンの実装例が、BasculeサイトのHotNewsの部分でご覧になれます。人が通るまでちょっとだけ待ってみてください。