Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

わんくまT84 kinect深度情報処理入門

4,240 views

Published on

  • Dating for everyone is here: ❤❤❤ http://bit.ly/369VOVb ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❤❤❤ http://bit.ly/369VOVb ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

わんくまT84 kinect深度情報処理入門

  1. 1. わんくま同盟 東京勉強会 #84 Kinect 深度情報処理入門 暁 紫電 @akatukisiden
  2. 2. わんくま同盟 東京勉強会 #84 自己紹介 本名: 伊藤 伸男 年齢: 26歳  興味分野  Windows クライアントア プリ  COM  WinAPI  .NET/Native 相互運用  使用言語  C++  C++/CLI  C# HN: 暁 紫電 twitter: @akatukisiden 職業: フリープログラマー
  3. 3. わんくま同盟 東京勉強会 #84 アジェンダ • Kinectとは(Kinectの歴史) • Kinectで出来る事 • なぜ深度に注目するのか • 解説とデモ • まとめ
  4. 4. わんくま同盟 東京勉強会 #84 Kinect (for Xbox 360)とは • Microsoftが販売するゲーム機「Xbox 360」用のコ ントローラー • コントローラーを持つ必要が無く、身体の動きや、 ジェスチャー、音声などによる操作が可能なこと が特徴 NUI (Natural User Interface) • Kinect自体にもCPUを搭載し Xbox側の負荷を下げている。 • 2010年11月「Kinect for Xbox 360」発売
  5. 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. 6. わんくま同盟 東京勉強会 #84 The Kinect Effect Kinectはゲーム・エンターテイメントを目的として 作られたが、 その他の分野にも活用されており、 この広がりは「The Kinect Effect」と呼ばれてる • ゲーム • リビングルーム • 医療現場 • リハビリテーショ ン • 見守り支援 • 教育 • 人流計測 • ヒューマンエラー防止 • 商品統計 • アパレル • デジタルサイネージ • アミューズメント施設 • 危険区域における構造調査 • 等々…
  7. 7. わんくま同盟 東京勉強会 #84 次世代Kinect • 2013年5月 「Xbox One」と共に再設計された次世 代「Kinect」を公開 • 2014年 「Xbox One(+Kinect for Xbox One)」 「次世代型 Kinect for Windows」 発売予定 • 3Dセンサの原理を変更、解像度、奥行き方向分解 能ともに向上 • センサーに近い場所、狭い部屋でも認識精度が向 上。 • スケルトン、ユーザー認識(後述)精度も向上 • 心拍数も取得可能(RGBカメラとIRカメラから推 測) • Etc…
  8. 8. わんくま同盟 東京勉強会 #84 Kinectで出来る事
  9. 9. わんくま同盟 東京勉強会 #84 カメラ(RGB/YUV/Bayer) ※サンプルアプリ Kinect Explorerの映像を撮影
  10. 10. わんくま同盟 東京勉強会 #84 深度センサー • 0.8m~4m(通常モード) or 0.4m~3m(Nearモー ド) • 13bit ※サンプルアプリ Kinect Explorerの映像を撮 影
  11. 11. わんくま同盟 東京勉強会 #84 スケルトントラッキング (簡易モーションキャプチャー) ※サンプルアプリ Kinect Explorerの映像を撮 影
  12. 12. わんくま同盟 東京勉強会 #84 • 全身20箇所の関節などの座標と向きを取得 • 上半身10箇所のみの取得も可能(Nearモード) • 2人分まで取得可能
  13. 13. わんくま同盟 東京勉強会 #84 ユーザーの認識 • 最大6人まで認識可能(3bit) • 深度データ13bitと一緒に16bitデータとして 取得 ※サンプルアプリ Kinect Explorerの映像を撮 影
  14. 14. わんくま同盟 東京勉強会 #84 マイク • 音声の取得 • 音源方向の認識(指向性マイク×4) • マイクデバイスとして使用可能
  15. 15. わんくま同盟 東京勉強会 #84 セッションタイトルでもわかるように、 今回は深度センサー、 深度情報の扱い(画像処理) に特化した話をします。
  16. 16. わんくま同盟 東京勉強会 #84 スケルトンがあるのに なぜ深度に注目するのか • そもそもスケルトンは深度から計算してる • スケルトンでは体勢・距離・設置場所などに 制限がかかる (正面に配置 全身or 上半身が写る必要があ る。) • 深度+画像処理 (+RGBカメラ)なら 画像処理の知識次第で様々なデータや、 ジェスチャーが取得できるはず。
  17. 17. わんくま同盟 東京勉強会 #84 デモと解説 今回は、深度情報を元に 簡単なジェスチャーを取得します。
  18. 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. 19. わんくま同盟 東京勉強会 #84 深度情報取得コールバック関数の 実行スレッド • 深度情報の取得時に呼び出されるコールバック関 数は、 通常UIスレッドで実行されてしまう。 • 取得した深度情報は、表示するまでに様々な処理 を加える場合があり、これらの処理をUIスレッド で行うと、 UIスレッドをブロックしてしまい、操作に対する レスポンスが悪くなってしまうため、 深度情報の処理は別スレッドで処理を行いたい。 • コールバック関数の登録を別スレッド(Task)で行 うことで コールバック関数の実行も別スレッドで実行され る。
  20. 20. わんくま同盟 東京勉強会 #84 深度情報の取得コールバック関数は 通常UIスレッドで実行されてしまう。 //UIスレッドでコールバックを 登録 深度情報の取得 画像の処理が UIスレッドで実行されて しまっている
  21. 21. わんくま同盟 東京勉強会 #84 コールバック関数の登録を別スレッドで行うと それが実行されるのも別スレッドになる。 深度情報の取得 画像の処理が 別スレッドで実行されて いる //別スレッド
  22. 22. わんくま同盟 東京勉強会 #84
  23. 23. わんくま同盟 東京勉強会 #84
  24. 24. わんくま同盟 東京勉強会 #84 認識深度の絞込み • Kinectから近すぎて要らないデータ、 遠すぎて要らないデータは認識の邪魔なの で、 認識する最大値、最小値を決めて取り除く • (画像処理ライブラリOpenCVを使用する 場合) 処理内容によっては処理対象が 8bitの画像でなければならない場合があるの で ついでに256分割して8bit化する
  25. 25. わんくま同盟 東京勉強会 #84
  26. 26. わんくま同盟 東京勉強会 #84 しきい値処理で二値化(白黒画像化) • 0~255(8bit化済み)の適当な値を基準にして 白黒2色の画像に変換する。 • 白黒画像であれば、輪郭データを抽出可能 • 輪郭データからは外接矩形を取得できる
  27. 27. わんくま同盟 東京勉強会 #84
  28. 28. わんくま同盟 東京勉強会 #84
  29. 29. わんくま同盟 東京勉強会 #84
  30. 30. わんくま同盟 東京勉強会 #84 不定値の対処(※次世代版だと改善してるかも) • 光の反射や、Kinectとの角度などが理由で深度を 上手く取得できない箇所がある。(不定値) • これのせいでジェスチャーなど を思うように認識できない場合がある。 • 画像を不定値による穴が塞がるまで膨張させ その後同じだけ収縮することで正常に認識させる ことが出来る。 ※縮小するのは膨張で画像全体が広がったのを もとに戻すため
  31. 31. わんくま同盟 東京勉強会 #84 膨張・縮小処理 • 膨張処理 – 注目している画素を その画素とその周囲の画素のうち一番濃い色にする。 縮小処理 – 注目している画素を その画素とその周囲の画素のうち一番薄い色にする。
  32. 32. わんくま同盟 東京勉強会 #84 周囲の定義 周囲の定義は要件に応じて8近傍、4近傍、 斜め,etc を使い分ける 今回は8近傍を使用 8近傍 4近傍 斜め
  33. 33. わんくま同盟 東京勉強会 #84 通常 → 膨張
  34. 34. わんくま同盟 東京勉強会 #84 膨張 → 縮小
  35. 35. わんくま同盟 東京勉強会 #84
  36. 36. わんくま同盟 東京勉強会 #84 ろくろ回しポーズ検出に挑戦 • しきい値をろくろ回しポーズ時の 手の辺りになるように調整。 • 最も大きい2つの外接矩形が以下の条件を 満たす場合を検出状態とする。 – 両方とも縦長である。 (Height>Width) – 重なってない – Y軸の値が重なっている
  37. 37. わんくま同盟 東京勉強会 #84
  38. 38. わんくま同盟 東京勉強会 #84 角度付き外接矩形 • 腕の角度などが取れるので • 工夫すれば様々なジェスチャーを取得可能
  39. 39. わんくま同盟 東京勉強会 #84
  40. 40. わんくま同盟 東京勉強会 #84 輪郭画像の簡易取得 • ここまでで行った二値データからの輪郭取得は 外接矩形が取れるということは 座標を持っているはずなので 内側でかなり複雑な処理をしてるはず。 • 外接矩形や、座標データなどが必要なく、 輪郭を表示だけすればいい場合、 元の画像を膨張させた画像から縮小させた画像を 引くことで簡単に輪郭を取得できる
  41. 41. わんくま同盟 東京勉強会 #84
  42. 42. わんくま同盟 東京勉強会 #84
  43. 43. わんくま同盟 東京勉強会 #84 まとめ • 近すぎ、遠すぎて要らないデータを削除する • 膨張・縮小処理で不定値による誤認識問題を解 決 • しきい値処理で2値化 • 輪郭・外接矩形等をの取得 • 矩形の座標、サイズ、 角度などによりジェスチャーを定義
  44. 44. わんくま同盟 東京勉強会 #84 最後に • 画像処理を用いれば深度情報から 様々なデータが取得出来るはず。 • どんな処理でどんなデータが取れるのかがわかれば、 アプリのアイデアも湧きやすいし、 アイデアを実装に写すのにも役に立つはず。 • Kinectアプリに興味がある人は 一緒に画像処理も勉強してみてはどうでしょうか

×