Vignettierungen entfernen:

Haben Sie auch schon festgestellt, dass ein in der Natur gleichmäßig weißer Schnee in den Ecken Ihrer Bilder dunkler ist als in der Mitte? Wenn Ja, dann leidet Ihr Objektiv unter Vignettierungen (Randabdunkelungen). Sofern diese nicht durch zu kleine Filter oder andere Vorsätz verursacht sind, entstehen sie durch optische Fehler der Objektive und dem Zusammenwirken zwischen dem Aufnahmechip und den Objektiv. Im Folgenden wird eine Methode beschrieben, wie man diesem Übel zu Leibe rücken kann.
Vorab ein Hinweis für Eilige. Sollte keine Lust bestehen, in die Tiefen der elektronischen Bildverarbeitung einzusteigen, kann man dazu auf kommerzielle oder freie Fertigprodukte zurückgreifen. Wenn die eigene Optik dort nicht unterstützt wird, oder ein vertiefter Einstieg in die Materie gewünscht ist, dann helfen die folgenden Ausführungen weiter.

Die Aufgabe:

Das Sigma 12-24 mm Objektiv ist derzeit das extremste Weitwinkelzoom, mit dem man mit Vollformat-Kameras (der Chip ist gleich groß wie das Format des Kleinbildfilms) arbeiten kann und das nicht die verzeichnenden Eigenschaften eines Fischeye-Objektivs kennt. Im Gegenteil, gerade Linien bleiben fast vollständig erhalten, ein optischen Meisterstück. Dennoch hat alles seine Grenzen. Die Lichtstärke ist nicht besonders hoch, bei geöffneter Blende zeichnet es relativ weich und es tritt eine erhebliche Randabdunkelung auf.


(Sigma 12-24 mm, Brennweite 12 mm, Blende 4,5 Aufnahme einer gleichmäßig weißen Wand, Belichtung ca. 1. sek., Kamera stark bewegt und gedreht um eventuelle Helligkeitsunterschiede der Wand auszugleichen)

Lassen Sie sich dadurch nicht abschrecken, Abblenden hälfe auch gegen die Vignettierung und bringt bessere Schärfe. Da Abblenden aber doch nicht zur Gänze hilft und mitunter doch auch Blende 4,5 unvermeidlich ist, wäre ein Verfahren zur Korrektur der Randabdunkelung erforderlich.

Die Werkzeuge:

Für die technische Umsetzung verwende ich das Plug-In Mathmap für die Bildbearbeitung Gimp (Links dazu auf meiner Link-Seite). Mit Mathmap können mathematische Operationen auf Bilder angewandt werden, es ist wie ein programmierbarer Taschenrechner für Fotos, eine ideale Trickkiste für verspielte Digital-Fotografen. Diese Software gibt es in erster Linie für Linux, Gimp ist aber auch für Windows verfügbar aber Mathmap ist aber für Windows nur in einer Version zu Gimp 1.8 erhältlich sein. Im Gimp finden Sie Mathmap im Menü Filter/Allgemeines.

Der mathematische Hintergrund:

Die Abdunkelung nimmt mit zunehmenden Abstand vom Zentrum des Bildes zu. Es bietet sich daher an, eine Formel zu schreiben, die bei größeren Abstand von der Bildmitte eine stärkere Aufhellung vornimmt. Mathmap kann die Lage eines Bildpunktes in sogenannten polaren Koordinaten beschreiben (Richtung und Abstand vom Bildmittelpunkt). Ein derartiges Koordinatensystem ist für unser Problem optimal.

Jetzt ist nur noch eine geeignete Formel für die anzuwendende Aufhellung zu suchen. Die Suche im Internet hat Vorschläge ergeben, eine Winkelfunktion (cosinus) des Bildwinkels einzusetzen, um die theoretische Abnahme der Helligkeit zu beschreiben. Leider sieht die Wirklichkeit anders aus:


(Sigma 12-24 mm, Brennweite 12 mm, Blende 4,5 Aufnahme einer gleichmäßig weißen Wand, Helligkeitsabnahme von der Bildmitte aus, schwarze Linie - Messwerte, rote Linie - angepasste Ausgleichkurve 5. Ordnung.)

Die Kurve besteht aus zwei Teilen und hat einen Knick bei ca. 80 % der Diagonale. Ich habe daher zur Beschreibung des Verlaufes der Abdunkelung auf ein sogenanntes Polynom zurückgegriffen:

