2012-03-26 6 views
3

Ich versuche, einen PointCloud-Mapping-Benutzer mit mehreren Kinects auf Processing zu machen. Ich bekomme die Vorder- und Rückseite des Benutzers mit 2 Kinects auf gegenüberliegenden Seiten und erzeuge beide PointClouds.PointCloud mit mehreren Kinects

Das Problem ist, dass die PointClouds X/Y/Z nicht synchronisiert sind, es bringt nur die beiden auf den Bildschirm und es sieht sicherlich chaotisch aus. Es gibt eine Möglichkeit, sie zu berechnen oder zu vergleichen, um die zweite PointCloud so zu übersetzen, dass sie der ersten "beitritt". Ich könnte die Position manuell übersetzen, aber wenn ich die Sensoren bewege, geht es wieder los.

+0

Verwenden Sie das Ereignis 'AllFramesReady'? Das soll alle Kameras synchronisieren –

Antwort

4

Nimmt man alle Kinects stationär sind, ich glaube, Sie würden in dieser Reihenfolge gehen müssen:

  1. entscheiden, auf dem Kinect als globale Referenz zu verwenden,
  2. get Parameter für eine 3D-Transformation für jeden der anderen Kinects - möchte ich Verwendung PMatrix3D und applyMatrix() versuchen, obwohl es langsam sein kann,
  3. die Transformationen Punktwolken auf jedem der anderen Kinects gelten und die Wolken
zeichnen

Ich weiß (noch) nicht, wie man die Transformationsparameter für eine Procrustes transformation erhält, aber vorausgesetzt, dass sie sich nicht ändern, müssten Sie möglicherweise mehrere Referenzpunkte einrichten, indem Sie die Punktwolken von jedem Paar anzeigen von Kinects und das Registrieren der Punkte, die Sie kennen, sind in beiden Punktwolken gleich. Nachdem Sie genug von ihnen bekommen haben, erstellen Sie eine PMatrix3D und wenden Sie sie in Push/PopMatrix an. Dies ist die von diesem Typ verwendete Methode: http://www.youtube.com/watch?v=ujUNj1RDL4I

Ein alternativer Ansatz wäre die Verwendung eines Iterative Closest Point-Algorithmus und die Konstruktion einer 3D-Transformation aus der Ausgabe. Ich würde wirklich gerne eine ICP oder PCL-Bibliothek für die Verarbeitung, wenn jemand eine gute weiß.

+0

Vielen Dank! Ich werde es versuchen, ich werde deine Antwort für jetzt abstimmen. –