de:code 2019 CM04 Azure Kinect DK 徹底解説 ~ 進化したテクノロジーとその実装 ~ 技術統括室 千葉慎二 Ph.D.
Mixed Reality の全体像
Kinect はただのカメラではない 3D 空間の認識 ( 深度 )
人の全身の動きをとらえる
Azure Kinect Development Environment
Azure Kinect DK 開発環境 Sensor SDK ローレベルセンサーとデバイスアクセス Body Tracking SDK 3D で身体を追跡する Speech SDK マイクアクセスと Azure クラウドベースのスピーチサービス +Cognitive Vision
Sensor SDK ( 機能 ) カラーカメラへのアクセスとモード制御 RGB イメージの取得 解像度 : 1280 x 720 (16:9) 露出 ホワイトバランス ISO 感度制御 深度カメラへのアクセスと各モード制御 深度イメージ IR イメージの取得 解像度 : 1024 x 1024 (1:1) ~ 320 x 288 (10:9) FoV 深度モード制御 (NFoV, WFoV, パッシブ IR モード )
イルミネーションと視野
Sensor SDK 機能 IMU へのアクセス 加速度 角速度の取得 カメラストリームの制御 内部的に同期 ( 遅延設定可 ) 外部デバイス同期制御 ( デバイス間の遅延オフセット設定も可 ) その他各種情報へのアクセス カメラフレームメタデータ デバイスキャリブレーションデータ
Sensor SDK システム要件 Windows 10 PC / Ubuntu 18.04 (x64) Core i3 7000 以降 Dual Core 2.4 GHz/HD620 GPU 以降, 4GB メモリ, USB3 シンプルな USB 接続機器 ( カメラデバイス )
Body Tracking SDK 機能 セグメンテーション それぞれの身体を特定 固有の ID リアルタイムに身体動作を追跡 24 箇所の骨格情報
24 箇所の骨格情報 定義 親関節 0 K4ABT_JOINT_PELVIS --- 1 K4ABT_JOINT_SPINE_NAVAL K4ABT_JOINT_PELVIS 2 K4ABT_JOINT_SPINE_CHEST K4ABT_JOINT_SPINE_NAVAL 3 K4ABT_JOINT_NECK K4ABT_JOINT_SPINE_CHEST 4 K4ABT_JOINT_CLAVICLE_LEFT K4ABT_JOINT_SPINE_CHEST 5 K4ABT_JOINT_SHOULDER_LEFT K4ABT_JOINT_CLAVICLE_LEFT 6 K4ABT_JOINT_ELBOW_LEFT K4ABT_JOINT_SHOULDER_LEFT 7 K4ABT_JOINT_WRIST_LEFT K4ABT_JOINT_SHOULDER_LEFT 8 K4ABT_JOINT_CLAVICLE_RIGHT K4ABT_JOINT_SPINE_CHEST 9 K4ABT_JOINT_SHOULDER_RIGHT K4ABT_JOINT_CLAVICLE_RIGHT 10 K4ABT_JOINT_ELBOW_RIGHT K4ABT_JOINT_SHOULDER_RIGHT 11 K4ABT_JOINT_WRIST_RIGHT K4ABT_JOINT_ELBOW_RIGHT 12 K4ABT_JOINT_HIP_LEFT K4ABT_JOINT_PELVIS 13 K4ABT_JOINT_KNEE_LEFT K4ABT_JOINT_HIP_LEFT 14 K4ABT_JOINT_ANKLE_LEFT K4ABT_JOINT_KNEE_LEFT 15 K4ABT_JOINT_HIP_RIGHT K4ABT_JOINT_PELVIS 16 K4ABT_JOINT_KNEE_RIGHT K4ABT_JOINT_HIP_RIGHT 17 K4ABT_JOINT_ANKLE_RIGHT K4ABT_JOINT_KNEE_RIGHT 18 K4ABT_JOINT_HEAD K4ABT_JOINT_NECK 19 K4ABT_JOINT_NOSE K4ABT_JOINT_HEAD 20 K4ABT_JOINT_EYE_LEFT K4ABT_JOINT_HEAD 21 K4ABT_JOINT_EAR_LEFT K4ABT_JOINT_HEAD 22 K4ABT_JOINT_EYE_RIGHT K4ABT_JOINT_HEAD 23 K4ABT_JOINT_EAR_RIGHT K4ABT_JOINT_HEAD
Body Tracking SDK システム要件 Windows 10 PC Core i5 以降 NVIDIA GPU GTX 1070 以降 CUDA10.1, cudnn v7.5
Speech SDK, Cognitive Services Azure 連携 スピーチ テキストスピーチ翻訳テキスト スピーチコンピュータビジョンフェイスビデオインデクサーコンテンツモデレーターカスタムビジョン
v2 センサーからの進化
Azure Kinect DK Software Implementation
ソフトウェア実装 Sensor
一般的な処理フロー
インターフェイス相関図 k4a_image_get_buffer() k4a_image_create() k4a_transformation_xxx_image_to_xxx_image() k4a_capture_get_xxx_image() k4a_calibration_nd_to_nd() k4a_device_get_installed_count() k4a_device_open() k4a_device_start_cameras() k4a_device_get_capture()
Azure Kinect DK の初期化
カメラを構成して始動 使い終えたら停止
キャプチャーとイメージアクセス
キャプチャーとイメージアクセス
イメージのフォーマット フォーマット解像度縦横比フレームレート MJPG 3840 x 2160 16 : 9 5, 15, 30 MJPG 2560 x 1440 16 : 9 5, 15, 30 MJPG 1920 x 1080 16 : 9 5, 15, 30 MJPG YUY2 NV12 1280 x 720 16 : 9 5, 15, 30 MJPG 4096 x 3072 4 : 3 5, 15 MJPG 2048 x 1536 4 : 3 5, 15, 30 モード 解像度 縦横比フレームレート NFOV unbinned 640 x 576 10 : 9 5, 15, 30 NFOV 2x2 binned (SW) 320 x 288 10 : 9 5, 15, 30 WFOV 2x2 binned 512 x 512 1 : 1 5, 15, 30 WFOV unbinned 1024 x 1024 1 : 1 5, 15 Passive IR 1024 x 1024 1 : 1 5, 15, 30
イメージのフォーマット MJPG JPEG 圧縮 NV12 YYYY..UVUV.. YUY2 YUYVYUYV.. BGRA BGRABGRA.. 16-bit 深度 ミリメートル単位の距離情報 16-bit IR グレースケールの輝度情報
カメラ座標
座標空間と座標変換
IMU の開始と停止
IMU サンプリングとデータアクセス
IMU のデータ構造と座標系 温度 ( 摂氏 ) float 加速度データ (x, y, z) float[3] 加速度タイムスタンプ (µs) uint64 角速度データ (x, y, z) float[3] 角速度タイムスタンプ (µs) uint64
フレームの記録と再生 https://www.matroska.org/
インターフェイス相関図 k4a_image_get_buffer() k4a_image_create() k4a_transformation_xxx_image_to_xxx_image() k4a_capture_get_xxx_image() k4a_calibration_nd_to_nd() k4a_record_create() k4a_record_write_xxx() k4a_device_open() k4a_device_start_cameras() k4a_device_start_imu() k4a_device_get_installed_count() k4a_playback_*** k4a_playback_open() k4a_playback_get_xxx()
レコーディング API
再生 API
深度カメラとプロジェクションに関する注意
強度 反射 回折 干渉
デイジーチェイン
ソフトウェア実装 Speech
Windows Audio スタック
Speech ( スピーチ テキスト )
ソフトウェア実装 Body Tracking
一般的な処理フロー +IMU を始動 +IMU サンプリング カラー / /IR など
インターフェイス相関図 k4abt_frame_*** k4abt_frame_get_xxx() k4a_image_get_buffer() k4a_image_create() k4a_transformation_xxx_image_to_xxx_image() k4abt_tracker_*** k4abt_tracker_queue_capture() k4abt_tracker_pop_result() k4a_capture_get_xxx_image() k4a_calibration_nd_to_nd() k4a_record_create() k4a_record_write_xxx() k4a_device_open() k4a_device_start_cameras() k4a_device_start_imu() k4a_device_get_installed_count() k4a_playback_*** k4a_playback_open() k4a_playback_get_xxx()
トラッカーを作成
深度フレームを取得 ( ボディトラッキングに必要 )
トラッカーキューからボディフレームを取得
トラッカーからボディインデックスを取得
イメージのフォーマット 8-bit ボディインデックス 人の分類 (K4ABT_BODY_INDEX_MAP_BACKGROUND=255) カスタムイメージバッファ 例 ) xyz_image 各ピクセル [X, Y, Z] / int16_t ( 合計 6 バイト )
Tips! 開発のポイント ( その 1)
Tips! 開発のポイント ( その 2)
2019 Microsoft Corporation. All rights reserved. 2018 Microsoft Corporation. All rights reserved. 本情報の内容 ( 添付文書 リンク先などを含む ) は de:code 2019 開催日 (2019 年 5 月 29~30 日 ) 時点のものであり 予告なく変更される場合があります 本情報の内容本コンテンツの著作権 および本コンテンツ中に出てくる商標権 団体名 ロゴ 製品 サービスなどはそれぞれ 各権利保有者に帰属します ( 添付文書 リンク先などを含む ) は 作成日時点でのものであり 予告なく変更される場合があります