[C#][OpenCV][EmguCV][Stereo] Fehler bei StereoCalibrate

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
The_Real_Black
Establishment
Beiträge: 110
Registriert: 19.01.2008, 19:57
Benutzertext: Happy Coding
Kontaktdaten:

[C#][OpenCV][EmguCV][Stereo] Fehler bei StereoCalibrate

Beitrag von The_Real_Black »

Code: Alles auswählen

    //Emgu.CV.IntrinsicCameraParameters intParams = new Emgu.CV.IntrinsicCameraParameters();
    Emgu.CV.IntrinsicCameraParameters intParams1 = new Emgu.CV.IntrinsicCameraParameters();
    Emgu.CV.IntrinsicCameraParameters intParams2 = new Emgu.CV.IntrinsicCameraParameters();
    Emgu.CV.ExtrinsicCameraParameters extParams;
    Emgu.CV.ExtrinsicCameraParameters[] extP;
    Emgu.CV.Matrix<double> found,ess;

    // Eine Kamera aber welche?
    //Emgu.CV.CameraCalibration.CalibrateCamera(worldpoints, found_points_right.ToArray(), BmpRight.Size, intParams,
    //   Emgu.CV.CvEnum.CALIB_TYPE.CV_CALIB_FIX_PRINCIPAL_POINT, out extP);

    // StereoCalibrate: Beide Kameras(?)
    Emgu.CV.CameraCalibration.StereoCalibrate(worldpoints, found_points_left.ToArray(), found_points_right.ToArray(),
       intParams1, intParams2, BmpRight.Size, Emgu.CV.CvEnum.CALIB_TYPE.DEFAULT,
       new MCvTermCriteria(100, 0.001), out extParams, out  found, out  ess);

    //IntrinsicCameraParameters.Undistor  -> OpenCV: Ar.size() == Size(3,3) || Ar.size() == Size(4, 3)
    //BmpLeft= intParams.Undistort<Bgr, byte>(new Emgu.CV.Image<Bgr, byte>(BmpLeft)).ToBitmap(); // ein versuch 
    BmpLeft = intParams1.Undistort<Bgr, byte>(new Emgu.CV.Image<Bgr, byte>(BmpLeft)).ToBitmap();
    BmpRight= intParams2.Undistort<Bgr, byte>(new Emgu.CV.Image<Bgr,byte>(BmpRight)).ToBitmap();
Hallo Community,

Ich versuche, mit Stereokameras, eine Tiefenmessung zu realisieren, aber auf Grund von Verzerrungen ist das momentane Ergebniss nicht ganz "Optimal". Deshalb wollte ich die Kameras kalibieren und die StereoCalibrate Methode verwenden, aber nach dem ich die IntrinsicCameraParameters.Undistort Methode aufrufe kommt es zu einer Exception "OpenCV: Ar.size() == Size(3,3) || Ar.size() == Size(4, 3)"

Was man auch verstehen kann, denn in den IntrinsicCameraParameters gibt es nur ein {double[5, 1]} Array.

Leider ist die Methode "CameraCalibration.Undistort2<Bgr, byte>(imageRaw, intParams);" veraltet und bereits in der aktuellen Version entfernt worden.
Aus der Dokumentation: "Will be removed in the next version, use IntrinsicCameraParameters.Undistor function instead"
Was ich auch versucht habe, hierzu der Code oben.

Wie kann ich nun die Kalibrationsdaten nutzen? Gibt es hierzu ein funktionierendes Tutorial mit der aktuellen Version?
Oder hat dies schon mal jemand zum laufen bekommen?

Danke im Vorraus,
TheRealBlack
Happy Coding.
Benutzeravatar
kimmi
Moderator
Beiträge: 1412
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: [C#][OpenCV][EmguCV][Stereo] Fehler bei StereoCalibrate

Beitrag von kimmi »

Hast du schon mal in deren Board nachgefragt? Die können die da bestimmt besser helfen: http://www.emgu.com/forum/viewforum.php?f=1

Gruß Kimmi
Benutzeravatar
The_Real_Black
Establishment
Beiträge: 110
Registriert: 19.01.2008, 19:57
Benutzertext: Happy Coding
Kontaktdaten:

Re: [C#][OpenCV][EmguCV][Stereo] Fehler bei StereoCalibrate

Beitrag von The_Real_Black »

kimmi hat geschrieben:Hast du schon mal in deren Board nachgefragt? Die können die da bestimmt besser helfen: http://www.emgu.com/forum/viewforum.php?f=1

Gruß Kimmi
http://www.emgu.com/forum/viewtopic.php?f=7&t=1508
Ja ^^
und nein bis jetzt gabs dort auch keine Antwort.
Happy Coding.
Antworten