Depth map Player Index

主専攻実験 第2,3回
ガイダンス資料
2014年度
TA:
1. 稲田 利亀 (Inada Toshiki) (M1)
2. 田中 翔平 (Tanaka Shohei) (M1)
3. チェンドラ ハドィ スルヤント (Chendra Hadi Suryanto) (D2)
メール:{inada, tanaka, chendra}@cvlab.cs.tsukuba.ac.jp
実験課題1
1. Kinectから画像を取得し、OpenCVで表示する
• RGB画像
• 距離画像
2. Nearモードの設定
3. 人物領域を切り出し(プレイヤーインデックス)、
表示する
配布するプログラムを変更して課題に取り組んでく
ださい
認識プログラム全体の処理の流れ
Kinect SDK
カラー画像、距離画像、
などの取得
今回はここです
画像処理
OpenCV
特徴抽出
認識
出力
辞書
Kinectについて
• Kinect for XBOX:
• Nearモードがありません
• Kinect for Windows (バージョン1):
• 今の使っているKinect
• Kinect for Windows バージョン 2:
• 今後のKinect:前回よりもっと正確
Kinect バージョン1から取得可能なデータ
• RGB画像
• 距離画像
• ユーザーインデックス
• スケルトン情報
• 赤外線画像
• 音声
• 顔情報
• 加速度
今週の課題
RGB画像の表現形式
• 各画素ごとに24bitの値が得られる.
• RGBの各チャンネルごとに8bit(0~255) + 無効値
8bit
• 下図のように格納されている
B
G
R
無効値
8bit
8bit
8bit
8bit
距離画像
距離画像(デプスマップ):
→撮影機器との距離値を表した画像
SDKより得られる距離データは13bit(0~8192)である.可視化
を行う場合この数値を(0~255)の範囲へ変換する必要がある.
距離画像
Defaultモード/Nearモード:
• Kinectでは距離画像取得時に2種類のモードを選択するこ
とができる
• Nearモードに設定することで、Defaultモードより近い距離ま
でデータが取得可能になる
距離画像・プレイヤーインデックスの表現形式
• NuiImageStreamGetNextFrame()から1画素は16ビットデータ。距離値
(13ビット)とプレイヤーインデックス( 3ビット)から成る
• NuiDepthPixelToDepth()関数とNuiDepthPixelToPlayerIndex()関数を利
用して16bitのデータを分離できる
13ビット
Depth map
3ビット
Player Index
• プレイヤーインデックス( 3ビット): 0:人以外領域,1~6:追跡された人
OpenCVのデータ形式へ変換
• 今回のプログラムでは、Kinect SDKでKinectから取得した
データをOpenCVを使って表示する。この時に、OpenCVの
データ表現形式(型)に変換する必要がある。
• Kinectからの4チャネル画像→
cv::Matクラス(CV_8UC4, 4チャネル)
• 距離画像→
cv::Matクラス(CV_16UC1,1チャネル)
• OpenCVで画像・行列を扱うクラスは以下に参考:
• http://opencv.jp/cookbook/opencv_mat.html