Startseite

Optimierung für Fisheye-Bilder

Fisheye-Bilder sind schlechter, als sie sein könnten, weil alle Hersteller die flächentreue Abbildung zur Grundlage der Optik-Konstruktion machen. Die winkeltreue Abbildung vermeidet die "Quetschungseffekte" der flächentreuen Abbildung. Es gibt aber keine winkeltreuen Fisheye-Objektive. Heute, wo Bilder eingescannt werden oder gleich digital fotografiert werden und Fotos ausgedruckt oder gleich am Computer betrachtet werden, gibt es die Möglichkeit, die digitalen Bilddaten zu manipulieren. Die Bilddateien könnten so umgerechnet werden, dass ein flächentreues Bild in ein winkeltreues überführt wird.

Offensichtlich gibt es so ein Programm noch nicht. Eigene Versuche mit Visual Basic führten zu einem Programm "Fototransformation" (Bild rechts). Es ist universell ausgelegt ist aber nie mit allen Funktionen fertig geworden. Die Umrechnungsfunktionen funktionieren zwar, aber ein halbfertiges Programm wollte ich nicht zur Verfügung stellen (Stand 2003). 2005 bin ich auf die Digitalfotografie umgestiegen und brauchte ein Programm, das Mengen von Fisheye-Bildern in einem Durchgang umrechnet. So entstand "Fisheye Worker". Inzwischen gibt es die Fisheye Worker − Familie.

2003 (vor FisheyeWorker) suchte ich unabhängig vom Programm "Fototransformation" eine frei verfügbare Software für Fisheye-Transformationen. Die fand ich in den Panorama-Tools von Helmut Dersch. Der nachfolgende Text beschreibt die Anwendung von Panorama-Tools, aber auch die Eigenschaften des Originalbildes und der Transformationsergebnisse.

Panorama-Tools kennt die winkeltreue Abbildung nicht, hat dafür andere Funktionen, die mein Programm nicht hat. Das ist die Korrektur realer Abbildungsfunktionen in Richtung der idealen Abbildung mittels eines Polynoms. Die Korrektur erfolgt für die Farbkänäle Rot-Grün-Blau getrennt. Bei gleichen Korrekturkoeffizienten in den Farbkanälen erfolgt eine Kennlinienkorrektur. So lassen sich tonnen- oder kissenförmige Verzeichnungen ausgleichen. Bei unterschiedlichen Koeffizienten lassen sich Farbrestfehler der Objektive ausgleichen.

Eigentlich wollte ich nur eine Farb- und Kennlinienkorrektur für mein Canon EF 2.8/15 Fisheye ermitteln. Das gelang dann auch, nachdem ich die Correct-Funktion der Panorama-Tools untersucht habe. Dann tauschte ich die Soll-Funktion "flächtreu" gegen die "winkeltreu"-Funktion aus. Auch hier ließen sich Koeffizienten bestimmen, wobei der Restfehler kleiner ist als die Fehler der Testaufnahme.

So ermutigt bestimmte ich auch noch die Koeffizienten für die Umwandlung einer idealen flächentreuen Abbildung in eine winkeltreue Abbildung. Dabei beträgt der Fehler unter 0,1% (Radius von der Mitte zum Bildpunkt), also etwa 1 Pixel, was praktisch nicht zu bemerken ist. Die Fehler realer Optiken sind viel größer und bestimmen dann den Gesamtfehler. Mit diesen Koeffizienten können auch mit Panorama-Tools flächentreu-zu-winkeltreu-Transformationen durchgeführt werden. Diese Transformation erfolgt mit Correct, die anderen Transformationen üblicherweise mit Adjust oder Remap. Die in Adjust/Remap enthaltenen Umwandlungen sind stärker - sie mit Correkt nachzubilden wäre viel zu ungenau.

Correct-Funktion in den Panorama-Tools

