RealSense 事始め

RealSense App Challenge 2014 – Intel
http://japan.intel.com/realsense/

というのがあって、無事ステップ1を通過して、無事先日 RaelSense の実機が届いたので色々と実験中です。2月末ぐらいまでにアプリを作って提出しないといかんのですが(参加賞っぽい≒数が多いという意味での mini pc ぐらいは貰えるぐらいまでは頑張らんと)、スタートダッシュはできなかった(するつもりはなかった)ので、ちまちまと。

機器自体は、まだ製品化前?かつ、SDKもベータ版なのですが、一通り C++/C#/Java のサンプルが付いていて、ひと通り動かすことができます。開発環境が Windows 8.1 Update 64bit 版 かつ USB 3.0 ポートがある PC ということなので、それなりにスペックの高い PC(あるいはノートPC)を用意しないといけないかなと。

Intel® RealSense™ SDK | Intel® Developer Zone
https://software.intel.com/en-us/intel-realsense-sdk

とはいえ、手元の白 vaio S シリーズで、そこそこ動いているので(顔認識させているときとかの CPU パワー喰いはすごいですが)そこまで高スペックでなくてもよいかもしれません。なお、ツイッターで検索すると RealSense をやっているのは私のほかに @saka_pon さんと @hatsune_ @yukio_saitoh さんとぐらいです。潜在的にはもっといるような気がしないでもないのですが、まあコンテストだからこんなぐらいかもしれません(全世界で3000人ぐらいだから、日本に50人ぐらいいても不思議ではないと思うのですが)。

https://pbs.twimg.com/media/B4JNfSvCcAAlMCF.jpg:large

RealSense で何ができるのか?はさておき、SDK をみてみると、普通の USB カメラでも動く機能ついてきます。Device が RealSense のカメラだけじゃなくて、USB カメラであれば何でもいいので、上記のように表情のトラッキングアプリも動きます。このサンプルは RealSense SDK の中に入っているもので、ソース付きなのでそのまま自作アプリに組み込めます(とはいえ、64bit 限定だしベータ版なのですが)

image

画像データ自体は、PXCMImage という独自形式になっていますが、拡張メソッドの ToBitmap が提供されていて、これをピクチャーボックスに fps 単位で描画することで動画のようにみせています。単純な Bitmap の切り替えなので、文字の重ね合わせとかが楽になりそうで助かります。raw_streams というサンプルに PXCMBitmap クラスがあって、PXCMImage から Bitmap へ変換しています。サンプルのほうも C++ よりも C# のほうが UI がリッチになっている(Unity は持ってないのでわからないです)のが時代の進歩を感じさせます。ちょっと前までは C++ のほうがきれいな UI(あるいは豊富な機能)を用意したものですが、おそらく C# のサンプルを作って C++ サンプルが後追いになっていると思われます。

私の場合は、主にオブジェクトトラッキングとオブジェクト認識のところを攻めてアプリに仕上げる予定なのですが、RealSense SDK 自体のオブジェクトトラッキングで足りない部分は、OpenCV で補います。このときに、C# から使える OpenCvSharp を使うのと、同じように Cv.Mat から Bitmap へ変換できる機能を利用していきます。

同時に、アプリの UI は WPF で作ります。そうすると、文字や他のコントロールとの重ね合わせが非常に楽になります。Visual Studio 上でレイアウトをアレンジできるし、既存の WPF コントロールを使ってエフェクトを作れますからね。その場合も、先の OpenCvSharp にある WritableBitmap の機能や、Bitmap の相互変換機能を使います。

そんな訳で、このあたりの Bitmap の相互変換ができるとアプリ作りがやりやすいので、そのあたりが手を付けていこうと思っているところ。

カテゴリー: RealSense パーマリンク