Vorher | Nachher |
Neu: Chromatische Aberration ermitteln (nur englisch)
Verzeichnung korrigieren mit den neuen "Straight Line" Kontrollpunkten
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.
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.
Erste Ergebnisse gibt es in der Objektiv-Datenbank
Für konkrete Versuche müssen die PanoTools (-> Download) installiert und in PTGui der Pfad zum PTStitcher richtig eingetragen sein (Tools, Options).
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.
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.
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.
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.
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.
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").
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.
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.
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.
Viel Spaß und vielen Dank!
© Erik Krause 19.01.2002