Kinect入門

5,322 views

Published on

KINECTをC#で入門

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,322
On SlideShare
0
From Embeds
0
Number of Embeds
61
Actions
Shares
0
Downloads
18
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Kinect入門

  1. 1. まどべんよっかいち (2013.11.09) @ueponx
  2. 2. KINECT概要 KINECT SDKについて KINECTのセンサー RGBデータ処理 深度イメージ処理
  3. 3. 2009年 • XBOX用のMotion Sensing Input Deviceとして公開 2010年 • “KINECT for XBOX360” • キャッチコピーは 発売 「カラダまるごとコントローラー」 2011年 • “KINECT for Windows SDK(β)” 2012年 • “KINECT for Windows” 発売 発表
  4. 4. 仕様 仕様 視界角度 垂直 43° 水平 57° チルト角度 ± 27° フレームレート 最大 深度センサー解像度 640 * 480 カラーストリーム解像度 640 * 480 音声フォーマット 16kHz 16bit モノラル PCM オーディオ入力 4マイクアレイ 30FPS
  5. 5. 利用環境 XBOX360(ゲームデバイスとして) Windows7 Window8(Wndows8.1もOK) 希望小売価格 ¥14,800 –(税込) Amazon価格 ¥11,181 -(2013/11/06現在)
  6. 6. 利用環境 Windows7(32bit/64bit) Windows8(32bit/64bit) Wndows8.1(32bit/64bit) Windows Embedded Standard7 希望小売価格 ¥24,800 –(税込) Amazon価格 ¥21,513 -(2013/11/06現在)
  7. 7. お安いのには訳があります。 for XBOX360 for Windows 近接モード (40cm~3m) 未対応 対応 Windowsの対応 サポート外 商用利用不可 サポート 商用利用も可能 外見の違い ロゴが“XBOX 360“ ロゴが“KINECT” API 一部ステータスが 異なる動作をする ドキュメント通り 個人で楽しむならXBOX360版で十分だと思います。
  8. 8. KINECT for Windows SDK v1.8 KINECT for Windowsドライバ ライブラリ群 KINECT Studio KINECT for Windows Developer Toolkit Windows Developer Toolkit Explorer C++,C#,VisualBasicのサンプルコード ドキュメント群 その他 DirectX SDK Speech Platform SDK KINECT for Windows Language Pack ・・・etc すべて無償でダウンロード可能!!
  9. 9. ハードウエア要件 Dual-Core以上 2.66GHz以上のプロセッサ KINECT用のUSB2.0のポート 必要以上にデータの収受があるのでHUBを介さない ことを推奨 2GByte以上のRAM DirectX 9.0c対応グラフィック KINECTセンサー
  10. 10. ソフトウエア要件 VisualStudio2010以上(VS2013Expressでも確認) .NET Framework 4 以上 Speech機能を仕様する場合 • Microsoft Speech Platform SDK(コンパイル時に必要) • Microsoft Speech Platform Runtime(実行のみ必要)
  11. 11. 構築順序 KINECT for Windows SDKのダウンロード SDKのインストール KINECTセンサーの電源接続 KINECTセンサーのUSB接続 デバイスの接続より前にSDKをインストール!
  12. 12. KINECTのドライバー KINECTのマイクアレイ
  13. 13. 赤外センサー RGBカメラ 深度センサー アレイマイク チルト台
  14. 14. ★ KINECTを使用した基本的な開発の手順 1. VisualStudioでプロジェクト作成 2. 参照の追加(Microsoft.Kinect.DLLと同名前空間) 3. KinectSensorオブジェクトを作成しセンサー情報を取得 4. KinectSenator.Start() メソッドで初期化・開始 5. 設定したイメージストリームや骨格データを取得 6. 取得したデータの画像処理など 7. KinectSenator.Stop() メソッドで終了
  15. 15. 2. DLLの参照追加とUsingの追加 • Microsoft.Kinect.DLL (%Program Files%Microsoft SDKs¥Kinect¥{SDKのバージョン¥Assemblies}) • Microsoft.Kinect名前空間
  16. 16. KinectSensorで接続されたセンサを、 更にKinectSensor. Statusプロパティで 個々のセンサの状態を取得することができます。 KinectSensor.Statusプロパティ(KinectStatus列挙型) メンバー 説明 Connected 接続完了 DeviceNotGenuine デバイスがKINECTではない DeviceNotSupported デバイスはサポートされていない Disconnected USBに接続されていない Error エラーが発生している Initializing センサー初期化中 NotPowered センサーに電源が入っていない NotReady センサー準備中 Undefined ステータス未定義 KinectSensor.StatusChangedイベントで取得ができます。
  17. 17. KINECTセンサーを初期化すると、 複数のセンサーデバイスからストリーミング データを取得することが可能となります。 Color(カラーイメージ) Depth(深度イメージ) Depth and Player Index (深度イメージとプレイヤーインデックス) Skelton(骨格【関節】位置データ)
  18. 18. センサーからの取得データはAPIを通して、スト リームデータとして取得 APIからのデータの取得は1回 読み出し方法 ポーリングタイプ OpenNextFrameメソッドなど イベントモデル(こちらが一般的) *FrameReadyイベントなど
  19. 19. カラーイメージの取得はColorImageFormat列挙体によって解 像度とフレームレートを指定する。 列挙体メンバー 値 説明 Undefined 0 未定義 RgbResolution640x480Fps30 1 RGBカラー空間(32it) RgbResolution1280x960Fps12 2 RGBカラー空間(32it) YuvResolution640x480Fps15 3 YUVカラー空間(16bit) RawYuvResolution640x480Fps15 4 YUVカラー空間 InfraredResolution640x480Fps30 5 赤外線イメージ(v1.6対応) RowBayerResolution640x480Fps30 6 RowBayerResolution1280x960Fps12 7
  20. 20. KinectSensor.ColorStreamプロパティ Enableにすることでストリーム取得の有効化 KinectSensor.ColorFrameReadyイベント イベントによりフレームの更新(生成)通知を受け取る このイベントハンドラの引数からイメージフレームを取得 e.OpenColorImageFrame()からColorImageFrameオブジェクトを取得 ColorImageFrame.CopyPixelDataTo()メソッド sRGBのピクセルデータに変換(画像に変換)
  21. 21. BitmapImageクラス (System.Windows.Media.Imageing名前空間) WriteableBitmapクラス (System.Windows.Media.Imageing名前空間) 取得したイメージを変更する場合にはこちらを用いる。 例:WritePixels()メソッドなど
  22. 22. private void Window_Loaded(object sender, RoutedEventArgs e) { //Kinect接続確認 if(KinectSensor.KinectSensors.Count <= 0) { MessageBox.Show("KINECTを接続して下さい", "エラー", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } //対象KINECTをセット CurrentKinect = KinectSensor.KinectSensors .FirstOrDefault(x => x.Status == KinectStatus.Connected); }
  23. 23. // //初期化のコード // カラーストリームを有効化 // イベントハンドラを登録 // KINECTの処理を開始 private void InitializeKinectSensor(KinectSensor kinect) { if (kinect != null) { kinect.ColorStream.Enable(); kinect.ColorFrameReady += kinect_ColorFrameReady; kinect.Start(); } }
  24. 24. //イベントハンドラ private void kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { using(ColorImageFrame frame = e.OpenColorImageFrame()) { if(frame != null) { byte[] pixelData = new byte[frame.PixelDataLength]; frame.CopyPixelDataTo(pixelData); image1.Source = BitmapImage.Create(frame.Width, frame.Height, 96, 96, PixelFormats.Bgr32, null, pixelData, frame.Width*frame.BytesPerPixel); } } }
  25. 25. *基本的にはその他のセンサーデータもほぼ同様 の手順で取得していき、取得したデータを処理 することになります。 *センサーデータから画像化が出来てしまうとあ とは画像処理になります。OpenCVなどを使う と更に世界が広がると思います。 *KINECTはセンサー側からのデータの取得の ハードルを下げたと言えます。
  26. 26. orz
  27. 27. * KINECT for Windows http://www.microsoft.com/en-us/kinectforwindows/ * KINECT for Windows SDK ダウンロードサイト http://www.microsoft.com/en-us/kinectforwindowsdev/Downloads.aspx

×