Main Content

pcfromkinect

Kinect for Windows からの点群

説明

ptCloud = pcfromkinect(depthDevice,depthImage) は、Kinect® 深度イメージの点群を返します。depthDevice 入力は、Kinect (Version 1 および 2) for Windows® 向けに構成された videoinput (Image Acquisition Toolbox) オブジェクトまたは imaq.VideoDevice (Image Acquisition Toolbox) オブジェクトのいずれかとすることができます。

この関数には Kinect for Windows をサポートする Image Acquisition Toolbox™ ソフトウェアが必要です。

ptCloud = pcfromkinect(depthDevice,depthImage,colorImage) は、colorImage 入力によって指定された色を返された点群に追加します。

ゲーム向けに設計された Kinect for Windows システムは、depthImage および colorImage をシーンの鏡像として生成します。返された点群は、実際のシーンに一致するように修正されています。

ptCloud = pcfromkinect(depthDevice,depthImage,colorImage,alignment) はさらに、イメージ座標系の位置合わせの方向を指定します。これは、色中心または深さ中心にすることができます。

すべて折りたたむ

Kinect イメージから色の点群をプロットします。ここでは Image Acquisition Toolbox ソフトウェアと、Kinect カメラおよびそのカメラへの接続が必要となります。

カラー デバイス用に System object™ を作成します。

colorDevice = imaq.VideoDevice('kinect',1)

深度デバイス用に System object を作成します。

depthDevice = imaq.VideoDevice('kinect',2)

カメラを初期化します。

step(colorDevice);
step(depthDevice);

デバイスから 1 つのフレームを読み込みます。

colorImage = step(colorDevice);
depthImage = step(depthDevice);

点群を抽出します。

ptCloud = pcfromkinect(depthDevice,depthImage,colorImage);

3 次元点群データを可視化する点群プレーヤーを初期化します。Kinect から点群が可視化されるよう、軸が適切に設定されます。

player = pcplayer(ptCloud.XLimits,ptCloud.YLimits,ptCloud.ZLimits,...
	'VerticalAxis','y','VerticalAxisDir','down');

xlabel(player.Axes,'X (m)');
ylabel(player.Axes,'Y (m)');
zlabel(player.Axes,'Z (m)');

ライブの Kinect 点群データから 500 フレームを取得して表示します。

for i = 1:500    
   colorImage = step(colorDevice);  
   depthImage = step(depthDevice);
 
   ptCloud = pcfromkinect(depthDevice,depthImage,colorImage);
 
   view(player,ptCloud);
end

オブジェクトを解放します。

release(colorDevice);
release(depthDevice);

入力引数

すべて折りたたむ

入力ビデオ オブジェクト。Kinect for Windows 向けに構成された videoinput (Image Acquisition Toolbox) オブジェクトまたは imaq.VideoDevice (Image Acquisition Toolbox) オブジェクトのいずれかとして指定します。

深度イメージ。M 行 N 列のピクセル行列として指定します。Kinect の元のイメージである depthImage および colorImage はシーンの鏡像です。

Kinect の深度カメラの範囲には制限があります。Kinect 深度カメラの範囲に制限があることで、深度イメージのピクセル値には対応する 3 次元座標がない可能性があります。これらの欠損ピクセル値は、返された点群の Location プロパティで NaN に設定されます。

データ型: uint16

カラー イメージ。Kinect が返す M x N x 3 の RGB トゥルーカラー イメージとして指定します。Kinect の元のイメージである depthImage および colorImage はシーンの鏡像です。

データ型: uint8

イメージ座標系の方向。文字ベクトル 'colorCentric' または 'depthCentric' として指定します。この値を 'colorCentric' に設定して depthImagecolorImage に一致させます。alignment'depthCentric' に設定して colorImagedepthImage に一致させます。

右手ワールド座標系の原点は、深度カメラの中心です。この座標系の x 軸の点はカメラから右方向へ、y 軸の点はカメラから下方向へ、z 軸の点はカメラから離れる方向へ向かいます。

メモ

Computer Vision Toolbox™ の座標系を一貫して使用するために、この関数により定義された座標系は、Kinect Skeletal メタデータで定義された座標系と異なります。

出力引数

すべて折りたたむ

点群。pointCloud オブジェクトとして返されます。返された点群の座標系の原点は、深度カメラの中心です。

バージョン履歴

R2015b で導入