5 Stimmen

cvReprojectImageTo3D -3d-Modellierung aus 2D-Bildern Problem-

Ich brauche dringend ihre hilfe zu diesem thema. ich versuche, eine einfache szene in 3d aus 2d bildern zu modellieren. ich verwende 2 bilder (links und rechts die berühmte tsukuba-szene) http://www.cc.gatech.edu/classes/AY2003/cs7495_fall/ProblemSets/Data/tsukuba-right.bmp Ich erhalte eine Disparitätskarte, wie diese hier. http://www.robots.ox.ac.uk/~ojw/2op/tsukuba_score.png

danach habe ich einige Fragen. ich denke, die Schritte sollten sein:

cvStereoRectify ( um Q zu erhalten) cvReprojectImageTo3D (Disparitätskarte, 3dimage , Q )

aber ich weiß nicht, was ich als Eingaben in stereoRectify übergeben soll, ich habe nur 2 Bilder, ich habe keine Informationen über Kameras. (vielleicht kann ich stereoRectifyUncalibrated stattdessen verwenden, wenn ja, wie mache ich?)

bitte helfen danke

13voto

jmartel Punkte 2741

Auszug aus dem opencv-Dokument :

" Die Funktion stereoRectify berechnet für jede Kamera die Rotationsmatrizen, die beide Kamera-Bildebenen (virtuell) zur gleichen Ebene machen. Dadurch werden alle Epipolarlinien parallel und das Problem der dichten Stereokorrespondenz wird vereinfacht. Als Eingabe nimmt die Funktion die von stereoCalibrate() berechneten Matrizen und gibt als Ausgabe 2 Rotationsmatrizen sowie 2 Projektionsmatrizen in den neuen Koordinaten aus. "

Antwort:

Es gibt 3 Möglichkeiten:

  • Oder Sie haben zwei Bilder und kennen das Modell Ihrer Kamera (intrisics), die Sie zum Beispiel aus einer XML-Datei geladen haben loadXMLFromFile() => stereoRectify() => reprojectImageTo3D()

  • Oder Sie haben sie nicht, aber Sie können Ihre Kamera kalibrieren => stereoCalibrate() => stereoRectify() => reprojectImageTo3D()

  • Oder Sie können die Kamera nicht kalibrieren (was bei Ihnen der Fall ist, weil Sie nicht über die Kamera von Sir Tsukuba verfügen), dann müssen Sie auf beiden Bildern paarweise Keypoints finden, z. B. mit SURF oder SIFT (Sie können jeden beliebigen Blob-Detektor verwenden), dann die Deskriptoren dieser Keypoints berechnen, dann die Keypoints von Bild rechts und Bild links anhand ihrer Deskriptoren abgleichen und dann die Grundmatte aus ihnen finden. Die Verarbeitung ist viel schwieriger und würde wie folgt aussehen: Keypoints erkennen (SURF, SIFT) => Deskriptoren extrahieren (SURF,SIFT) => Deskriptoren vergleichen und abgleichen (BruteForce, Flann-basierte Ansätze) => Fundamentalmatte (findFundamentalMat()) aus diesen Paaren finden => stereoRectifyUncalibrated() => reprojectImageTo3D()

Ich hoffe, es hat Ihnen geholfen, wenn nicht, lassen Sie es mich bitte wissen.

Julien,

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X