Profundidad de Kinect y alineación de marcos de imagen
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 profundidad y flujos de color de Kinect. Como la profundidad y los flujos RGB se capturan con diferentes sensores, existe una desalineación entre dos cuadros, como se puede ver a continuación.
Solo rgb
Solo profundidad
Profundidad y RGB
Necesito alinearlos y hay una función llamada MapDepthToColorImagePoint exactamente para este propósito. Sin embargo, no parece funcionar. A continuación se muestra un resultado igual de combinado (profundidad y color mapeado) que se crea con el siguiente 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>
dónde
<code>depthFrameData -> raw depth data (short array) videoBitmapData -> raw image data (byte array) mappedBitmapData -> expected result data (byte array) </code>
El orden de los parámetros, la resolución, los tamaños de matriz son correctos (doble verificación).
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 la misma que la imagen original.
Se agradecería si alguien pudiera ayudarme a descubrir mi error o al menos explicarme para qué sirve MapDepthToColorImagePoint (suponiendo que entendí mal su funcionalidad).