カメラ映像(または動画ファイル)から光点を検出し、座標値をOSCで送信するアプリ「LuminousOSC」を作りました
物体の位置計測を行う技法のひとつに、対象物に光るマーカーを取り付けて、それをカメラで撮影し、その画像から光点の位置を検出するという方法があります。いわゆる光学式モーションキャプチャで使われている技法です。
画像中の光点の2次元座標の計算自体は、画像処理の心得がある人であれば、OpenCVなどを使って比較的簡単に作れる類のものですが、設定や調整のためのUIを作るのは地味に面倒なのでおざなりになりがちです。また、この機能を他のアプリでも使えるようにしたいなという考えは一瞬よぎるものの、面倒で結局やらなかったりします。
で、いい加減ちゃんとしたのを作ろうと思い、「LuminousOSC」を作りました。
ダウンロードはReleasesからどうぞ。Win/Mac両方あります。
LuminousOSCは、カメラ映像(または動画ファイル)から光点を検出し、それらの座標値をOSCで送信します。
受信側はProcessingやUnity、Pythonなど好きなものを選べます。サンプルとして、Processingで受信するデモを同梱しています。
とりあえず試す場合は、スマホについているライトを検出させてみると良いです。テスト用に動画ファイルも同梱しています。
本格的に使う場合は、赤外線カメラと再帰性反射材(あるいは赤外線LED)の組み合わせが良いでしょう。
複数の点も検出できますが、現バージョン(v0.1.5)ではトラッキングは実装していないので、フレーム間での点の対応付けは受信側のプログラムでよしなにする必要があります。同梱しているP5_tracking_demoというサンプルでは、簡単なトラッキングをやっています。
トラッキングに関しては、途中で消えた点や画面外に行った点の扱いをどうするかという問題もあり、どちらかというと利用側の方針次第なところがあるので、このアプリとしてどこまでフォローするかは考え中です。
とりあえず作ったのでご報告でした。
【2022/12/01追記】
ガッツリ作り直して、各種設定をGUIからできるようになりました。トラッキング機能も入れてあります。