OpenNI/NITEのボーントラッキングが劇的に進化していた件
第3回Kinectハッカソン無事に開催できました。レポートっぽい物はShibuya.NIのサイトにアップするとして、OpenNI + Xtion Pro liveで今日試した事など。
ポーズ不要
NITEを1.5.0 unstableにするとユーザー検出からポーズ検出をすっ飛ばしてボーントラッキングが開始できる様になった。以前まで必要だった学習データも不要。適当に動かしてみたらたまたまその場にいた4人をいきなりトラッキングして普通に動いていた。重すぎて描画が遅れるという事も無かった。動画撮ればよかった。
Kinectポーズという単語は最早死語、「OpenNIはポーズを取らないと骨格取れないんですよ」とドヤ顔をする事はもうできませんね。
上半身のみボーントラッキングが動作した
トラッキング開始時にSkeletonCapabilityに渡すXnSkeletonProfileについて。大抵はXN_SKEL_PROFILE_ALLを渡して頭から足までのジョイントを得ると思うが、自分は 机に座る→作業→退席 の動作を正面からトラッキングしたかったので上半身だけで十分。下半身は見えないだろうし。
1.3.4: XnSkeletonProfile
http://openni.org/docs2/Reference/_xn_types_8h_a294999eabe6eeab319a61d3d0093b174.html
そこで、上半身のみのジョイントをトラッキングするXN_SKEL_PROFILE_UPPERを使うとこうなった。
頭と手だけもいける
頭の位置を取りたいだけならXN_SKEL_PROFILE_HEAD_HANDSで十分だった。ユーザー検出と同時に頭部の中心座標が取れるので、用途によっては顔認識よりも便利。横顔でも後ろ頭でもいける。始終静止状態の人は検出できないけど。つまり、全身を入れてポーズを取るのが不要になったおかげで、上半身のみや、下半身のみしか見えない状況においてジョイントのトラッキングが可能になった。
正面を向いてるかどうか
OpenCVの物体検出で正面顔の学習データを使ってみた。頭の位置は既にわかっているので、うまくやれば計算量は減らせるはず。cvHaarDetectObjectsに検索領域とか指定できればと思ったけど、そんなオプション無かった。
顔の向き
頭部の深度の平均値を使ってなんとなく傾きを得る方法を@molant3さんに教えてもらった。
Xtion Pro liveは家電量販店でも買えます
Xtion PRO LIVE
http://www.unitycorp.co.jp/asus/option/xtion_pro_live/index.html
中の人曰くそういう事。輸入した時は190ドルだったが日本価格25,000円。
Kinectよりも高いが重くてでかいKinectを毎日持ち歩きたくはないので自分はXtion Pro liveを使っています。
Mac App StoreにKinectアプリが増えていた。
3D Scannerというアプリ。Kinectが接続されていない、とかいうエラーが出て動作しない!! 170JPYが無駄に……!!