Matheseitenüberblick

Distortion/Bildverzeichnung




Tonnen-
verzeichnung
Kissen-
verzeichnung
Schnurrbart-
verzeichnung

Die kürzliche Beschäftigung mit Brückenbögen und deren funktionaler (funktioneller?) Rückmodellierung (sind es Parabeln?, siehe →hier) führte mich auf das Problem, daß man eigentlich keine wirklich idealen Fotos von Brücken machen kann, die räumliche Ebenen auch eben abbilden, alle Geraden als Geraden etc. — Man müßte die Bilder entzerren, fluchtende Linien wieder geradeziehen, dabei die Verkürzung herausrechnen. Dabei stieß ich nolens volens auf die Sache mit den typischen Bildverzeichnungen (Tonnen- und Kissen-), über deren Mathematik bzw. deren mathematische Modellierung immerhin einiges zu finden ist.

Vor einiger Zeit hatte ich (für jemand, der (oder die?) sie dann nicht haben wollte) eine günstige alte digitale Nikon-Spiegelreflexkamera gekauft mit einem Objektiv, das fürchterlich verzeichnet und für sowas wie Architektur eigentlich überhaupt nicht geeignet ist. Von jener Jemandperson übrigens habe ich ein fürchterlich verzeichnetes Foto (meines Wissens auch mit einer Nikon geknipst, aber nicht von mir) im Internet entdeckt, das ich zum Testen des folgenden Programms verwendet habe. Und ein anderes aus selber Hand mit einem dort ebenfalls schrecklich verzeichneten Kollegen, dessen wirkliche Gesichtsform mir als Referenz gut vertraut ist. Das Programm ist in der Lage, ihn einwandfrei wiederherzustellen, und andere erkennt man plötzlich auch.

Nun, die Geraden und die Verzeichnung brachten mich auf den Gedanken, ob man nicht beides kombinieren könnte, d.h. anhand einiger Punkte eines verzeichneten Bildes, die in echt eigentlich auf einer Geraden liegen (Haus- oder Dachtkanten, Lichtmasten o.ä.), die Koeffizienten des Distortionsmodells (siehe den englischen Wikipediaartikel und unten auf dieser Seite) rekonstruieren könnte. Nun: gedacht, getan.

Vier (oder wahlweise auch nur drei) blaue Punkte sollen also auf einer verzeichneten Gerade liegen, d.h. auf dem verzeichneten Bild einer original geraden Strecke. Das Programm auf dieser Seite berechnet aufgund der Lage dieser vier Punkte eine Bildentzerrung so, daß die zugehörigen entzerrten vier Punkte tatsächlich auf einer Geraden liegen.

Man kann die Punkte mit der Maus verschieben, drehen und zoomen. Es wird optional zur Kontrolle ein original orthogonale Netz mit der berechneten Verzeichnung abgebildet. Ebenso optional wird die Zuordnung zwischen verzeichneter und rekonstruierter Radialdistanz geplottet. (Die Winkelhalbierende entspricht keiner Verzeichnung.)

Unterhalb der Graphik finden sich die Funktionen zum Laden einer Bilddatei, zum Berechnen des (großen) unverzerrten Bildes und auch zum (indirekten) Exportieren. Das ist hier mit Javascript natürlich alles nicht so schnell wie in einem professionellen Bildbearbeitungsprogramm, aber immerhin...

nur 3 Punkte  

↓ ↓ Anzeigeoptionen... ↓ ↓

Dämpfung:
K1 100 %
K2 100 %
auto   nächster Pixel

    Bild anzeigen    

 Farbe der Bildpixel: nächster Pixel im Original (oder interpoliert)
Zoom: 100% — Alternative (funktioniert leider nicht verläßlich): In großer Graphik Rahmen aufspannen (linke Maustaste mit Strg/Ctrl)

 

Anmerkungen

Das hier implementierte mathematische Modell ist xu = xv + (xv - xm)/(1 + K1r2 + K2r4) und yu = yv + (yv - ym)/(1 + K1r2 + K2r4), wobei xv und yv die Koordinaten des verzeichneten Punktes sind und (xu|yu) die Koordinaten des entsprechenden, rekonstriert-unverzeichneten Punktes. r ist der euklidische Abstand des (verzeichneten) Punktes (xv|yv) zur Bildmitte (xm|ym). Bei nur drei Referenzpunkten fällt der Summand K2r4 weg.

Das Modell ist sehr sensibel; leichte Abweichungen von der Geraden gereichen oft zur Analyse einer überraschend deutlichen Verzeichnung. Vielleicht sollte man über mehrere Referenzgeraden mitteln. Idee für später... Bei der Anwendung auf echte Fotos, die man hereinladen kann (drag&drop sollte auch funktionieren) bedarf es (wie auch bei der Berechnung des verzeichneten Netzes) der inversen Rechnung, denn man berechnet für jeden Bildpunkt des korrigierten Bildes den Quellpunkt in der verzeichneten Vorlage, nicht umgekehrt (was zwangsläufig zu Bildlücken oder Überdeckungen führt). Für das angegebene Modell mit zwei Parametern ist dazu für jeden Bildpunkt eine Gleichung vierten Grades zu lösen (hier wird numerisch per Newtonverfahren approximiert), für drei Punkte nur eine quadratische.

© Arndt Brünner, 16. 11. 2023
Version: 20. 11. 2023