Sto giocando con il nuovo Kinect SDK v1.0.3.190. (altre domande correlate nello stackoverflow sono sul precedente sdk di kinect) Ottengo flussi di profondità e colore da Kinect. Quando la profondità e gli stream RGB vengono catturati con sensori diversi, c'è un disallineamento tra due frame come si può vedere di seguito.Kinect Depth and Image Frames Alignment
Solo RGB
Solo Profondità
Profondità & RGB
ho bisogno di allinearle e c'è una funzione denominata MapDepthToColorImagePoint esattamente per questo scopo. Tuttavia non sembra funzionare. qui è un altrettanto miscelato (profondità e colore mappata) risultare sotto del quale viene creato con il seguente codice
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]));
});
dove
depthFrameData -> raw depth data (short array)
videoBitmapData -> raw image data (byte array)
mappedBitmapData -> expected result data (byte array)
ordine dei parametri, risoluzione, dimensioni di matrice siano corretti (ricontrollato) .
Il risultato del codice è:
Il disallineamento continua! Ciò che è ancora peggio è che l'immagine del risultato dopo l'uso di MapDepthToColorImagePoint è esattamente la stessa dell'immagine originale.
Sarebbe gradito se qualcuno potesse aiutarmi a scoprire il mio errore o almeno a spiegarmi cos'è MapDepthToColorImagePoint (supponendo che abbia frainteso la sua funzionalità)?