狠狠撸
Submit Search
碍颈苍别肠迟深度情报処理入门
?
Download as PPTX, PDF
?
8 likes
?
16,092 views
伸男 伊藤
Follow
1 of 45
Download now
Downloaded 57 times
More Related Content
碍颈苍别肠迟深度情报処理入门
1.
Kinect
深度情報処理入門 伊藤 伸男 @akatukisiden 2012/11/24 新しい.NETStyle 勉強会Ver
2.
自己紹介 本名: 伊藤 伸男
HN: 暁 紫電 年齢: 25歳 twitter: @akatukisiden 職業: フリープログラマー ? 使用言語 ? 興味分野 ? C++ ? Windows クライアントア ? C++/CLI プリ ? C# ? 画像処理 ? etc…
3.
はじめに ?
このセッションは2012年09月29日に 首都圏コンピュータ技術者株式会社で行われた 個人事業主文化祭というイベントで行ったセッショ ンに 加筆修正したものです。 ? KinectSDKのバージョンは1.5 ? 画像処理にはOpenCV 2.2を用いています。
4.
アジェンダ ?
Kinectとは ? 碍颈苍别肠迟で出来る事 ? なぜ深度に注目するのか ? 解説とデモ ? まとめ
5.
Kinectとは ?
Microsoftが販売するゲーム機 「Xbox 360」用のコントローラー ? コントローラーを持つ必要が無く、身体の動きや、 ジェスチャー、音声などによる操作が可能なことが 特徴 NUI (Natural User Interface) ? 2010年11月発売
6.
Kinect ハック ?
もともとはXboxでしか使えなかったが、 PC用のドライバーを開発?公開する人があらわれる ? PC用のKinectアプリ開発 (Kinect ハック)が ブームになる ? 2012年2月 Kinect for Windows 販売 Kinect for Windows SDK 公開 (Windows PC専用 商用利用可能)
7.
碍颈苍别肠迟で出来る事
8.
搁骋叠カメラ
※サンプルアプリ Kinect Explorerの映像を撮影
9.
深度センサー
※サンプルアプリ Kinect Explorerの映像を撮 影 ? 0.8m~4m(通常モード) or 0.4m~3m(Nearモード) ? 13bit
10.
スケルトントラッキング (簡易モーションキャプチャー)
※サンプルアプリ Kinect Explorerの映像を撮 影
11.
?
全身20箇所の関節などの座標と向きを取得 ? 上半身10箇所のみの取得も可能 ? 2人分まで取得可能
12.
ユーザーの认识
※サンプルアプリ Kinect Explorerの映像を撮 影 ? 最大6人まで認識可能(3bit) ? 深度データ13bitと一緒に16bitデータとして取得
13.
マイク ? 音声の取得 ? 音源方向の認識
(指向性マイク×4)
14.
セッションタイトルでもわかるように、
今回は深度センサー、 深度情報の扱い(画像処理) に特化した話をします。
15.
スケルトンがあるのに なぜ深度に注目するのか ?
そもそもスケルトンは深度から計算してる ? スケルトンでは体勢?距離?設置場所などに 制限がかかる (正面に配置 全身or 上半身が写る必要がある。) ? 深度+画像処理 (+搁骋叠カメラ)なら 画像処理の知識次第で様々なデータや、 ジェスチャーが取得できるはず。
16.
デモと解説 今回は、深度情報を元に 簡単なジェスチャーを取得します。
17.
深度情報の取得 ?
Kinectの返す情報は、 ユーザー情報3bit,深度情報13bitの計16bit ? 深度情報のみを表示する場合は3bitシフトして表示 する。 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 深度情報(13bit) ユーザー情報(3bit)
18.
深度情報取得コールバック関数の 実行スレッド ?
深度情報の取得時に呼び出されるコールバック関数 は、 通常UIスレッドで実行されてしまう。 ? 取得した深度情報は、表示するまでに様々な処理を 加える場合があり、これらの処理をUIスレッドで行 うと、 UIスレッドをブロックしてしまい、操作に対するレ スポンスが悪くなってしまうため、 深度情報の処理は別スレッドで処理を行いたい。 ? コールバック関数の登録を別スレッドで行うことで コールバック関数の実行も別スレッドで実行される。
19.
深度情報の取得コールバック関数は 通常UIスレッドで実行されてしまう。 //UIスレッドでコールバックを 登録
深度情報の取得 画像の処理が UIスレッドで実行されて しまっている
20.
コールバック関数の登録を別スレッドで行うと それが実行されるのも別スレッドになる。
//別スレッド 深度情報の取得 画像の処理が 別スレッドで実行されて いる
23.
認識深度の絞込み ?
Kinectから近すぎて要らないデータ、 遠すぎて要らないデータは認識の邪魔なので、 認識する最大値、最小値を決めて取り除く ? (画像処理ライブラリOpenCVを使用する場合) 処理内容によっては処理対象が 8bitの画像でなければならない場合があるので ついでに255で割って8bit化する
25.
しきい値処理で二値化(白黒画像化) ?
0~255(8bit化済み)の適当な値を基準にして 白黒2色の画像に変換する。 ? 白黒画像であれば、輪郭データを抽出可能 ? 輪郭データからは外接矩形を取得できる
29.
不定値の対処 ?
光の反射や、Kinectとの角度などが理由で深度を上 手く取得できない箇所がある。(不定値) ? これのせいでジェスチャーなど を思うように認識できない場合がある。 ?画像を不定値による穴が塞がるまで膨张させ その後同じだけ収縮することで正常に認識させるこ とが出来る。 ※縮小するのは膨张で画像全体が広がったのを もとに戻すため
30.
膨张?縮小処理 ?
膨张処理 ? 注目している画素を その画素とその周囲の画素のうち一番濃い色にする。 ? 縮小処理 ? 注目している画素を その画素とその周囲の画素のうち一番薄い色にする。
31.
周囲の定義 周囲の定義は要件に応じて8近傍、4近傍、 斜め,etc を使い分ける 今回は8近傍を使用 8近傍
4近傍 斜め
32.
通常
→ 膨张
33.
膨张
→ 縮小
35.
ろくろ回しポーズ検出に挑戦 ?
しきい値を手の辺りになるように調整。 ? 最も大きい2つの外接矩形が以下の条件を みたす場合を検出状態とする。 ? 両方とも縦長である。 (Height>Width) ? 重なってない ? Y軸が重なっている ? X軸は重なっていない。
37.
角度付き外接矩形 ?
腕の角度などが取れるので ? 工夫すれば様々なジェスチャーを取得可能
39.
輪郭画像の簡易取得 ?
二値データからの輪郭取得は 内側でかなり複雑な処理をしてるはず。 ? 外接矩形や、座標データなどが必要なく、 輪郭を表示だけすればいい場合、 元の画像を膨张させた画像から縮小させた画像を 引くことで簡単に輪郭を取得できる ? 輪郭部分だけではなく、内側にも膨张縮小は適応 されているので、 二値化すると等高線状の画像が得られる。
43.
まとめ ?
近すぎ、遠すぎて要らないデータを削除する ? 膨张?縮小処理で不定値による誤認識問題を解 決 ? しきい値処理で2値化 ? 輪郭?外接矩形等をの取得 ? 矩形の座標、サイズ、 角度などによりジェスチャーを定義
44.
最後に ?
画像処理を用いれば深度情報から 様々なデータが取得出来るはず。 ? どんな処理でどんなデータが取れるのかがわかれば、 アプリのアイデアも湧きやすいし、 アイデアを実装に写すのにも役に立つはず。 ? Kinectアプリに興味がある人は 一緒に画像処理も勉強してみてはどうでしょうか
45.
お仕事募集中
決まりました。 Itou.Nobuo@gmail.com
Download