kinect.js

81 views
Skip to first unread message

hakobera

unread,
Mar 26, 2011, 2:13:18 AM3/26/11
to Shibuya.NI
皆様、どうも
hakobera です。

半ばネタなのですが、3/24 の 東京Node学園 1時限目(http://atnd.org/events/13529) で Kinect
の libfreenect の JavaScript ラッパーを作ってみたというLTをしてきたので、紹介しておきます。

資料とソースコードは以下にまとめてあります。
http://d.hatena.ne.jp/scalar/20110324/1300983209

やっていることは、単純で、3/4 のハッカソンの際に使った Java Processing ラッパーを、Rhino という Java で書かれ
た JavaScript エンジンでラップしているだけです。つまり、以下のような感じです。

libreenect -> Java Wrapper -> Processing Wrapper -> Rhino (Java の JSエンジ
ン) -> kinect.js

OpenNI の Java Wrapper もあるようなので、この方法で JavaScript Wrapper も作れそうですね。時間があった
ら挑戦してみたいと思います。

高度なことは出来ませんが、JavaScript でも書けるよ、と言ったら最初の敷居が下がって、Kinect ハッカーがもっと増えないかな、と
思っています。

hagino3000

unread,
Mar 26, 2011, 3:49:01 AM3/26/11
to Shibuya.NI
おほー、これはいいですね。

libfreenect -> Java はJNIなんですね。
nodejsにもJNI相当の物があればnode版も作れそうですね。

hagino3000

hakobera

unread,
May 9, 2011, 6:04:23 AM5/9/11
to Shibuya.NI
皆様、どうも
hakobera です。

第2回ハッカソンで結局作りそこなった node.js 版 kinect ですが、
GW中に完成して公開しました。

github
https://github.com/hakobera/node-freenect

blog
http://d.hatena.ne.jp/scalar/20110504/1304485435

速度は深度のみで、5FPSくらいでした。

JSの配列への詰め替えに時間がかかっているので、
パックしたり、擬似的に解像度を半分にするとかすれ速くなるとは思います。

ご意見、ご要望があればできる範囲で対応しますので、ご連絡ください。

hakobera

Y.Fuwa

unread,
May 9, 2011, 9:53:33 AM5/9/11
to shibu...@googlegroups.com
hakoberaさん

ffuyyo です

> blog
> http://d.hatena.ne.jp/scalar/20110504/1304485435

hagino3000さんが以前紹介くださったまとめサイトにも
紹介されてますね!
http://kinect.pro-mame.com/%E9%96%A2%E9%80%A3%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9/kinect-%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%A7%E3%81%8D%E3%82%8B-node-js-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F-scala%E3%81%A8lift%E3%80%80/

> JSの配列への詰め替えに時間がかかっているので、
> パックしたり、擬似的に解像度を半分にするとかすれ速くなるとは思います。
javascriptで画像処理って素で頑張ると大変そうですけど、
画像データをWebGLまで持ち込むと(GPUで動かすブラウザなら速度的に)
なんとかなったりするんでしょうか、というところが気になるところです。。。


# MSによるkinectのためのポーズ推定の論文見つけたので
# 斜め読みしてますけど、認識とかGPUで頑張る、的な内容なんですねえ。。。

2011年5月9日19:04 hakobera <hako...@gmail.com>:

西林孝

unread,
May 9, 2011, 10:02:57 PM5/9/11
to shibu...@googlegroups.com
hagino3000です。

>node.js 版 kinect
すばらしい。週末に使ってみます。自分もC++で作った部分をnodeモジュール化したいと考えていたので参考にしてみます。


>MSによるkinectのためのポーズ推定の論文見つけたので
>斜め読みしてますけど、認識とかGPUで頑張る、的な内容なんですねえ。。。
この論文かな
Real-Time Human Pose Recognition in Parts from Single Depth Images
http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf

まだAbstractぐらいしか読んでませんが、
オプティカルフローみたいな前のフレームを使ったりするんじゃなくて、
一枚のDepthイメージだけで、それを学習データと比較して推測してますね。
学習データの作り方が気になるのでちゃんと読んでみます。

2011年5月9日22:53 Y.Fuwa <ffu...@gmail.com>:

Shigeki Ohtsu

unread,
May 10, 2011, 12:18:19 AM5/10/11
to shibu...@googlegroups.com
hakoberaさん:

大津です。

# kinect の LED って色を変えられるんですね。知りませんでした。

> 速度は深度のみで、5FPSくらいでした。

残念ながらMac持っていないので試すことできないですが、結構速度出るん
ですねぇ。

フルだと 18Mbyte/秒 程度必要ですが、私の方では NSAPI経由でそのまんま
JS に depth配列を渡したら、当然ですが大きすぎてブラウザーが固まっちゃい
ました。

> JSの配列への詰め替えに時間がかかっているので、
> パックしたり、擬似的に解像度を半分にするとかすれ速くなるとは思います。

depthは無駄な情報が多いですから、、 私はdepthの直接利用はあきらめました。

OpenNI/NITE を利用しているので scene Generator から OpenCV かませて

kinect→sceneMD→Smooth→Threshold→Contour→Polygon→JS

で輪郭情報だけにしました。

これだととっても小さなポリゴンデータだけになって、 canvas line をつなぐだけで輪
郭描写がリアルタイムでキビキビ動かせました。
しかも scene はキャリブレーションが速いのでとっても便利。
(おそらく Xbox のダンスゲームもこれ使っているんじゃないでしょうかね)

近々の MS SDK のリリースがホント楽しみです。
(といっても Windows7 がまだ手元にないですけど)

hakobera

unread,
May 12, 2011, 9:38:32 AM5/12/11
to Shibuya.NI
本多 (hakobera) です。

> 大津さん

5FPS は Kinect -> Node間のFPS で、
Node - (WebSocket) -> Chrome では深度のみでも 1FPS いかない感じです。
文章の書き方が悪くて誤解させてしまったみたいで申し訳ないです。

今回のコードは実験コードで、実用のためには大津さんが説明されているように、
ある程度の処理を Node Addon (サーバー)側でやってしまう必要があると思います。

ただ、コード自体シンプルなので、改造の素材として使えるんじゃないかな、と思っています。
自分もこれをベースに、node-ofxOpenNI or node-ofxKinect でも作ろうかと思っています。

なお、Node v0.5 で Windows Native 対応するそうなので、
MS SDK と組み合わせると面白くなりそうです。

hagino3000

unread,
May 20, 2011, 12:36:37 PM5/20/11
to Shibuya.NI
hagino3000です。

KinectのWebインタフェース作ったよ系の動画見つけました
この人はlibfreenect → ruby event machine → browserですね
http://nitrogen.posterous.com/kinect-home-automation-goes-html5

動画の途中で、指定した領域だけのDepthデータだけを転送する、みたいな事してますね。
Reply all
Reply to author
Forward
0 new messages