Photoshop ist eine gute Bildbearbeitungs-Software. Panorama-Tools kann als Plug-In in Photoschop eingebunden werden. Es erscheint unter Filter und kann benutzt werden im RGB-Modus mit 8-Bit pro Farbkanal. Die Correct-Funktion ist eine Rückwärtstransformation über ein Polynom. Verwendet wird der Modus Radial. Die Koeffizienteneingabe erfolgt unter "Options" im "Correct"-Dialog (zurück mit OK). Mit OK im Correct-Dialog startet dann die Bildberechnung. Die Funktion lautet:

Rückwärtstransformation bedeutet, dass ein Zielpunkt (als Radius von der Bildmitte aus) gegeben ist und der dazugehörige Quellpunkt über die Korrekturfunktion berechnet wird. Das hat die Konsequenz, dass mit größeren Koeffizienten das Zielbild kleiner wird. Mit a = 0, b = 0, c = 0, d = 1 erfolgt eine 1 : 1 Umrechnung - also keine Korrektur.

Die Funktion ist auf die Schmalseite des Bildes normiert. Der Radius bis zur Schmalseite wird bei einer Koeffizientensumme von a + b + c + d = 1 auch wieder auf die Schmalseite transformiert. Durch die Normierung auf die Schmalseite ist es egal, ob Quer- oder Hochkantaufnahmen vorliegen. Eine Drehung des Bildes in 90° Schritten hat keinen Einfluss auf die Korrektur. Die Länge der breiten Seite ist ohne Einfluss auf die Korrektur, solange sie nicht so stark beschnitten wird, dass sie zur Schmalseite wird.

Wenn sich die Schmalseite ändert, müssen die Koeffizienten angepasst werden. Das ist dann der Fall, wenn sich die Korrekturkoeffizienten auf das volle Filmformat beziehen, das Bild aber bereits beschnitten wurde.

Bei gescannten Dias zeigt das Dia ein etwa 1,2 mm keineres Format (nutzbarer Bereich wegen Verkantung evt. noch kleiner). Die bessere Lösung ist es, zuerst das volle Format mit den Originalkoeffizienten zu korrigieren und erst dann das Bild zu beschneiden.

Ist das Bild bereits beschnitten, können die Koeffizienten, wie in den zuvor angegebenen Gleichungen gezeigt, korrigiert werden. Einfacher ist es aber, die Arbeitsfläche (Canvas Size) zentrisch auf die Bezugsgröße zu bringen, mit den Originalkoeffizienten zu korrigieren und dann die Arbeitsfläche wieder zu beschneiden.

Flächentreu-nach-winkeltreu-Transformation

Bei der flächentreu-nach-winkeltreu-Transformation werden die Randbereiche gedehnt. Das Zielbild ist kissenförmig verformt. Das maximale Rechteck, das sich aus dem Kissen herausschneiden lässt, hat stärkere Unterschiede in der Seitenlängen, als das Ursprungsbild. Aus einem normalem Bildformat wird so ein Breitbild- bzw. Panoramaformat.

Die Diagonale des eingepassten Zielrechteckes ist kleiner, als der diagonale (Kissen-)Zipfelabstand. Der diagonale Öffnungswinkel des rechteckigen Zielbildausschnittes ist kleiner, als der Öffnungswinkel des Ursprungsbildes. Die Optimierung des Korrekturpolynoms braucht nur bis zu diesem neuen Öffnungswinkel zu gehen um so eine größere Genauigkeit bis zu diesem Wert zu erzielen. Größere Einfallswinkel erscheinen nicht mehr im transformierten Bild und der ansteigende Fehler kann nicht gesehen werden.

Für die Ermittlung der Korrekturkoeffizienten wird von einem idealen (flächentreuen) Vollformat-Fisheye mit folgenden Daten ausgegangen:

Damit ergeben sich ein HFOV (Horizontal Field Of View = horizontaler Bildwinkel) von 144° und ein VFOV (Vertical Field Of View = vertikaler Bildwinkel) von 92°. Das eingepasste Rechteck im transformierten Bild hat ein Seitenverhältnis von etwa 29 : 17 und ein Öffnungswinkel von 160°. Beim 36 mm x 24 mm - Format hätte das Objektiv eine Brennweite von 15,3 mm.

Transformation per Korrektur

