More Related Content
Similar to わんくまT84 kinect深度情報処理入門
Similar to わんくまT84 kinect深度情報処理入門 (20)
わんくまT84 kinect深度情報処理入門
- 2. わんくま同盟 東京勉強会 #84
自己紹介
本名: 伊藤 伸男
年齢: 26歳
興味分野
Windows クライアントア
プリ
COM
WinAPI
.NET/Native 相互運用
使用言語
C++
C++/CLI
C#
HN: 暁 紫電
twitter: @akatukisiden
職業: フリープログラマー
- 4. わんくま同盟 東京勉強会 #84
Kinect (for Xbox 360)とは
• Microsoftが販売するゲーム機「Xbox 360」用のコ
ントローラー
• コントローラーを持つ必要が無く、身体の動きや、
ジェスチャー、音声などによる操作が可能なこと
が特徴
NUI (Natural User Interface)
• Kinect自体にもCPUを搭載し
Xbox側の負荷を下げている。
• 2010年11月「Kinect for Xbox 360」発売
- 5. わんくま同盟 東京勉強会 #84
Kinect ハック
• もともとはXboxでしか使えなかったが、
PC用のドライバー等を開発・公開する人があらわ
れる
(KinectのUSB接続はあえて暗号化されていなかっ
た)
• PC用のKinectアプリ開発
(Kinect ハック)が ブームになる
• 2011年06月 「Kinect for Windows SDK」 β版公開
• 2012年2月
Kinect for Windows 販売
Kinect for Windows SDK 公開
(Windows PC専用 商用利用可能)
- 6. わんくま同盟 東京勉強会 #84
The Kinect Effect
Kinectはゲーム・エンターテイメントを目的として
作られたが、
その他の分野にも活用されており、
この広がりは「The Kinect Effect」と呼ばれてる
• ゲーム
• リビングルーム
• 医療現場
• リハビリテーショ
ン
• 見守り支援
• 教育
• 人流計測
• ヒューマンエラー防止
• 商品統計
• アパレル
• デジタルサイネージ
• アミューズメント施設
• 危険区域における構造調査
• 等々…
- 7. わんくま同盟 東京勉強会 #84
次世代Kinect
• 2013年5月 「Xbox One」と共に再設計された次世
代「Kinect」を公開
• 2014年 「Xbox One(+Kinect for Xbox One)」
「次世代型 Kinect for Windows」 発売予定
• 3Dセンサの原理を変更、解像度、奥行き方向分解
能ともに向上
• センサーに近い場所、狭い部屋でも認識精度が向
上。
• スケルトン、ユーザー認識(後述)精度も向上
• 心拍数も取得可能(RGBカメラとIRカメラから推
測)
• Etc…
- 18. わんくま同盟 東京勉強会 #84
深度情報の取得
• Kinectの返す情報は、
ユーザー情報3bit,深度情報13bitの計16bit
• 深度情報のみを表示する場合は3bitシフト
して表示する。
015 14 13 12 11 10 9 8 7 6 5 4 3 2 1
深度情報(13bit) ユーザー情報(3bit)
- 19. わんくま同盟 東京勉強会 #84
深度情報取得コールバック関数の
実行スレッド
• 深度情報の取得時に呼び出されるコールバック関
数は、
通常UIスレッドで実行されてしまう。
• 取得した深度情報は、表示するまでに様々な処理
を加える場合があり、これらの処理をUIスレッド
で行うと、
UIスレッドをブロックしてしまい、操作に対する
レスポンスが悪くなってしまうため、
深度情報の処理は別スレッドで処理を行いたい。
• コールバック関数の登録を別スレッド(Task)で行
うことで
コールバック関数の実行も別スレッドで実行され
る。
- 24. わんくま同盟 東京勉強会 #84
認識深度の絞込み
• Kinectから近すぎて要らないデータ、
遠すぎて要らないデータは認識の邪魔なの
で、
認識する最大値、最小値を決めて取り除く
• (画像処理ライブラリOpenCVを使用する
場合)
処理内容によっては処理対象が
8bitの画像でなければならない場合があるの
で
ついでに256分割して8bit化する
- 30. わんくま同盟 東京勉強会 #84
不定値の対処(※次世代版だと改善してるかも)
• 光の反射や、Kinectとの角度などが理由で深度を
上手く取得できない箇所がある。(不定値)
• これのせいでジェスチャーなど
を思うように認識できない場合がある。
• 画像を不定値による穴が塞がるまで膨張させ
その後同じだけ収縮することで正常に認識させる
ことが出来る。
※縮小するのは膨張で画像全体が広がったのを
もとに戻すため
- 40. わんくま同盟 東京勉強会 #84
輪郭画像の簡易取得
• ここまでで行った二値データからの輪郭取得は
外接矩形が取れるということは
座標を持っているはずなので
内側でかなり複雑な処理をしてるはず。
• 外接矩形や、座標データなどが必要なく、
輪郭を表示だけすればいい場合、
元の画像を膨張させた画像から縮小させた画像を
引くことで簡単に輪郭を取得できる
- 43. わんくま同盟 東京勉強会 #84
まとめ
• 近すぎ、遠すぎて要らないデータを削除する
• 膨張・縮小処理で不定値による誤認識問題を解
決
• しきい値処理で2値化
• 輪郭・外接矩形等をの取得
• 矩形の座標、サイズ、
角度などによりジェスチャーを定義
- 44. わんくま同盟 東京勉強会 #84
最後に
• 画像処理を用いれば深度情報から
様々なデータが取得出来るはず。
• どんな処理でどんなデータが取れるのかがわかれば、
アプリのアイデアも湧きやすいし、
アイデアを実装に写すのにも役に立つはず。
• Kinectアプリに興味がある人は
一緒に画像処理も勉強してみてはどうでしょうか