Verzeichnung und Farbfehler korrigieren mit PanoTools und PTGui


 
Vorher Nachher

zur Objektiv-Datenbank

Neu: Chromatische Aberration ermitteln (nur englisch)

 Verzeichnung korrigieren mit den neuen "Straight Line" Kontrollpunkten

Inhalt

1. Einführung
Problemstellung und Lösungsmöglichkeiten

1.1. Aufruf
Bitte mitmachen!

1.2. Voraussetzungen
Was man mitbringen sollte...

2. Vorbereitung
Was benötigt wird.

3.1. Methode 1
Mit einem unverzeichneten Referenzbild (z.B. für den Nahbereich).

3.1.1. vereinfachte Methode 1
Mit einer Hilfslinie.

3.2. Methode 2
Für den Fernbereich mit mehreren Bildern des gleichen Objektivs.

4. Der Optimizer
Günstiges Vorgehen und Probleme mit dem Optimizer

5. chromatische Aberration
Farbquerfehler (Farbsäume) korrigieren.
Neue Methode zur Ermittlung der Parameter (nur englisch): http://www.erik-krause.de/ca

6.1. Anhang
Diskussion der Methoden

6.2. Zooms
Vorgehen bei Zoomobjektive, Interpolation für verschiedene Brennweiten

6.3. Weitere Ideen
Ein 'Referenzbild' für die unendlich-Einstellung

7. Links
Andere Seiten zum Thema.

8. Glossar
Einige Begriffserklärungen.

9. Kontakt
 

1. Einführung

Nach einer Anregung durch Dieter Michel in d.r.f habe ich mich ein wenig mit der "Correct"-Funktion von Helmut Derschs Panorama Tools beschäftigt.

Mit den Panotools ist es relativ einfach möglich, Objektivverzeichnung und Farbquerfehler zu korrigieren. Auch wellenförmige Verzeichnung stellt kein Problem dar. Das Schwierige ist, die geeigneten Parameter a, b, c und d für die "Correct"-Funktion "Radial Shift" zu finden.

Ausprobieren ist da leider ziemlich langwierig. Einfacher wäre es, es gäbe ein grafische Oberfläche und ein Programm, das den Rest erledigt. Dieses Programm ist PTOptimizer aus den Panotools.

Die grafische Oberfläche ist bei mir PTGui. Das Selbe läßt sich im Prinzip auch mit dem PTPicker erreichen, allerdings lange nicht so komfortabel. Der Optimizer errechnet auch schon beim "normalen" Stitchen eines Panoramas die Werte a, b und c, nur werden die eben so ermittelt, daß die Einzelbilder des Panoramas passen. Dem läßt sich aber auch nachhelfen, denn ihm ist es egal, ob zwei Bilder neben- oder aufeinander liegen.
 

1.1. Aufruf
Hier möchte ich dazu aufrufen, die unten skizzierten Verfahren zu benutzen um Korrekturwerte für möglichst viele verschiedene Objektive zu ermitteln. Ich würde die Daten dann hier veröffentlichen, so daß sich nicht jeder wieder auf's neue die Mühe machen muß. Wer also sein Objektiv entsprechend kalibriert hat, möge mir eine Mail mit dem Namen, dem ermittelten Bildwinkel und den Werten a, b und c zuschicken. Einfachster Weg: Ergebnisse in LensDB ablegen und mir die Datei lensdb.ptl (im PTGui Programmverzeichnis) schicken.

Erste Ergebnisse gibt es in der  Objektiv-Datenbank
 

1.2. Voraussetzungen

Bei der Beschreibung der praktischen Vorgehensweise gehe ich davon aus, daß schon erste Erfahrungen mit PTGui vorliegen, bzw. daß das Programm wenigstens verfügbar ist (-> Download) und unklare Sachen in der Hilfe  (englisch!) nachgeschlagen werden können. Gewisse Grundlagen der Bildverarbeitung sowie ein Rechner, der damit klarkommt, sollten selbstverständlich sein.

Für konkrete Versuche müssen die PanoTools (-> Download) installiert und in PTGui der Pfad zum PTStitcher richtig eingetragen sein (Tools, Options).

2. Vorbereitung

