• Like
Kinect入門
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Published

KINECTをC#で入門

KINECTをC#で入門

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,012
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
9
Comments
0
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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