3 Stimmen

Berechnung der Brennweite aus Bildern

Ich versuche, die Brennweite meiner Objektive zu berechnen (ich habe 4 verschiedene Objektive, ich werde sie Objektiv 1, 2, 3, 4 nennen). Ich kenne die Sensorgröße der Kameras (ich verwende 2 verschiedene Kameras), die ich verwende, ich kenne die Objektbreite und ich kenne die Arbeitsabstand.

Ich benutze folgende Formel:

f = Brennweite der Breite = (Arbeitsabstand * Sensorbreite)/(Objektbreite + Sensorbreite)

Ich habe auch die gleiche Formel mit einer kleinen Änderung verwendet:

f' = Brennweite der Breite = (Arbeitsabstand * Sensorbreite)/Objektbreite

Die Sensorgrößen für meine Kameras sind wie folgt:

Modell: 134MCU - 1/3" - 3,52 mm * 4,78 mm

Modell: 130CU - 1/4" - 2,75 mm * 3,64 mm

Hier ist das Problem, ich habe mehrere Bilder mit beiden Kameras aus einer bekannten Arbeitsabstand gemacht und die Bildbreite gemessen (ich habe ein Lineal in die Bildszene gestellt). Danach habe ich den f und f' mithilfe der gegebenen Formeln berechnet. Nach Berechnung der Brennweite habe ich mehrere Beobachtungen gemacht, die meiner Meinung nach inkonsistent sind. Die Beobachtungen sind wie folgt:

  1. Wenn sich der Arbeitsabstand erhöht, konvergiert die berechnete Brennweite für jedes Objektiv zu einem bestimmten Wert. Ich hätte erwartet, für jeden Arbeitsabstand den gleichen f, f' Wert zu berechnen. Warum passiert das? Gibt es eine Abhängigkeit vom Arbeitsabstand oder eine Begrenzung des Arbeitsabstands (wie z.B. für Objektiv mit Brennweite f mm kann der Arbeitsabstand nicht weniger als n sein)?
  2. Ich habe 8 verschiedene Bildaufnahmen, da ich 4 Objektive und 2 Kameras habe. Die berechneten Werte f, f' die mit Bildern von 134MCU aufgenommen wurden, sind anders als Bilder von 130CU für Objektiv 1 und Objektiv 2. Die berechneten Werte für Objektiv 3 und 4 sind gleich. Warum könnte das passieren?

    • Die berechneten Objektiv 1 Werte mit 130CU sind ca. 1,6 mm.
    • Die berechneten Objektiv 2 Werte mit 130CU sind ca. 2,4 mm.
    • Die berechneten Objektiv 3 Werte mit 130CU sind ca. 2,8 mm.
    • Die berechneten Objektiv 4 Werte mit 130CU sind ca. 3,6 mm.
    • Die berechneten Objektiv 1 Werte mit 134MCU sind ca. 1,4 mm.
    • Die berechneten Objektiv 2 Werte mit 134MCU sind ca. 2,2 mm.
    • Die berechneten Objektiv 3 Werte mit 134MCU sind ca. 2,8 mm.
    • Die berechneten Objektiv 4 Werte mit 134MCU sind ca. 3,6 mm.
  3. Als ich mit meinem Objektivanbieter gesprochen habe, haben sie mir gesagt, dass Objektiv 1, 2, 3, 4 Brennweiten von 2,1 mm, 2,5 mm, 2,8 mm bzw. 3,6 mm haben. Warum stimmen meine berechneten Werte nicht mit diesen überein? Ist etwas falsch an meiner Berechnung?

Die Bilder, die ich verwendet habe, finden Sie unter hier. Ich wäre sehr dankbar, wenn mir jemand helfen könnte.

Mit freundlichen Grüßen,

Güney Kaym

2voto

Floris Punkte 45005

Ich habe gerade die Bilder heruntergeladen, die du gepostet hast, und die Antwort liegt auf der Hand.

Die Formel, die du verwendest, geht davon aus, dass jedes Lichtstrahl in einer geraden Linie vom Objekt zum Sensor reist. In Wirklichkeit haben diese Weitwinkelobjektive mehrere komplexe Oberflächen, und das Licht ändert mehrmals seine Richtung, während es durch den "Stapel" reist. Als Folge davon gibt es eine signifikante Verzerrung am Rand. Die Höhe der Linien auf dem Lineal nimmt zum Rand hin ab - wo eine "perfekte Lochkamera" sie alle in genauer Proportion gehalten hätte.

Es ist sehr schwierig, eine Gleichung zu finden, die diese Verzerrung angemessen berücksichtigt - in der Regel werden metrologische Anwendungen von Kameras (wo sich die Leute wirklich um solche Dinge kümmern) eine geometrische Kalibrierung am interessierenden Brennpunkt durchführen, um dies zu korrigieren.

Also lautet die Antwort auf deine Frage "gibt es etwas falsch an meiner Berechnung?" so: "Ja, etwas ist falsch - deine Berechnung ist für ein ideales System. Du hast kein ideales System."

BEARBEITEN Mir ist eingefallen, dass du etwas Besseres tun kannst, indem du einen "kleineren Sensor" verwendest:

  1. Nimm die Bilder, die du bereits hast
  2. Schaue dir einen Teil des Bildes an (in der Nähe des Zentrums)
  3. Bestimme die Entfernung in Pixel zwischen zwei Markierungen auf deinem Lineal, die weniger als 10% der Sensorbreite abdecken
  4. Berechne die "scheinbare Sensorgröße" = (Anzahl der Pixel zwischen den Markierungen / Anzahl der Pixel über den Sensor) * Sensorenbreite
  5. Verwende die scheinbare Sensorgröße in deiner Berechnung

Indem du eine variable Anzahl von Pixeln verwendest (die einer genauen Anzahl von Unterteilungen auf deinem Lineal entsprechen), begrenzt du die Menge an Schätzen / Interpolieren, die du machen musst. Ich denke, das wird das meiste des Verzerrungsproblems lösen und dir Ergebnisse liefern, die mit den Daten des Herstellers übereinstimmen.

0voto

Engin Kurutepe Punkte 6634

Ihre Berechnungen gehen von einem idealen Lochkamerasystem aus, das Sie offensichtlich hier nicht haben. Ihre Weitwinkelobjektive zeigen extreme Verzerrungen. Versuchen Sie, Ihre Messungen auf das Zentrum Ihres optischen Systems zu beschränken, das scheinbar verzerrungsfrei ist. Sie sollten Ergebnisse erhalten, die mehr im Einklang mit den vom Hersteller angegebenen Brennweiten stehen.

BEARBEITEN: Was Floris oben gesagt hat...

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