Kinect Depth und Image Frames Alignment

Ich spiele mit dem neuen Kinect SDK v1.0.3.190 herum. (andere verwandte fragen in stackoverflow beziehen sich auf vorherige sdk von kinect) Ich erhalte Tiefen- und Farbströme von Kinect. Da die Tiefen- und RGB-Ströme mit verschiedenen Sensoren erfasst werden, liegt eine Fehlausrichtung zwischen zwei Bildern vor, wie unten zu sehen ist.

Nur RGB

Nur die Tiefe

Tiefe & RGB

Ich muss sie ausrichten und es gibt eine Funktion namens MapDepthToColorImagePoint genau für diesen Zweck. Es scheint jedoch nicht zu funktionieren. Hier ist ein gleichmäßiges Ergebnis (Tiefe und zugeordnete Farbe), das mit dem folgenden Code erstellt wird

<code>            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]));
        });
</code>

woher

<code>depthFrameData -> raw depth data (short array)

videoBitmapData -> raw image data (byte array)

mappedBitmapData -> expected result data (byte array)
</code>

Reihenfolge der Parameter, Auflösung, Arraygrößen sind korrekt (doppelt markiert).

Das Ergebnis des Codes ist:

Die Fehlausrichtung geht weiter! Was noch schlimmer ist, ist, dass das Ergebnisbild nach Verwendung von MapDepthToColorImagePoint mit dem Originalbild identisch ist.

Wäre dankbar, wenn mir jemand helfen könnte, meinen Fehler herauszufinden oder mir zumindest erklären könnte, wofür MapDepthToColorImagePoint steht (vorausgesetzt, ich habe seine Funktionalität falsch verstanden)?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage