Kinect Depth und Image Frames Alignment

8

Ich spiele mit dem neuen Kinect SDK v1.0.3.190 herum. (andere verwandte Fragen in Stackoverflow sind auf vorherigen SDK von Kinect) Ich bekomme Tiefen- und Farbströme von Kinect. Da die Tiefen- und RGB-Ströme mit unterschiedlichen Sensoren erfasst werden, besteht eine Fehlausrichtung zwischen zwei Bildern, wie unten zu sehen ist.

Nur RGB

Nur Tiefe

Tiefe & amp; RGB

Ich muss sie ausrichten und es gibt eine Funktion namens MapDepthToColorImagePoint genau für diesen Zweck. Es scheint jedoch nicht zu funktionieren. Hier ist ein gleichmäßiges Ergebnis (Tiefe und zugeordnete Farbe), unter dem mit dem folgenden Code

erstellt wird %Vor%

wo

%Vor%

Reihenfolge der Parameter, Auflösung, Array-Größen sind korrekt (doppelt überprüft).

Das Ergebnis des Codes ist:

Die Fehlausrichtung geht weiter! Noch schlimmer ist, dass das Ergebnisbild nach der Verwendung von MapDepthToColorImagePoint genau dem Originalbild entspricht.

Würde es mir gefallen, wenn jemand mir helfen könnte, meinen Fehler zu finden oder mir zumindest erklären zu können, was MapDepthToColorImagePoint ist (vorausgesetzt, dass ich seine Funktionalität missverstanden habe)?

    
hevi 30.04.2012, 23:09
quelle

2 Antworten

4

Dies wird immer etwas passieren, weil die beiden Sensoren an leicht unterschiedlichen Stellen montiert sind.

Probieren Sie es aus:

Sieh dir ein Objekt mit deinen zwei Augen an und versuche dann, nur dein linkes Auge und dann nur dein rechtes Auge zu benutzen. Die Dinge sehen etwas anders aus, weil deine zwei Augen nicht genau an der gleichen Stelle sind.

Allerdings: Es ist möglich, viele Probleme mit einigen der API-Codes zu korrigieren.

Ich verwende Kinect für Windows 1.5, daher unterscheiden sich die APIs leicht von der 1.0.

%Vor%

Das sind die Grundlagen. Wenn Sie sich das Greenscreen-Beispiel im Kinect Developer Toolkit 1.5 ansehen, zeigt es eine gute Verwendung dafür.

    
Mark Gossage 30.10.2012 02:50
quelle
1

Dies ist ein sehr häufiges Problem, etwas, das mit der Mathematik verbunden ist, um die beiden Bilder zu synchronisieren, da die beiden Kameras an zwei verschiedenen Orten sitzen. So wie man die zwei von einer 3D-Kamera produzierten Video-Feeds nimmt und versucht, sie zu synchronisieren. Sie werden immer etwas abseits sein.

Zwei Ideen zur Korrektur:

  1. Verschieben Sie die Bits manuell aus dem Tiefenbild, während Sie es berechnen.
  2. Fügen Sie dem Kinect einen Shaker-Motor hinzu, um das Rauschen zu reduzieren: Ссылка (Ich habe einen einfachen Pager-Motor gefunden, der effektiv ist.)

Der MapDepthToColorImagePoint wird in der Skeletal-API verwendet, um einen Skelettpunkt einem Tiefenpunkt und dann einem Bildpunkt zuzuordnen, sodass Sie Verbindungen über dem RGB-Bild anzeigen können.

Hoffe, das hilft.

    
davidbates 07.05.2012 18:06
quelle

Tags und Links