Für die Methode 1 benötigt man ein unverzeichnetes Referenzbild. Das einfachste dürfte sein, mit einem Malprogramm ein Gitterraster zu erzeugen und auszudrucken. Man kann auch ein vorhandenes Gitter (Millimeterpapier) scannen. In beiden Fällen sollte das Raster natürlich auch fotografiert werden, möglichst scharf und kontrastreich, versteht sich.

Damit erhält man eine Referenz für den Nahbereich. Für den Fernbereich - die Verzeichnung kann da eine andere sein - müßte man ein garantiert unverzeichnetes Referenzbild haben. Wenn keine wellenförmige Verzeichnung im Spiel ist, genügt es evtl. ein Gebäude mit schön geraden Linien zu fotografieren und eine Gerade mit einem Malprogramm darüber zu legen (siehe 3.1.1.). Eine weitere Idee findet sich im Anhang.

Für die Methode 2 benötigt man optimalerweise 3 Bilder, die ein Panorama mit Überlappungen ergeben müssen. Das mittlere Bild sollte ein Gebäude o.ä. mit geraden, senkrechten und waagerechten  Linien enthalten, möglichst bis zum Rand, um die Güte der Korrektur besser abschätzen zu können. Die anschließenden Bilder sollten eines zu ca. 50% und eines zu 25% mit dem mittleren überlappen, das führt zu den besten Ergebnissen.

Die Bilder müssen selbstverständlich vom gut waagerecht ausgerichteten Stativ perfekt scharfgestellt und mit Spiegelvorauslösung und/oder Fernauslöser fotografiert werden.  Für die Methode 2 empfiehlt es sich, daß sich möglichst viele Details in der gesamten Bildfläche und in etwa der gleichen Entfernung vom Objektiv  befinden, um der Parallaxe vorzubeugen, die entsteht, wenn man nicht um den Nodalpunkt schwenkt.

Möchte man später noch Farbquerfehler korrigieren, sollte wenigstens ein Bild weiße Strukturen möglichst auf schwarzem Grund bis in die Bildecken haben. Man muß die Bilder dann in der Bildverarbeitung in die Farbkanäle Rot, Grün und Blau zerlegen und für das Korrigieren der Verzeichnung zunächst nur die Grün-Kanäle verwenden.
 

3.1. Methode 1

