OpenCV Stereo-Anpassung / Kalibrierung

9

Ich hatte dies ursprünglich in den OpenCV-Foren gepostet, aber leider habe ich nicht zu viele Ansichten / Antworten bekommen, also poste ich hier mit der Hoffnung, dass jemand eine Anweisung haben könnte, bitte vorschlagen?

Ich benutze die Bumblebee XB3 Stereokamera und sie hat 3 Objektive. Ich habe ungefähr drei Wochen damit verbracht, Foren, Tutorials, das Learning OpenCV-Buch und die aktuelle OpenCV-Dokumentation über die Verwendung der Stereokalibrierungs- und Stereo-Matching-Funktionalität zu lesen. Zusammenfassend ist mein Problem, dass ich eine gute Disparity Map erstellt habe, aber sehr schlechte Point-Clouds, die verzerrt erscheinen und nicht repräsentativ für die tatsächliche Szene sind.

Was ich bisher gemacht habe:

Verwenden Sie die Beispiele OpenCV stereo_calibration und stereo_matching für:

Kalibrierte meine Stereokamera mit Schachbrettbildern

1) Raw Scene Bilder: Ссылка 2) Die von der Kamera erhaltenen Rohbilder wurden korrigiert, indem die Matrizen nach der Kamerakalibrierung verwendet wurden: Ссылка 3) Erzeugung eines Disparitätsbildes von den entzerrten Bildern mittels Stereo-Matching (SGBM): 4) Projizierte diese Unterschiede zu einer 3D-Punktwolke

Was ich bis jetzt zur Beseitigung meines Problems getan habe:

  • Ich habe die 1. und 2. Bilder, dann die 2. und 3. Linse und versucht endlich der 1. und 2..
  • Ich habe die Kalibrierung meiner Schachbrett-Aufnahmen wiederholt, indem ich die Entfernung (näher / weiter weg)
  • Ich habe über 20 Stereo-Paare für die Kalibrierung verwendet
  • variierende Schachbrettgröße verwendet: Ich habe ein 9x6 Schachbrett Bild für verwendet Kalibrierung und jetzt auf die Verwendung eines 8x5 eins statt
  • Ich habe versucht, sowohl die Block-Matching- als auch die SGBM-Variante zu verwenden und bekomme ein relativ ähnliche Ergebnisse. Ankommen bessere Ergebnisse mit SGBM bisher.
  • Ich habe die Disparitätsbereiche variiert, die Größe des SAD-Fensters geändert usw. mit kleine Verbesserung

Was ich vermute, ist das Problem:

Mein Disparitätsbild sieht relativ akzeptabel aus, aber der nächste Schritt besteht darin, mit der Q-Matrix in die 3D-Punktwolke zu gehen. Ich vermute, ich kalibriere die Kameras nicht korrekt, um die richtige Q-Matrix zu erzeugen. Leider bin ich in Bezug auf das, was ich noch tun kann, um eine bessere Q-Matrix zu bekommen, in die Falle gegangen. Kann jemand bitte Wege vorschlagen?

Die andere Sache, die ich für problematisch halte, sind die Annahmen, die ich bei der Verwendung der cv :: stereoCalibrate-Funktion mache. Im Moment kalibriere ich jede Kamera einzeln, um die Kamera und die Verzerrung zu erhalten (cameraMatrix [0], distCoeffs [0] und cameraMatrix [1], distCoeffs [1]), so dass die Komplexität für die StereoCalibrate-Funktion etwas einfacher wird.

%Vor%

Außerdem denke ich, dass es nützlich sein könnte, zu erwähnen, wie ich von Disparität zu Punktwolke gehe. Ich benutze OpenCVs cv :: reprojectImageTo3D und schreibe dann die Daten in eine PCL Point Cloud-Struktur. Hier ist der relevante Code:

%Vor%

PS: Der Grund, warum ich diese Bilder hochgeladen habe, ist, dass die Szene eine Textur hat, also habe ich eine Antwort erwartet, dass die Szene zu homogen ist. Der Bezug auf der Trennwand und der Stuhl sind sehr reich an Texturen.

Wenige Fragen:

Können Sie mir helfen, die Bild / Disparitätsebene zu entfernen, die Teil der Punktwolke zu sein scheint? Warum passiert das?

Gibt es etwas Offensichtliches, das ich falsch mache? Ich poste meinen Code, aber er ist den OpenCV-Beispielen sehr ähnlich und ich denke nicht, dass ich etwas kreativer mache. Ich kann, wenn es einen bestimmten Abschnitt gibt, der vielleicht etwas angeht.

In meiner naiven Meinung scheint das Disparitätsbild in Ordnung zu sein. Aber die Punktwolke ist definitiv nichts, was ich von einem relativ anständigen Disparitätsbild erwartet hätte, es ist viel schlimmer.

Wenn es hilft, habe ich die Q-Matrix erwähnt, die ich nach der Kamerakalibrierung erhalte, wenn etwas Offensichtliches herausspringt. Vergleicht man dies mit dem Learning OpenCV-Buch, glaube ich nicht, dass etwas eklatant falsch ist ...

%Vor%

Danke fürs Lesen und ich werde irgendwelche Vorschläge zu diesem Zeitpunkt wirklich zu schätzen wissen ...

    
BumblebeeUser89 06.10.2013, 04:53
quelle

1 Antwort

0

Ich habe ähnliche Probleme bei der Verwendung der OpenCV (v.2.4.6) 3D-Rekonstruktionsfunktion gefunden. Einige Leute, wie Martin Peris, haben sich wieder selbstständig gemacht. Ссылка

Leider habe ich manchmal Probleme bei beiden Implementierungen mit meinen Daten gefunden. Ich vermute also, dass mein Problem in diesen Fällen auf eine schlechte extrinsische Kameraparameterbeschreibung zurückzuführen ist. Vielleicht ist es auch dein Fall. : -?

PS. Um den Hintergrund loszuwerden, müssen Sie ihn segmentieren. Oder überprüfen Sie zumindest die Tiefenwerte, die größer als ein Schwellenwert sind, sobald die Rekonstruktion funktioniert. handleMissingValues-Flag eliminiert nur Punkte bei "unendlich" PS2. Bitte sagen Sie uns, wenn Sie dieses Problem lösen. Ich denke, es ist wertvoll für die ganze Community. Thnx

    
David 29.10.2013 15:54
quelle