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