Alinhamento de profundidade e enquadramento de imagem do Kinect

Estou brincando com o novo Kinect SDK v1.0.3.190. (outras questões relacionadas no stackoverflow estão no sdk do kinect anterior) Eu recebo fluxos de profundidade e cor do Kinect. Como a profundidade e os fluxos RGB são capturados com diferentes sensores, há um desalinhamento entre dois quadros, como pode ser visto abaixo.

Apenas RGB

Apenas profundidade

Profundidade e RGB

Eu preciso alinhá-los e existe uma função chamada MapDepthToColorImagePoint exatamente para essa finalidade. No entanto, não parece funcionar. aqui está um resultado igualmente misturado (profundidade e cor mapeada) abaixo do qual é criado com o seguinte código

<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>

Onde

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

videoBitmapData -> raw image data (byte array)

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

ordem dos parâmetros, resolução, tamanhos de matriz estão corretos (double checked).

O resultado do código é:

O desalinhamento continua! O que é ainda pior é que, resultado imagem depois de usar MapDepthToColorImagePoint é exatamente o mesmo com a imagem original.

Seria apreciado se alguém pudesse me ajudar a descobrir o meu erro ou pelo menos me explicar o que é MapDepthToColorImagePoint para (supondo que eu não entendi sua funcionalidade)?

questionAnswers(2)

yourAnswerToTheQuestion