Die angegebene Korrektur bezieht sich nicht auf mein Canon-Fisheyeobjektiv, sondern auf ein theoretisches (ideales) Fisheye, wie es im vorigen Kapitel beschrieben ist.

Sonderfälle:

Beispiel einer Fisheye-zu-Fisheye-Transformation
(von flächentreu nach winkeltreu)

Die folgende Aufnahme wurde mit einer Canon EOS 10 und einem Canon EF 2.8/15 Fisheye auf Diafilm gemacht. Das gerahmte Dia wurde mit dem Filmscanner Canon CanoScan FS 2710 in der höchsten Auflösung eingelesen. Die Auflösung beträgt 2720 dpi (Photoshop zeigt 2720,625 statt 2719,98 dpi) oder 107086 Pixel/Meter (laut BMP-Header). Das gescannte Bild hatte eine Pixelgröße von 3888 x 2592 und entspricht 36,3 mm x 24,2 mm. Der schwarze Rand durch den Diarahmen wurde abgeschnitten, so dass das Bild eine Pixelgröße von 3715 x 2445 bekam. Das ist das Bild ohne den schwarzen Rahmen (Rahmen bitte wegdenken).

Der Bildtext "Originalaufnahme" bezieht sich auf die Verzeichnung (Abbildungsfunktion). Die Farbdarstellung ist natürlich nicht "original".
 
flächentreues Fisheye, Arbeitsfläche durch schwarzen Rahmen auf 36 mm x 24 mm vergrößert flächentreues Fisheye, Arbeitsfläche durch schwarzen Rahmen auf 36 mm x 24 mm vergrößert

Kameraschwenk für das darüberliegende Bild berechnet Kameraschwenk für das darüberliegende Bild berechnet
An diesem Bild (oben) möchte ich die flächentreue Abbildung erklären: Die zwei eingekreisten Köpfe haben unterschiedliche Größen aufgrund der unterschiedlichen Entfernung. Wird die Kamera so geschwenkt, dass der linke Kopf in die Bildmitte kommt und der mittlere an den Rand (berechnetes Bild rechts), dann bleiben trotzdem die Größenverhältnisse zwischen den zwei Köpfen erhalten. Die Flächen der Gesichter ändern sich beim Schwenk nicht (flächentreu) - nur die Form. Die flächentreue Darstellung eignet sich z.B. die Bestimmung des Bewölkungsgrades des Himmels (anfangs gab es Fisheyes nur für technische Zwecke). Die Veränderung der Form ist im oberen Bild auf der rechten Seite an dem kugelförmigen Objekt (eine Vase?) zu sehen. Eine Linie von der Bildmitte bis zum Kugelobjekt zeigt die radiale Richtung. Die radiale Abmessung ist mit R bemaßt. Rechtwinklich dazu ist die tangentiale Abmessung mit T bemaßt. Das Verhältnis R / T zeigt die radiale Dehnung (hier Stauchung). Die Stauchung wird stärker, je weiter das Objekt von der Bildmitte entfernt ist. Die Stauchung macht Menschen an der Seite mager(er) und ist fotografisch unvorteilhaft.

Menü: Filter - Panorama Tools - Correct Die winkeltreue Darstellung ist für die Menschendarstellung ein geigneteres Fisheye. Da es dieses nicht gibt, rechnen wir das obere Bild Schritt für Schritt um (siehe Kapitel "Transformation per Korrektur"):


winkeltreues Fisheye, das unbeschnittene Bild direkt nach "Correct" winkeltreues Fisheye, das unbeschnittene Bild direkt nach "Correct"

Das berechnete Bild zeigt nun die winkeltreuen Darstellung des selben Motivs. Eine Verformung des Kugelobjektes tritt nicht auf, wie auf dem Bild zu sehen ist. Die Linien auf dem Mädchengesicht zeigen den Winkel zwischen Augen und Nase originalgetreu. Die Linie zu dem Kugelobjekt geht auch durch das Kreuz auf dem Mädchengesicht. Da keine Linie des Kreuzes mit der radialen Richtung übereinstimmt, würde mit einer Deformation des Kopfes sich auch der Schnittwinkel der beiden sich kreizenden Linien ändern. Das zeigt, dass Deformationsfreiheit und Winkeltreue zusammenhängen. In einer winkeltreuen Darstellung ändern sich die Schnittwinkel nicht beim Kameraschwenk. Dass das Fensterkreuz links nicht ganz rechtwinklig ist liegt daran, dass nicht senkrecht auf das Fenster geschaut wird. Das wäre auch dann der Fall, wenn es in der Bildmitte erscheinen würde (gleicher Standpunkt vorausgesetzt).