y = x + a*x^2 + b*x^3 + a*x^4 + b*x^5


Wie die rote Kurve in der oben stehenden Abbildung zeigt, hat die Anpassung sehr gut funktioniert.

Die Arbeitsschritte:

Zuerst muss ein Bild einer gleichmäßig hellen Wand aufgenommen werden. Gar nicht einfach bei einem 12mm Objektiv und vollem Kleinbildformat. Ein Trick ist, eine lange Belichtungszeit zu wählen und die Kamera gezielt verwackeln sowie mehrmals drehen. Am besten manuell um ca. 2 Blenden höher belichten, gerade so, dass keine Stelle ausreißt (völlig überbelichtet ist). Das Ergebnis ist ein Bild, dessen Werte radial vermessen werden können:

(Messbild, die Werte entlang des Radius müssen vermessen werden.)

Zur Vermessung wird das Bild in den Gimp geladen und gedreht:


(Messbild drehen.)

Anschließend wird das Bild auf einen schmalen horizontalen Streifen beschnitten und in ein Graustufenbild gewandelt:


(Messbild auf schmalen Streifen beschneiden und in Graustufenbild wandeln.)

Der schmale Streifen wird nun auf ein Bild skaliert, dass 1000 Pixel breit und EIN Pixel hoch ist. Gespeichert als PGM Bild, Option ASCII, ergibt eine Datei mit folgenden Werten:

P2
# CREATOR: The GIMP's PNM Filter Version 1.0
1000 1
255
234# ab hier beginnen die Grauwerte:
233
232
231
230
230
..... und so weiter

Aus diesen Werte müssen nun die Parameter für des Polynom entwickelt werden. Um Bilder unabhängig von der Bildgröße verarbeiten zu können, habe ich die Werte für den Radius (Abtand der Pixel vom Bildmittelpunkt) so gewählt, dass diese immer zwischen 0 und 1 liegen müssen sowie die Helligkeitswerte der Koorrekturkurve zwischen 1 (Bildmitte) und der max. Abdunkelung am Rand liegen müssen. Die Umrechnung der Messwerte kann mit einer Tabellenkalkulation erfolgen, wobei am Ende der Arbeit zwei Spalten entstehen sollen:

RADIUS

WERT

0.0000

1.0000

.......

.......

.......

.......

.......

.......

1.0000

0.xxxx (Wert in der Ecke)


Wie Sie nun die Parameter für das Polynom 5. Ordnung berechnen (schätzen), überlasse ich Ihrer Kreativität. Ich verwende zur Polynomanpassung das Linux-Mathematik Programm kpl.

Zu guter Letzt ist noch die Funktion in Mathmap zu schreiben. Für mein Sigma 12-24mm ergab sich bei 12 mm folgendes Ergebnis:

rad=r/R;
faktor=1/(1+(-0.144036*rad+0.803868*rad^2-5.22152*rad^3+8.57454*rad^4-4.77864*rad^5)*user_float(\"Menge\",0,1));
origValXY(x,y)*faktor

Ein Schieberegler ermöglicht die Auswahl des Ausmaßes der Korrektur, bitte ziehen Sie diesen auf den gewünschten Wert.

Da dieses Objektiv ein Zoom ist, sowie auf Vollformat und APS-Kameras angewendet werden kann sowie auch eine unterschiedliche Korrektur auf die einzelnen Farbkanäle notwendig sein könnte, zeige ich nachstehend eine Luxuslösung (besser wäre eine gesonderter Vermessung für die einzelenen Brennweiten, Blenden und Farbkanäle):

brennweite=user_float(\"Brennweite_gesamt\",12,24);
verlaengerungsfakt=user_float(\"Brennweite_verlaengerung\",1,1.6);
b_fakt=1+(brennweite*verlaengerungsfakt-12)/80;
f_ges=user_float(\"Menge_gesamt\",0,1);
f_red=user_float(\"Menge_zus_rot\",0,0.1);
f_green=user_float(\"Menge_zus_gruen\",0,0.1);
f_blue=user_float(\"Menge_zus_blau\",0,0.1);
rad=r/R/b_fakt;
korr=(-0.0893748*rad+0.521807*rad^2-4.44247*rad^3+7.69514*rad^4-4.39767*rad^5);
p=origValXY(x,y);
rgbColor(red(p)/(1+korr*(f_red+f_ges)),green(p)/(1+korr*(f_green+f_ges)),blue(p)/(1+korr*(f_blue+f_ges)))

Viel Spass beim Mathmappen!