(Hier gibt's Bilder dazu)

Das unverzeichnete Originalbild und das verzeichnete Foto werden in PTGui geladen. Auf der "Lens settings"-Seite sollte die Aufnahmebrennweite (focal length) und der horizontale Bildwinkel (Hor. Field of View) eingetragen werden. Beide Bilder bekommen einen Haken bei Use individual lens parameters.

Auf der Seite "Panorama settings" sollte unter Projection cylindrical gewählt werden (für eine korrekte Vorschau) und unter Field of View ein Wert etwa um die Hälfte größer als der Bildwinkel des Objektivs (abzulesen bei "Lens settings"). Width und Height erhalten jeweils dem Format entsprechende Werte, für Kleinbild z.B. 1200 und 800 Pixel (dem Format entsprechend und so groß, daß man im Ergebnis noch was sieht - evtl. später anhand "Image parameters" ändern).

Unter "Image parameters" bekommt das krumme Bild bei a, b und c jeweils 0.01 eingetragen (damit der Optimizer einen Startwert hat), beide bekommen unter fov den Bildwinkel des Objektivs. Lens Type ist für beide Bilder natürlich rectilinear. Alles andere bleibt auf 0.

Jetzt geht's ans Kontrollpunkte setzen. Natürlich möglichst weit in den Ecken und entlang der Kanten. Über die Fläche des Bildes verteilt sollten auch einige Punkte sitzen, vor allem auch in der Mitte. Wenn wellenförmige Verzeichnung eine Rolle spielt, sollten wenigstens in einem Quadranten des Bildes möglichst gleichmäßig verteilt viele Punkte sein. Generell gilt: Je mehr Punkte und je besser verteilt diese über das Bild sind, desto eher findet der Optimizer den richtigen Weg, und desto genauer sind die Ergebnisse.
 

3.1.1. vereinfachte Methode 1

(Hier gibt's Bilder dazu)

Das Bild muß eine in Natura gerade Linie am Bildrand, am Besten an einer langen Kante haben. Mit einem Malprogramm legt man in eine Kopie des Bildes eine exakt waagerechte Linie, die die Krümmung der ehemals geraden Linie im Bild außen berührt (Das Bild wird dann leicht vergrößert).

Mehrere Hilfslinien zu verwenden ist leider keine gute Idee, da der Optimzer versucht, das Bild auch dem Abstand der Linien anzupassen. Da der aber nicht exakt bekannt ist, wird er zu keinen guten Ergebnissen kommen.

Von dem Bild sollten zwei Kopien mit unterschiedlichem Namen gespeichert werden, sonst weigert sich PTGui.

Beide Bilder werden in PTGui geladen. Die Angaben unter "Lens settings", "Panorama settings" und "Image parameters" sind die gleichen wie für Methode 1 (Abschnitte 1-3). Ein Bild wird als Referenzbild betrachtet, also als gerade.

Da es entlang der gezeichneten Hilfslinie (angenommen sie läge waagerecht) keine Anhaltspunkte gibt, können nur vertikale Kontrollpunkte gesetzt werden. Es muß also links unten bei Align vertically ausgewählt sein. Eine exakte Ermittlung des Bildwinkels (Field of View) ist damit nicht möglich, der Optimizer kommt aber trotzdem zu besseren Ergebnisse, wenn man am Schluß die Optimierung für fov wieder einschaltet.

Ein Punkt kommt im als gerade deklarierten Bild jeweils auf die Hilfslinie, der korrespondierende kommt im krummen Bild ungefähr an die gleiche Position, aber auf die krumme Linie. In meinem Beispiel haben 11 Punkte, davon zwei an den Enden der Hilfslinie und der Rest in der linken Hälfte für ein gutes Ergebnis genügt.
 

3.2. Methode 2

(Hier gibt's Bilder dazu)

Die drei Teilbilder des "Panoramas" werden in PTGui geladen, genau wie beim "normalen" Stitchen eines Panoramas. Auch hier muß auf der "Lens settings"-Seite die Aufnahmebrennweite (focal length) und der horizontale Bildwinkel (Hor. Field of View) eingetragen werden. Use individual lens parameters wird (vorläufig) nicht angekreuzt.

Auf der Seite "Panorama settings" sollte unter Projection cylindrical gewählt werden (für eine korrekte Vorschau) und unter Field of View ein Wert etwas größer als der zu erwartende Bildwinkel des Panoramas. Width und Height erhalten jeweils dem zu erwartenden Panorama entsprechende Werte (evtl. später anhand "Image parameters" ändern).

Unter "Image parameters" kann man mit dem Panorama Editor die Einzelbilder schon mal grob passend hinschieben, um dem Optimizer die Arbeit zu erleichtern. Wenn die Bilder nicht passen, muß man unter "Panorama settings" die Werte für Field of View , Width und Height ändern.
 

4. Der Optimizer

Bei  Methode 1 bekommt das gerade (nichtverzeichnete) Bild die Felder Yaw, Pitch und Roll angekreuzt, bei Methode 2 nur die beiden äußeren Bilder. Field of View bekommt zunächst kein Häkchen, nur die Parameter a, b und c (bei Methode 1 das krumme Bild). Um die geht es uns schließlich ;-)

Der erste Optimizer-lauf wird möglicherweise keine guten Ergebnisse liefern. Unter "Image parameters" kann man überprüfen, ob der Optimizer die Bilder irrtümlicherweise dreht. Wenn das der Fall ist, sollte man Pitch und Roll jeweils auf 0 setzen,die Bilder per Panorama-Editor möglichst gut zur Deckung bringen und Pitch und Roll beim optimieren ausschalten.

Über den Schalter Table unter "Control Points" bekommt man eine Liste aller Kontrollpunkte, die nach Abweichung absteigend sortiert ist. Wenn dabei einzelne Punkte abweichen, lohnt es sich evtl. sie zu löschen und genauer neu zu setzen. Wenn viele Punkte abweichen, hat der Optimizer einen falschen Weg eingeschlagen, und man sollte ihn durch zusätzliche Punkte auf die richtige Spur bringen.

Um die Qualität der Korrektur zu überprüfen kann man ein Preview ausgeben. Dazu kreuzt man nur das krumme Bild an (bei Methode 2 das mittlere - mit den besten senkrechten und waagerechten Strukturen). Unter "Preview" kann man auch bequem die Ausgabegröße variieren, um bei immer besserem Ergebnis die kleinen Abweichungen noch zu erkennen.

Wenn der Optimizer auf der richtigen Spur ist, kann man auch Pitch und Roll (bei Methode 1 für das gerade Bild, bei Methode 2 für die äußeren Bilder) wieder aktivieren. Als letztes kann man Field of View (Fov) wieder aktivieren  (bei den beiden Methoden 1 nur für das krumme Bild).

Man sollte so lange optimieren, bis der Optimizer wenigstens Good meldet. Wiederholte Optimizer-Läufe können dabei auch ohne Änderungen an den Kontrollpunkten zu immer besseren Ergebnissen führen. Es lohnt sich in jedem Fall, die Kontrollpunkt-Tabelle im Auge zu behalten, und schlecht gesetzte Punkte zu korrigieren.

Wenn das Optimizer-Ergebnis dabei aber zwischen stark verschiedenen Werten hin und her springt, stimmt irgendwas an den Einstellungen nicht. Oft lohnt es sich, a, b und c auf den Anfangswet 0.01 und bei den beiden Methoden 1 fov auf den Wert des geraden Bildes zurückzusetzen.

Vorsicht: Ein gutes Optimizer-Ergebnis garantiert noch lange keine gute Korrektur. Der Optimizer liefert auch dann gute Ergebnisse, wenn z.B. zu wenige Kontrollpunkte markiert sind, oder fov sehr klein 'optimiert' wurde.

5. chromatische Aberration

(Hier gibt's Bilder dazu)

Neue Methode zur Ermittlung der Parameter (nur englisch): http://www.erik-krause.de/ca

Die Funktion "Radial Shift" des "Correct"-Filters der PanoTools kann sehr gut auch Farbquerfehler korrigieren, die sich als Farbsäume um helle Flächen - besonders in den Bildecken - bemerkbar machen. Man benötigt dafür unterschiedliche Werte für Rot,Grün und Blau.

Besonders dem Parameter d kommt da hohe Bedeutung zu, da sich der Farbquerfehler effektiv durch unterschiedliche Bildgrößen für Rot, Grün und Blau bemerkbar macht. Ein Wert für d wird aber vom Optimizer nicht extra berechnet, da  für das Stitchen von Panoramen immer a+b+c+d=1 gilt.

Den Wert für d kann man aber aus dem ermittelten Bildwinkel (Field of View - Fov) ermitteln. Je kleiner der ermittelte Bildwinkel im Verhältnis zur Referenz ist, desto größer muß d gewählt werden. Hierfür ist es wichtig, daß unter "Panorama Settings" Projection cylindrical gewählt wurde, um einen linearen Zusammenhang zwischen dem horizontalen Bildwinkel und dem Parameter d zu bekommen.

Um den Farbquerfehler zu ermitteln sollte man die Bilder schon zu Anfang in die Kanäle Rot, Grün und Blau zerlegt haben, und Grün für das Ermitteln der Verzeichnung benutzt haben.

Man fügt die Rot- und Blau-Versionen am Besten dem bestehenden Projekt hinzu. Bei Methode 2 benutzt man dafür am Besten das mittlere Bild mit den geraden, senkrechten und waagerechten  Linien, bei Methode 1 das krumme Bild. Unter "Lens Settings" bekommen die neuen Bilder jeweils ein Häkchen bei Use individual lens parameters. Bei Lens correction parameters sollten die für die Verzeichnung ermittelten Werte stehen.

Die Bilder werden unter "Image parameters" mit dem bereits vorhandenen Grün-Bild überlagert, am Besten indem man einfach den Wert für Yaw, Pitch und Roll kopiert. fov, a, b und c bekommen als Vorgabe die für die Verzeichnung ermittelten Werte (am einfachsten, indem man die Häkchen bei Use individual lens parameters löscht und wieder setzt).

Unter "Control Points"  sollten wieder genügend Kontrollpunkte markiert werden, vor allem in den Ecken, und zwar für sämtliche Paare der drei Bilder Rot, Grün und Blau.

Unter "Optimizer" bekommt keines der Bilder ein Häkchen bei Yaw, Pitch und Roll - die Werte stimmen ja mit dem Grünbild überein. Dafür bekommen die neuen Bilder zunächst nur ein Häkchen in fov (unter der Annahme, daß der Farbquerfehler linear vom Radius abhängt). Später, wenn der Optimizer auf dem richtigen Weg ist, können auch a, b und c für das Rot- und Blaubild wieder ausgewählt werden.

Bei Use controlpoints of bekommen die beiden neuen und das korrespondierende Grünbild je ein Häkchen, bei Lens paramters keines - die Werte für Field of View, a, b und c sind ja schon richtig eingetragen.

Jetzt beginnt wieder der Zyklus Optimizer laufen lassen, Punkte kontrollieren und ggf. ergänzen und Ergebnis überprüfen. Letzteres geht leider nicht mehr so einfach über "Preview". Man muß vielmehr die Werte in die Funktion "Radial Shift" des "Correct"-Filters direkt eingeben und am Originalbild testen.

Für den fehlenden Parameter d habe ich ein kleines Rechenblatt erstellt, das hier als SLK zum Download steht (SLK sollten viele Tabellenkalkulationen lesen können - falls der Browser die Datei als Text öffnet, einfach als verzeichnung.slk speichern). Das gleiche Rechenblatt findet sich auch in verzeichnung.xls, das außerdem noch die Interpolation für Zoomobjektive, bzw. unterschiedliche Entfernungen enthält.

Der schnellste Weg, die Daten in die Tabellenkalkulationen zu laden, dürfte über die Lens Database sein. Die Werte werden darin mit Leerzeichen getrennt abgelegt. Wenn man die Ergebnisse in der Reihenfolge Rot - Grün - Blau in die Lens DB übernimmt können sie nach dem Importieren als Block in in des Rechenblatt kopieren (nur zu diesem Zweck existiert dort die Spalte "Lens Type").
 

6.1. Anhang

Die Methoden 1 und 2 haben jeweils Vor- und Nachteile.

Die Methode 1 liefert mit weniger Kontrollpunkten im Allgemeinen die besseren Ergebnisse, die sich zudem durch Differenzbildung mit dem Referenzbild sehr schön überprüfen lassen. Leider wird eine Anwendung für den Fernbereich nur sehr selten möglich sein - Objektive zeigen im Fernbereich normalerweise eine andere Verzeichnung als im Nahbereich. Die Möglichkeit Hilfslinien über das Bild zu legen um ein künstliches Referenzbild zu erzeugen birgt weitere Fehlerquellen, so daß der Vorteil größerer Genauigkeit hinfällig wird. Methode 1 ist aber  für Korrekturen bei Repro ist erste Wahl.

Die vereinfachte Methode 1 liefert bei nur tonnen- oder kissenförmiger Verzeichnung akzeptable Ergebnisse, wenn die Hilfslinie (und die Bezugslinie) nahe genug am Rand liegen. Bei sehr starker und / oder wellenförmiger Verzeichnung sind die Ergebnisse nicht mehr so gut. (siehe Testbilder ), kann aber mit sehr vielen, möglichst genau gesetzten Kontrollpunkten verbessert werden.

Die Methode 2 kommt ohne Referenzbild aus, dafür ist das Ergebnis nur anhand der Realität zu überprüfen, also nur indem man z.B. Kanten, die in Wirklichkeit gerade sind mit einem Lineal oder einer Hilfslinie überprüft. Da dem Optimizer nur unterschiedliche Bereiche des gleichen Bildfeldes zur Verfügung stehen, benötig er wesentlich mehr Kontrollpunkte und die Ergebnisse sind nicht ganz so gut, wie bei Methode 1.

6.2. Zooms

Für Zooms müßte man wenigstens die Verzeichnungen für die kürzeste, die längste und eine Brennweite dazwischen ermitteln (besser mehr). Die restlichen Werte sollte man mit genügender Genauigkeit interpolieren können. Excel z.B. kann eine polynomische Trendlinie durch ein Diagramm legen und gibt auf Wunsch auch die zugehörige Gleichung aus, mit deren Hilfe man dann beliebige Zwischenwerte berechnen kann. Das wäre auch die Methode der Wahl, wenn man Werte für den Fern- und den Nahbereich ermittelt hat.

Ein entsprechendes Rechenblatt, in dem das weitgehend automatisiert ist, steht als verzeichnung.xls zum Download. Es sollte ab Excel 5.0/95 funktionieren und enthält ein Makro, das die Übernahme automatisiert.

6.3. Weitere Ideen

Rolf Heier hat vorgeschlagen, als 'Referenzbild' für die Unendlichstellung den Sternenhimmel zu verwenden. Die Positionen der Sterne sind mit größter Genauigkeit bekannt. Fotografiert man z.B. die Gegend um den Himmelspol (mit dem Pol genau in der Mitte), ist nicht nur die Bewegung der Sterne relativ klein, man kann die Position eines Sterns auf dem Film auch einfach mittels Brennweite und seiner Winkel-Koordinaten ausrechnen.

Evtl. gibt es auch ein Astronomie-Programm, das eine Sternkarte in in rectilinearer Projektion hochauflösend ausgeben kann. Dann müßte man sich nur noch den passenden Bereich ausschneiden.
 

7. Links

Andere Seiten zum Thema (alle in englisch, soweit nicht anders angegeben):
An erster Stelle natürlich Derschs Panorama Tools:
http://www.fh-furtwangen.de/~dersch/
Hier noch eine alternative Adresse:
http://www.all-in-one.ee/~dersch/
Dort besonders interessant der Artikel über tonnenförmige Verzeichnung:
http://www.fh-furtwangen.de/~dersch/barrel/barrel.html
http://www.all-in-one.ee/~dersch/barrel/barrel.html
Architekturfotografie mit Fisheye:
http://www.fh-furtwangen.de/~dersch/architect/arch.html
http://www.all-in-one.ee/~dersch/architect/arch.html
Ein ganz ähnlicher Ansatz zum Kalibrieren von Objektiven vor allem auch ohne PTGui:
http://www.path.unimelb.edu.au/~bernardk/tutorials/360/calibrate/index.html
oder evtl.
http://www.path.unimelb.edu.au/_bernardk/tutorials/360/calibrate/index.html
Farbquerfehler korrigieren:
http://ray.cg.tuwien.ac.at/rft/Photography/TipsAndTricks/Aberration/
PTGui, grafische Oberfläche für PTOptimizer und PTStitcher von Jost Nieuwenhuijse:
http://www.ptgui.com/
Ein kommerzielles Produkt zum Entfernen von Verzeichnung:
http://www.andromeda.com/info/lensdoc.html
FixFoto, ein Shareware-Programm, das die Kalibrierung für einfache tonnen- und kissenförmige Verzeichnung schon eingebaut hat:
http://www.jks.de.vu (in deutsch)

8. Glossar

chromatische Aberration
zusammenfassend für Farblängsfehler und Farbquerfehler.
Farblängsfehler
Die unterschiedlichen Farben werden nicht in der gleichen Ebene abgebildet. Führt zu farbabhängigen Unschärfen und kann nicht mit den PanoTools korrigiert werden.
Farbquerfehler
Fehler in der Farbdarstellung quer zur optischen Achse. Weiß wird in der Bildebene in die Regenbogenfarben aufgefächert. Weiße Flächen zeigen Farbsäume, meist zu den Bildecken hin stärker.
Nodalpunkt
Der Punkt, um den Kamera und Objektiv gedreht werden müssen, damit keine Parallaxe zwischen Vorder- und Hintergrund entsteht (Vorder- und Hintergrund dürfen sich beim schwenken nicht gegeneinander verschieben).
Stitchen
"Nähen" Das nahtlose Zusammenfügen von Einzelbildern zu Panoramen.
Verzeichnung
Ein häufiger Objektivfehler, der dazu führt, daß gerade Linien gekrümmt abgebildet werden.
wellenförmige Verzeichnung
Gerade Linien werden wellenförmig abgebildet, normalerweise punktsymmetrisch um die optische Achse.

 

9. Kontakt

e-Mail: Erik Krause

Viel Spaß und vielen Dank!

 © Erik Krause 19.01.2002