Kinectでまた遊んでみたくなった
最近3次元の画像処理とかに興味が出てきて、ふとまたKinectで遊びたい熱が再燃してしまいました。といっても随分昔にセットアップしたっきりなので、再度セットアップしなおしてみることにしました。以下の情報もかなり古くなってしまい検索で来てくれる人に申し訳ないという気持ちもちょっとだけ(ほんとにちょっとだけ)あります。
2017年度版と大げさに銘打ってありますが、過去2,3年くらいは変わってないと思いますし、今後ももう5年くらいは変わらないのじゃないかなと勝手に思っています。もしくは、セットアップすらできなくなる可能性もあるかもしれません。今のうちに必要なソフトと機材はどこかにアーカイブしておくのがよいかもしれませんね(私はしました)。
ちなみに過去は血反吐を吐きながらセットアップした覚えがあるのですが、今回めちゃめちゃ簡単でした。これが人類の叡智か…(多分違う)。
今回できたこと
今回セットアップすることで、サンプルアプリを動かすことで以下のような骨格(ボーン)検出とかができるようになりました。
サンプルアプリを元に、自分でキネクトを使ったソフトを開発することも可能です。興味ある方は続きをご覧ください。
Processing 2とOpenNIでKinectを使うときのセットアップ
一応最初に書いておきますが、この記事はこうすれば必ず動くという保証をしているわけではないので、その点はご了承下さい。あくまで私の環境でこうセットアップしたら動きましたという参考情報くらいに捉えて下さい。特にメーカも保証している使い方ではないので、あくまで自己責任でお願いします。
Kinect v1とMac購入
まだ持ってない人は、Kinect v1とMacを買いましょう。v1というのは初代のやつです。v2はセンシング方式からしてv1と違うのと、色々セットアップ大変なのでv1の方がおすすめです。
- 出版社/メーカー: 日本マイクロソフト
- 発売日: 2010/11/20
- メディア: Video Game
- 購入: 21人 クリック: 872回
- この商品を含むブログ (133件) を見る
Macは適当なMac Book Proとか買って下さい。
ちなみに私のPC環境は以下です。
- MacBook Pro (Retina, Mid 2012)
- MacOS Sierra (10.12.3)
こんな感じ
Processing2 ダウンロード
Processing2を使います。Processing 3も試してみましたが動きませんでした。ネットで調べても3には対応していないと買いてあるので多分そうなのでしょう。Processingは公式さいとのDownloadからダウンロードして下さい。
2.2.1 (19 May 2014)
というやつです。
Simple Open NIダウンロード
以下からダウンロードできます。
Google Code Archive - Long-term storage for Google Code Project Hosting.
SimpleOpenNI-1.96.zip
というやつをダウンロードします。解凍するとSimpleOpenNI
というフォルダが生まれます。前はNITEというライブラリもあって、それで骨格(ボーン)検出とかができた気がするのですが、NITEはどうなったんでしょうね?OpenNIはボーン検出もできるので、統合されているのでしょうか?
Kinectのセンサ作っているPrimeSense社がAppleに買収されてしまったので、ややこしいことになっているのかもしれません。Appleぇー。
Processingの設定
一回Processingを起動しましょう。すると、/Users/ユーザー名/Documents/Processing/libraries
というフォルダが生成されるので、その直下にSimpleOpenNI
フォルダをコピーします。
Processingを終了して起動して、File
->Example...
を選択しましょう。Contributed Library
の下にSimpleOpenNI
というのが追加されているので面白そうなサンプルを開いて実行してみましょう。Kinect繋ぐの忘れずにね!
Kinect OpenNIサンプルアプリ例
DepthImage
デプスマップの表示
DepthMap3d
3次元表示
User
ボーン検出
Processing 2とOpenKinectでKinectを使うときのセットアップ
OpenKinectというライブラリを使ってKinectを使うこともできます。こちらはOpen NIより古いライブラリみたいです。こちらも簡単にセットアップできるのでセットアップ方法を紹介しておきます。
Sketch
-> Import Library
-> Add Library
でKinect
で検索すると以下のように表示されるのでInstallをクリックするだけです。
Example
のContributed Library
の下にOpen Kinect for Processing
が追加されているので、Open NIと同様に遊べます。
AveragePointTrackingというサンプルを実行した例です
近くにある物体をトラッキングするっぽい
Open NIと随分書き方が違うので、やりたいことに合わせてライブラリを選んだ方が良いです。特別なこだわりないならOpen NIの方がサンプルも多そうなのでおすすめかな?
Kinectの仕組みと注意点
Kinect V1はStructured Lightと呼ばれる方式で、Kinect V2はToF(Time of Flight)と呼ばれる方式で3次元情報を取得しています。両方とも赤外線を照射する関係で、太陽光には弱く屋外には使えないので注意下さい。特にKinect V1は太陽に弱いです。たまにKinect V1を使ったインスタレーションを半屋外でやっていて残念な結果になっているケースをみかけます。
それぞれの方式の詳細は、ここでは説明しません。参考になりそうなサイトを以下に貼っておきます。調べればいくらでも出てくるかと思います。
Kinect v2プログラミング(C++) - Depth編 - Build Insider
まとめ
KinectとProcessingを久しぶりに一通りセットアップしてみました。簡単になっていて良かったです。せっかくなので、昔作ったソフトを動かしてみようと思ったのですが、ProcessingとOpen NIのバージョンが違うせいか、そのままでは全然動きませんでした。残念。お気に入りのソフトはそのうち動くように直してみようかなと思っています。
しかしこういう機材の販売中止や、ライブラリのバージョン変更とか公開の停止で今まで作ったソフトが無駄になってしまうのは悲しいですね。もうちょっと環境をまるごと手軽に残しておける方法があるとよいのですけれど。あとは、ライブラリが無いと何もできないマンにはならないように、3次元画像処理の基本もきちんと抑えておきたいなと思いました。そちらの方もまたいずれ。
しかし、前回のセットアップから5年たっているのに個人で購入可能な使い勝手の良い3次元センサのトップは今だにKinect V1だけという状況はちょっとあれですね…次点でIntel Realsense SR300というところでしょうか。あれも、Linuxだとのセットアップは結構大変だったり、電流バカバカ引っ張って落ちたりとかなり癖が強いんですよね…Kinect互換の使い勝手のよいセンサ出てこないかな。もし誰か良いもの知っていたらそっと教えて下さい。
世の中の技術的には、フィルタを使って単眼カメラで3次元情報を取得する東芝の技術とか、ディープラーニングを使って単眼カメラで人のボーン検出をする技術とか、単眼カメラで出来なかったと思われてたことがどんどんできるようになってきて口あんぐり状態です。凄いですね。
- 出版社/メーカー: 日本マイクロソフト
- 発売日: 2010/11/20
- メディア: Video Game
- 購入: 21人 クリック: 872回
- この商品を含むブログ (133件) を見る
過去作ったキネクトアプリ
どれも動かなくなってしまいました。ヒューマンシーケンサぐらいは作り直してみようかな…
参考リンク
Simple Open NIをつかって、ProcessingとKinectを接続してみる - また1からこつこつと
Google Code Archive - Long-term storage for Google Code Project Hosting.