Estoy jugando con el nuevo Kinect SDK v1.0.3.190. (otras preguntas relacionadas en stackoverflow están en el SDK anterior de Kinect) Obtengo flujos de color y profundidad desde Kinect. Como las secuencias de profundidad y RGB se capturan con diferentes sensores, hay una desalineación entre dos cuadros, como se puede ver a continuación.Profundidad de Kinect y alineación de marcos de imagen
Sólo RGB
Sólo Profundidad
Profundidad & RGB
necesito para alinearlos y hay una función llamada MapDepthToColorImagePoint exactamente para este propósito. Sin embargo, parece que no funciona. aquí es una igualmente mezclado (profundidad y color mapeada) resultar debajo de la cual se crea con el siguiente código
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]));
});
donde
depthFrameData -> raw depth data (short array)
videoBitmapData -> raw image data (byte array)
mappedBitmapData -> expected result data (byte array)
orden de los parámetros, la resolución, tamaños de matriz son correctos (doble marcado) .
El resultado del código es:
La desalineación continúa! Lo que es aún peor es que, la imagen resultante después de usar MapDepthToColorImagePoint es exactamente igual con la imagen original.
Sería de agradecer si alguien pudiera ayudarme a descubrir mi error o al menos explicarme para qué sirve MapDepthToColorImagePoint (suponiendo que malinterpreté su funcionalidad)?