■ [AR][OpenCV][作業履歴]「ピカッとかけた!」で画像認識
小型の液晶プロジェクターを買ったときに作ってみたもの。
昔懐かしい磁石で白板に絵を描く「せんせい」を使ってプロジェクター投影+画像認識をやってみようかと思ってたら、「ピカッとかけた!」という同種の面白そうなおもちゃが出てたのでそちらを購入。
- 知育玩具「なぞるおえかきピカッとかけた!」
「ピカッとかけた!」は専用のペンだけでなく面に触れられるものであればどんなものでも線が描けるため、マルチタッチも可能。画面は透明なので、裏側からプロジェクターで投影すればマルチタッチのスクリーンにできるんじゃないか、と。
今回使ったプログラムはこれよりも前に作っていた、壁のホワイトボードにプロジェクターで映像を投影して、自分の手やペンで描いた線でボールが跳ね返すプログラムをピカッとかけた用に赤い色に反応するよう修正したものを使っている。
プロジェクターのピントの合う最小投影距離が約30cm必要なので、できるだけ薄い箱に収めるために箱の中に45度傾けた鏡を2つ設置し、光源とカメラの視線方向を180度反転させて写すことで投影距離を稼いでいる。
しかし、プロジェクターの光源がカメラ映像の中央に白く写りこんでしまって、その部分だけ盲点のように画像認識ができないという問題が発生し、うまい解決策が見つからなかったために失敗作としてお蔵入りになった。
時折なにもない場所でボールが跳ねてしまっているのは、そのノイズが原因。箱や鏡の設置、調整にそれなりに手間がかかっていただけに、とても残念な結果に。
今回のプログラムの元となったホワイトボード投影版のほうは、幅2mくらいの大きさのスクリーンにプロジェクターで映像を投影し、カメラの入力から動いた部分を抽出して判定していた。自分の体や手に持った棒など、動体であれば何でも反応する。
カメラ認識と投影の遅延のため、素手で直接ボールに触るよりも手に持ったペットボトルなど使ってボールを打ち返すほうが自然に動かせて気持ちよかった。打撃部位が生身ではない分、体がずれを計算して動くようになるんだろうか?
ホワイトボード投影版のほうもそれなりに面白く遊べたのだけど、プロジェクターの輝度が低くて綺麗に動画を撮影できなかったため、こちらは記録に残していない。
精度の高い画像認識のためにはある程度の明るさが必要になり、明るい環境でのプロジェクターの映像は肉眼ではそれなりに認識できても動画に撮るぼやけてよくわからないものになってしまいやすい。昼間であれば太陽の光の入り具合で見た目が大きく変わってしまったりにするので、綺麗に動画を撮ろうと思ったら周りの明るさに依存しない、安定した撮影環境を作る必要がありそう。