Azure Kinectで骨格を検出して保存する【Azure Kinect 実践講座#2】

はじめに

この記事ではAzure Kinectで骨格を検出する方法と骨格位置をcsvで保存する方法を記載しています.

Azure Kinect を動かすための環境やPCに必要なスペックはこちらを確認してください.

Body Tracking SDK

骨格検出をするためには,Body Tracking SDKをPCに導入しなければなりません.

最新バージョンを「msi」リンク先からダウンロードしてインストールします.windowsスタートボタンから「body」と打ちBody Tracking Viewerが起動できればインストールが完了しています.

実際に起動して人を検出すると以下のように骨格部分が色付けされます.

骨格検出精度は良くなったのか?

従来のKinect v2でも骨格検出は可能でした.Azure Kinectはさらに骨格検出精度が向上しています.具体的にはv2ではピクセル周囲の奥行き情報の差分のみを特徴量としていたものを,Azure Kinectではディープラーニングベースで検出を行うことで,物を持った時など環境要因での外乱に対して強くなっています.さらに身体の表裏が識別できるようになりました.

以下の比較動画からも体の表裏が適切に認識していることが分かります.ローパスフィルターのようなものが初期状態で組み込まれていて骨格の推定箇所のノイズも抑えられています.

骨格位置を保存する方法

SDKを導入するだけでは骨格位置をプレビューはできても保存することはできません.以下のツールを導入するとcsv形式で骨格三次元位置を保存し,データ分析時に使えます.

AKRecorderは人が現れたタイミングで骨格座標値(csv)とDepthカメラ視点でのカラー画像(png)の記録を開始し,人が去ったタイミングで記録を終了します.記録したファイルは年月日と記録開始時のタイムスタンプを名前にしたディレクトリに保存され,最大6人まで対応しています.

AKRecorderはCsharp_3d_viewer.slnをVisual Studioで開き,ビルドすることで実行できます.事前にPosSaver.csv内で,データの保存先のパスを指定しましょう(33行目).ビルド時にエラーが出る場合は依存パッケージが足りないことがほとんどなので,適宜インストールします.また,記録中に骨格位置を可視化する場合は同コード内でGUI描画に関する箇所をコメントアウトしてください.

まとめ

Azure Kinect Body Tracking SDK およびAKRecorderを利用して骨格検出し,骨格座標値を保存する方法について記載しました.

この記事が役に立ったという方はツイートで拡散しよう!

この記事を書いた人

正田 孝平

正田 孝平

学生ブロガー兼エンジニア(東工大院21卒)
AI,IoT,web最新技術の具体的活用術、キャッシュレス決済と資産運用の最新トレンドや語学の体系的学習法について発信。在学中は人力飛行機の製作、webアプリ開発に積極的に携わった。
【趣味】
球技、水泳、マラソン、スノーボード