512x424の解像度でDepth(距離、深度)画像を取得することができます。 測定可能な距離の範囲は500mm 〜 8000mm ですが、 人間を認識できる範囲は 500mm 〜 4500mm の範囲です。
Kinect20.lib において IDepthFrameSource は get_DepthMinReliableDistance()メソッドと get_DepthMaxReliableDistance()メソッドを持っていますが、 それぞれが返す値は 4500 と 500 です。
NtKinect では得られたDepth画像はピクセル毎に UINT16 (16bit 符号なし整数) で表現されます。
返り値の型 | メソッド名 | 説明 |
---|---|---|
void | setDepth(bool raw = true) | メンバ変数 depthImage に Depth 画像をセットする。 引数が「なし」か「true」で呼び出された場合、各画素には距離がmm単位で設定される。 引数が「false」で呼び出された場合、各画素には距離を 65535/4500 倍した値が設定される。 すなわち 0〜4500 (mm) という距離を0 (黒) 〜 65535 (白) という白黒画像の輝度にマップした画像になる。 |
型 | 変数名 | 説明 |
---|---|---|
cv::Mat | depthImage | Depth 画像。
512x424の大きさで、各ピクセルは UINT16 で表現される。 画像の座標は DepthSpace 座標系における位置となる。
UINT16 depth = rgbImage.at<UINT16>(y , x ); |
kinect.setDepth()メソッドを呼び出して kinect.depthImage に距離データを設定します。 引数として false を指定しているので、距離データは 65535/4500 倍された値となります。
最も近い 500mm は 7281 (11%、黒), 4500mm は 65535 (100%、白)の明るさで表現されることになります。
main.cpp |
|
setDepth()メソッドの呼び出しで引数にfalseを指定しているので、 ここで表示されているDepth画像は近い点(距離0m)を黒(0x0000)で、遠い点(距離 4.5m)を白(0xffff)で表した画像になります。
上記のzipファイルには必ずしも最新の NtKinect.h が含まれていない場合があるので、 こちらから最新版をダウンロードして 差し替えてお使い下さい。