2017-01-29 3 views
1

Ich habe eine Disparitätskarte.ReprojectImageTo3D entsprechendes Pixel im Bild (Stereo Vision)

Basierend auf der Disparitätenkarte, schwebend auf den ‚linken Bild‘ angezeigt:

X und y des Bildes, also wenn ich auf der oberen linken Ecke die meisten schweben, wird es x:0, y:0

Die Anzeige nächster Schritt ist die Entfernung des spezifischen Pixel angezeigt werden, um mein Leben einfach zu machen, werde ich versuchen, es zu tun mit reprojectImageTo3D(disp, Q)

bekam ich Q von stereoRectify

jetzt, reprojectImageTo3D in Python, gibt eine n by 3 Matrix zurück.

So kann ich sehen, es ist eine Reihe von x y z Koordinaten. Fragen, woher weiß ich, welchem ​​Pixel diese Koordinaten entsprechen?

Dies ist ein Beispiel der 3D-Punkte, die mir numpy.savetxt

http://pastebin.com/wwDCYwjA

BTW mit abgespeichert: Ich bin alles in Python zu tun, aber GUI in Java, ich habe keine Zeit zu studiere GUI in Python.

Antwort

1

Wenn Sie Ihre Disparitätskarte korrekt berechnen, sollten Sie (n1, n2,1) dimensionales Array erhalten, wobei n1, n2 - Anzahl der Bildpixel nach Achsen, 1 - Anzahl der Kanäle (ein Kanal, die Entfernung in Pixel zwischen den entsprechenden Pixeln von den linken und rechten Bildern). Sie sollten dies überprüfen, indem Sie disp.shape eingeben. Danach sollten Sie das NDarray Ihrer Disparitätskarte an reprojectImageTo3D Funktion übergeben und NDarray erhalten, welches (n1, n2,3) -Form hat (dritte Dimension enthält X, Y, Z-Koordinaten des 3D-Punktes). Sie können prüfen, das durch Eingabe von

threeDImage = reprojectImageTo3D(disp, Q) 
print threeDImage.shape 

Und schließlich, da Sie Ihre Disparitätenkarte gemacht basierend auf dem linken Bild, jedes Pixel, die Koordinaten x, y auf dem linken Bild (oder Disparitätenkarte) entspricht threeDImage hat [ x] [y] 3D-Punkt. Denken Sie daran, diese Zeile: 0, Spalte: 0 ist das obere linke Element der Matrix, basierend auf opencv Umgang mit Bildern:

0/0---column---> 
| 
| 
row 
| 
| 
v 
+0

Hallo, danke, du hast Recht, ich erkannte, dass ich etwas falsch gemacht habe . Im Python-Beispiel gab es eine Maske, um die Disparität zu filtern, und sie formte die Punkte durch 3 Matrix in n um. Ich fand heraus, ursprünglich, reprojectImageTo3D gibt die gleiche Form wie das Bild zurück: D – Wreigh

Verwandte Themen