Wie kann die Korrektheit der Kalibrierung einer Webcam überprüft werden?
Bin ich Total neu auf die Kamera-Kalibrierung-Techniken... ich bin mit OpenCV Schachbrett-Technik... ich bin mit einer webcam von Quantum...
Hier sind meine Beobachtungen und meine Schritte..
- Ich habe jede Schach-Platz Seite = 3,5 cm. Es ist ein 7 x 5-Schachbrett mit 6 x 4 inneren Ecken. Ich nehme insgesamt 10 Bilder in verschiedenen Ansichten und Posen in einer Entfernung von 1 bis 1,5 m von der webcam.
- Bin ich folgenden C-code in Learning OpenCV von Bradski für die Kalibrierung.
mein code für die Kalibrierung istcvCalibrateCamera2(object_points,image_points,point_counts,cvSize(640,480),intrinsic_matrix,distortion_coeffs,NULL,NULL,CV_CALIB_FIX_ASPECT_RATIO);
- Vor dem Aufruf dieser Funktion, dass ich die erste und 2. element entlang der diagonalen der intrinsischen matrix, wie einer, der das Verhältnis der Brennweiten konstant und mit
CV_CALIB_FIX_ASPECT_RATIO
- Mit der änderung in der Entfernung von dem Schachbrett der
fx
undfy
ändern sich mitfx:fy
fast gleich 1 ist. es gibtcx
undcy
Werte in der Größenordnung von 200 bis 400. diefx
undfy
sind in der Größenordnung von 300 - 700, wenn ich die Distanz ändern. - Derzeit habe ich alle die Verzerrungen Koeffizienten zu null, weil ich nicht bekommen gute Ergebnis einschließlich der verkrümmungskorrektur. Meine ursprüngliche Bild sah schöner als die unverzerrte!!
Mache ich die Kalibrierung korrekt?. Sollte ich keine andere option, als CV_CALIB_FIX_ASPECT_RATIO
?. Wenn ja, welche?
InformationsquelleAutor der Frage rotating_image | 2012-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hmm, sind Sie auf der Suche nach "schönen" oder "richtig"?
Kamera-Kalibrierung ist eines der wenigen Themen in computer vision, wo Genauigkeit kann direkt quantifiziert wird, in Physischer Hinsicht, und überprüft, die von einem physikalischen experiment. Und die übliche Lehre ist, dass (a) deine zahlen sind nur so gut, wie der Aufwand (und Geld) die du in Sie investierst, und (b) real-Genauigkeit (im Gegensatz zum eingebildeten) ist teuer, so sollten Sie herausfinden, im Voraus, was Ihre Anwendung erfordert wirklich in der Art von Präzision.
Wenn man sich die geometrischen Angaben auch sehr Billig-Objektiv/sensor Kombinationen (in den megapixel-Bereich und darüber), wird es offensichtlich, dass die sub-sub-mm-Kalibrierung die Genauigkeit ist theoretisch erreichbar innerhalb einer table-top-Volumen des Raumes. Nur die Arbeit (aus dem Datenblatt Ihrer Kamera-sensor) der Feste Winkel überspannt von einem pixel - Sie werden geblendet durch die räumliche Auflösung, die Sie innerhalb der Reichweite Ihrer Brieftasche. Aber tatsächlich erreichen WIEDERHOLBAR etwas in der Nähe, die theoretische Genauigkeit erfordert Arbeit.
Hier sind einige Empfehlungen (aus eigener Erfahrung) für eine gute Kalibrierung Erfahrung mit home-grown-Ausrüstung.
Wenn Ihr Methode verwendet ein flaches Ziel ("Schachbrettmuster" oder ähnlich), die Herstellung eines gutes. Wählen Sie eine sehr flache Unterlage (für die Größe, die Sie erwähnen, Fenster, Glas 5 mm dick oder mehr ist ausgezeichnet, obwohl offensichtlich zerbrechlich). Überprüfen Sie auf Ebenheit gegen den anderen Rand (oder, besser, ein laser-Strahl). Das Muster drucken auf dickem Papier, der nicht zur Strecke zu leicht. Legen Sie es nach dem Druck auf die Unterlage vor dem kleben und überprüfen Sie, dass das Quadrat die Seiten sind in der Tat sehr fast orthogonal. Günstige ink-jet-oder laser-Drucker sind nicht für den strengen geometrischen Genauigkeit, Vertrauen Sie nicht blind. Best practice ist die Verwendung einer professionellen print-shop (auch ein Kinko ' s machen einen viel besseren job als die meisten home-Druckern). Befestigen Sie dann die Muster sehr sorgfältig den Träger, verwenden spray-on und Kleber langsam abreiben mit einem weichen Tuch, um zu vermeiden, Blasen und stretching. Warten Sie einen Tag oder länger auf den Leim zu heilen und das Leim-Papier-stress zu erreichen, die langfristige steady-state. Schließlich Messen die Eckpunkte mit einem guten Sattel und eine Lupe. Sie können sich mit einer einzigen Zahl für die "durchschnittlichen" Quadrat der Größe, aber es muss ein Durchschnitt von Messungen, nicht von Hoffnungen-n-Gebete. Best practice ist, um tatsächlich eine Tabelle von gemessenen Positionen.
Beobachten Sie Ihre Temperatur und Luftfeuchtigkeit änderungen: Papier adsorbiert Wasser aus der Luft, der Unterlage erweitert und Verträge. Es ist erstaunlich, wie viele Artikel, die Sie finden können, dass der Bericht sub-millimeter-Kalibrierung Genauigkeiten ohne Angabe der Umgebungsbedingungen (oder das Ziel Reaktion auf Sie). Unnötig zu sagen, Sie sind meist Mist. Die niedrigere Temperatur eine Dehnung Koeffizient von Glas im Vergleich zu herkömmlichen Blech ist ein weiterer Grund für die Bevorzugung der ehemaligen als Unterlage.
Unnötig zu sagen, müssen Sie deaktivieren Sie die auto-Fokus - feature der Kamera, wenn er eines hat: die Fokussierung körperlich bewegt ein oder mehrere Stücke von Glas in Ihrem Objektiv, wodurch sich die (leicht) Bereich der Ansicht und (in der Regel durch eine Menge) die Objektiv-Verzerrung und der wichtigste Punkt.
Platzieren Sie die Kamera auf eine stabile Halterung, die nicht vibrieren leicht. Fokus (und f-stoppen Sie die Linse, wenn es hat eine Regenbogenhaut) ist für die Antragstellung benötigt (nicht an der Kalibrierung - die kalibrierprozedur und das Ziel gestaltet werden müssen, für die app braucht, nicht Umgekehrt). Nicht einmal denke berühren der Kamera oder dem Objektiv danach. Wenn möglich, vermeiden "Komplex" Objektive - z.B. zoom-Objektive oder sehr großen Winkel ersetzt. Fisheye-oder anamorphen Linsen, erfordern Modelle, die viel komplexer als Lager OpenCV zur Verfügung stellt.
Nehmen viele Messungen und Bilder. Sie wollen Hunderte von Messungen (Ecken) pro Bild, und Dutzende von Bildern. Wo Daten betrifft, je mehr desto besser. Einem 10x10 Schachbrett ist das absolute minimum würde ich prüfen. Ich normalerweise arbeitete bei 20x20.
Spannweite der Kalibrierung die Lautstärke beim fotografieren. Sie idealerweise möchten, dass Ihre Messungen gleichmäßig über das Volumen des Raumes, arbeiten Sie mit. Am wichtigsten ist, stellen Sie sicher, dass Winkel das Ziel deutlich, die mit Bezug auf die Brennweite Achse in einigen der Bilder zu Kalibrieren, die Brennweite, die Sie benötigen, um zu "sehen" einige echte Perspektive, Verkürzung. Für beste Ergebnisse verwenden Sie eine wiederholbare mechanische Vorrichtung zu bewegen ist das Ziel. Ein guter ist ein ein-Achsen-Plattenspieler, die Ihnen eine ausgezeichnete vor-Modell für die Bewegung des Ziels.
Minimieren Schwingungen und damit verbundenen Bewegungsunschärfe beim fotografieren.
Verwenden Sie eine gute Beleuchtung. Wirklich. Es ist erstaunlich, wie oft sehe ich Menschen erkennen zu spät in das Spiel, das Sie brauchen, Photonen zu Kalibrieren einer Kamera 🙂 diffuses Umgebungslicht -, und bounce-it-off weiße Karten, die auf beiden Seiten des Sichtfeldes.
Sehen, was Ihr Ecke Extraktion code tut. Zeichnen Sie das erkannt Ecke Positionen auf der Oberseite der Bilder (in Matlab oder Octave, zum Beispiel), und beurteilen deren Qualität. Entfernen von Ausreißern früh mit engen Schwellenwerte ist besser als Vertrauen in die robustifier in Ihrem bundle-adjustment-code.
Beschränken Ihr Modell, wenn Sie können. Zum Beispiel, versuchen Sie nicht zu schätzen, der wichtigste Punkt, wenn Sie nicht einen guten Grund haben zu glauben, dass Ihr Objektiv ist deutlich off-center w.r.t das Bild, nur fix it in der Bildmitte auf Ihrem ersten Versuch. Der wichtigste Punkt Ort ist in der Regel schlecht beobachtet, denn es ist von Natur aus verwirrt mit das Zentrum des nichtlinearen Verzerrungen und von die Komponente parallel zur Bildebene von der Ziel-Kamera der übersetzung. Es erfordert ein sorgfältig geplantes Vorgehen, dass die Erträge von drei oder mehr unabhängigen Fluchtpunkte der Szene und eine sehr gute abstufung der nicht-linearen Verzerrung. Ähnlich, es sei denn, Sie haben Grund zu vermuten, dass der Objektiv-Brennpunkt-Achse ist wirklich geneigt w.r.t. der sensorebene, fix bei null der (1,2) - Komponente des Kamera-matrix. Allgemein gesprochen, verwenden Sie das einfachste Modell, das erfüllt Ihre Messungen und Ihre Anwendung (das Ockam ' s razor).
Wenn Sie eine Kalibrierlösung von Ihrem optimizer mit ausreichend niedrigen RMS-Fehler (ein paar Zehntel pixel, in der Regel, siehe auch Josh ' s Antwort weiter unten), plot in der XY-Muster der Verbleibende Fehler (predicted_xy - measured_xy für jede Ecke in allen Bildern) und sehen, ob es eine round-ish cloud-zentriert (0, 0). "Klumpen" Ausreißer oder nicht-die Rundheit des cloud der Residuen Schreien die Alarmglocken läuten, dass etwas sehr falsch - wahrscheinlich Ausreißer, oder eine unangemessene Objektiv-Verzerrung-Modells.
Extra-Bilder zur überprüfung der Richtigkeit der Lösung, die Sie verwenden, um zu überprüfen, dass die Objektiv-Verzerrung wird entfernt, und dass die planare homography vorhergesagt durch das kalibrierte Modell eigentlich Spiele die man sich erholt von den Ecken gemessen.
InformationsquelleAutor der Antwort Francesco Callari
Dies ist eine ziemlich späte Antwort, aber für die Menschen, die zu uns kommen von Google:
Den richtigen Weg, um zu überprüfen Kalibrierung Genauigkeit ist verwenden Sie die reprojection error zur Verfügung gestellt von OpenCV. Ich bin mir nicht sicher, warum dies nicht irgendwo erwähnt, in der Antwort oder Kommentare, die Sie nicht brauchen, um zu berechnen, diese mit der hand - es ist die Rückkehr Wert von
calibrateCamera
. In Python ist es die erste Rückkehr Wert (gefolgt von der Kamera-matrix, etc).Den reprojection error ist der RMS-Fehler zwischen dem, wo die Punkte projiziert werden, mit Hilfe der intrinsischen Koeffizienten und wo Sie in das Reale Bild. In der Regel sollten Sie erwarten, dass ein RMS-Fehler von weniger als 0,5 px - ich kann regelmäßig bekommen etwa 0,1 px mit machine-vision-Kameras. Die reprojection error ist in vielen computer-vision-Papiere, gibt es nicht deutlich einfacher und genauer Weise zu bestimmen, wie gut die Kalibrierung ist.
Es sei denn, Sie haben ein stereo-system, können Sie nur feststellen, wo etwas im 3D-Raum bis zu einem Strahl, anstatt einen Punkt. Doch wie kann man die Arbeit, die pose von jeder planare Kalibrierung Bild, ist es möglich, zu arbeiten, wo jeder Schachbrett Ecke fällt auf den Bildsensor. Die Kalibrierung (mehr oder weniger) versucht, herauszufinden, wo diese Strahlen fallen und minimiert den Fehler über all die verschiedenen Kalibrier-Bilder. In Zhang original-Papier, und für spätere Auswertungen, etwa 10-15 Bilder scheinen ausreichend zu sein; zu diesem Zeitpunkt der Fehler nicht erheblich verringern, mit der Zugabe von mehr Bildern.
Andere software-Pakete wie Matlab geben Sie Fehler-Schätzungen für jedes einzelne intrinsische, z.B. Brennweite, Mittelpunkt der Projektion. Ich war unfähig zu machen OpenCV ausspucken, dass Informationen, aber vielleicht liegt es dort irgendwo. Kamera-Kalibrierung ist nun nativ in Matlab 2014a, aber man kann immer noch halten Sie von der camera calibration toolbox, die ist sehr beliebt bei den computer-vision-Nutzer.
http://www.vision.caltech.edu/bouguetj/calib_doc/
Sichtprüfung ist notwendig, aber nicht ausreichend, wenn der Umgang mit Ihren Ergebnissen. Die einfachste Sache zu suchen ist, dass geraden Linien in der Welt, gerade in Ihrer unverzerrte Bilder. Darüber hinaus ist es unmöglich, wirklich sicher sein, ob Ihre Kameras kalibriert werden, die auch einfach durch einen Blick auf die Ausgabe von Bildern.
Die routine zur Verfügung gestellt von Francesco ist gut, Folgen. Ich benutze ein Regal board als mein Flugzeug, mit dem die Muster gedruckt auf poster-Papier. Stellen Sie sicher, die Bilder sind gut belichtet, - vermeiden Sie spiegelung! Ich benutze eine standard-8x6-Muster, ich habe versucht, dichtere Muster, aber ich habe nicht gesehen, solch eine Verbesserung in der Genauigkeit, dass es einen Unterschied macht.
Ich denke, diese Antwort sollte ausreichend sein für die meisten Menschen, die für die Kalibrierung eines Kamera - realistisch, es sei denn, Sie versuchen zu Kalibrieren, etwas exotisches wie einen Fisheye-oder Sie tun es aus pädagogischen Gründen, OpenCV/Matlab ist alles, was Sie brauchen. Zhang ' s Methode ist gut genug, dass praktisch jeder in der computer vision Forschung verwendet, und die meisten von Ihnen entweder Bouguet toolbox oder OpenCV.
InformationsquelleAutor der Antwort Josh