私は新しいKinect SDK v1.0.3.190で遊んでいます。 (stackoverflowの他の関連する質問は、kinectの以前のsdkにあります) Kinectから深みと色の流れが得られます。深さおよびRGBストリームが異なるセンサで取り込まれると、以下に示すように、2つのフレームの間にミスアライメントが存在します。Kinectの奥行きと画像フレームのアライメント
のみRGB
深さだけ
深& RGB
私はそれらを合わせる必要があり、この目的のために、正確にMapDepthToColorImagePointという名前の関数があります。しかし、それは動作していないようです。ここで(深さおよびマッピングされた色)次のコードのパラメータ、解像度、アレイサイズの
depthFrameData -> raw depth data (short array)
videoBitmapData -> raw image data (byte array)
mappedBitmapData -> expected result data (byte array)
順序が正しい
Parallel.For(0, this.depthFrameData.Length, i =>
{
int depthVal = this.depthFrameData[i] >> 3;
ColorImagePoint point = this.kinectSensor.MapDepthToColorImagePoint(DepthImageFormat.Resolution640x480Fps30, i/640, i % 640, (short)depthVal, ColorImageFormat.RgbResolution640x480Fps30);
int baseIndex = Math.Max(0, Math.Min(this.videoBitmapData.Length - 4, (point.Y * 640 + point.X) * 4));
this.mappedBitmapData[baseIndex] = (byte)((this.videoBitmapData[baseIndex]));
this.mappedBitmapData[baseIndex + 1] = (byte)((this.videoBitmapData[baseIndex + 1]));
this.mappedBitmapData[baseIndex + 2] = (byte)((this.videoBitmapData[baseIndex + 2]));
});
で作成された下に生じる等しくブレンドする(ダブルチェック) 。
コードの結果は次のとおりです。
ずれが続きます!さらに悪いのは、MapDepthToColorImagePointを使用した後の結果イメージが元のイメージとまったく同じことです。
誰かが私の間違いを知る助けになるか、少なくともMapDepthToColorImagePointについて教えてください(その機能を誤解していると仮定して)。