Beispiel einer Fisheye-zu Normal-Transformation
(von flächentreu nach gnomonisch)

Menü: Filter - Panorama Tools - Adjust Viele Menschen bevorzugen die normale Darstellung mit geraden Linien. Mit Panorama Tools ist auch das möglich. Das Ausgangsbild ist das gleiche Bild, wie im vorigen Kapitel.
"normales" Objektiv mit extremem Öffnungswinkel, das mit "Adjust" erstellte Bild "normales" Objektiv mit extremem Öffnungswinkel, das mit "Adjust" erstellte Bild

Im berechneten Bild sind die geraden Objektkanten auch wirklich gerade dargestellt. Gesichter dagegen werden an den Seiten extrem breitgezogen und oben oder unten langgezogen. Diese Darstellung eignet sich eher für Architektur und Innenräume, als für Menschen, die bestenfalls in der Mitte bleiben sollten. Aber auch für Innenräume ist der weite Winkel in der Breite zu extrem. Ein Beschneiden der Breite auf ein Verhältnis von 3 : 2 wäre sinnvoll. Für eine Berechnung eines Ergebnisbildes gleich im Format 3 : 2 müssten im Dialog "Create Panorama Options" die HFVO-Werte oben 144° (zur Fehlerverringerung besser 145,9°) und unten 115° eingegeben werden.

Falsche Fisheye-Funktion in den Panorama Tools

Beim Probieren mit dem Hochformat 2 : 3 und der passenden HFOV-Eingabe 92° wurde das Bild etwas kleiner. Fisheyes, die Erdkarten-ähnlich den Blickrichtungswinkel linear in einen Radius umsetzen, nennt man winkellinear oder äquidistant. Bei einem 3 : 2 -Bild sind dann HFOV : VFOV auch 3 : 2. Bei Diagonal 180° sind HFOV = 150° und VFOV = 100°, beim Hochformat umgekehrt. Beim Probieren mit 150° zu 100° zwischen Quer- und Hochformat stimmten die Ergebnisbilder überein. Die tatsächlich flächentreuen Bilder hält Panorama Tools für winkellineare Bilder und rechnet sie entsprechend falsch um. Analysen in einer Excel-Tabelle mit Diagramm zeigten, dass mit Zwischenwerten (zwischen 144° und 150°) die Fehler minimiert werden. Je kleiner der diagonale Bildwinkel im Ergebnisbild ist, desto kleiner lässt sich mit passenden Werten der Fehler halten:

Diese Werte wurden bisher nicht praktisch überprüft.

Das hier Gesagte gilt nicht für die Correct-Transformationen, weil dort nicht auf die Pano - Fisheye-Funktion zurückgegriffen wird.
Die falsche Fisheye-Funktion führt auch zu Genauigkeitsproblemen beim Erstellen von Panoramen aus Fisheye-Bildern.

Normal zu winkeltreu

Normale Bilder wird man kaum in Fisheye-Bilder umrechnen. Wenn auf einer Superweitwinkelaufnahme Menschen verzerrt dargestellt sind, hat man durch diese Transformation vielleicht doch eine Verbesserungsmöglichkeit. Eine Transformation mit falschen Winkeln per Adjust wäre zwar möglich, aber hier habe ich einige Koeffizienten für die Correct-Methode. Für Brennweiten unter 20 mm bitte die 14er Koeffizienten benutzen und ab 20 mm die 20er Koeffizienten. Bei Brennweiten über 28 mm ist eine Korrektur nicht mehr nötig.

Diese Werte wurden bisher nicht praktisch überprüft.


Startseite    Seitenanfang