Belichtungskorrektur nach der Aufnahme von Bildern

Ich habe einen Stapel Bildkacheln (von einer Drohne genommen), die ich zu einem einzigen Bild mosaikieren möchte. Ich möchte eine Belichtungskorrektur durchführen, um die Variation der Beleuchtung zwischen den Bildkacheln vor dem Mosaikieren aufgrund von Variationen innerhalb jedes Bildes zu reduzieren. Ich habe die folgende Formel gesehen, die für eine solche Aufgabe verwendet wird:Belichtungsausgleich

Wo:

p' ist das richtige Pixel

p ist das ursprüngliche unkorrigierte Pixel

k ist die Blendenzahl F

t ist die Belichtungszeit

K ist die ISO

Aus meinen EXIF-Metadatendaten erhalte ich die folgenden Werte:

k = 2,200000078

t = 0,002007692122

K = 100

Dies ergibt einen Korrekturfaktor von 24,1072836326 (basierend auf der obigen Gleichung), der, wenn ich ihn mit allen Pixeln (p) im Bild multipliziere, zu einer drastischen Änderung der Pixelwerte (p') führt. Mache ich hier etwas falsch? Sind zum Beispiel meine Einheiten korrekt?

Ich verstehe das überhaupt nicht. Das "richtige" Pixel? Was bedeutet es, ein Pixel zu multiplizieren? Was multiplizierst du? Und wenn Sie einen Multiplikationsfaktor haben, der pro Pixel berechnet wird ... oh, ich weiß nicht. Zusammenfassend, was?!
Wurden alle Bilder unter den gleichen Lichtverhältnissen aufgenommen? Oder zu unterschiedlichen Zeiten bei unterschiedlicher Beleuchtung?
Möglicherweise müssen Sie die Verschlusszeit von einem Dezimalwert (0,002007692122) in den Nenner eines 1/x-Bruchwerts (500) umwandeln.
Unter unterschiedlichen Lichtverhältnissen aufgenommen; dh intermittierende Wolken, direkte Sonneneinstrahlung, schwankende Sonnenhöhe

Antworten (2)

F: "Wie kompensiere ich die Belichtung mehrerer Fotos, damit ich sie zusammenfügen kann?".

Auch ich bin mit der Formel nicht einverstanden, sollte sie nicht lauten: p' = p + (p * (k^2)/(t*k)) ? [Anmerkung: Sie möchten „t“ wie oben in @Michael Clarks Kommentar erwähnt korrigieren.]

In jedem Fall besteht Ihre "Kompensationsmethode" darin, einfach jedes Pixel in einem bestimmten Foto etwas dunkler oder etwas heller zu machen, sie auszugleichen und sie dann zusammenzufügen.

Sehen Sie sich ein Blockdiagramm für die OpenCV-Stitching-Demo an:

Blockdiagramm des Nähens

Sehen? (Ihre Methode wird in ihrer jetzigen Form keine schönen und perfekten Ergebnisse liefern).

  • Zuerst (naja, ich fange damit an) benötigen Sie Registrierungsdaten (gelber Block in der Mitte).

  • Die Registrierungsdaten gehen zu "Warp-Bilder", von denen eines zu "Belichtungsfehler schätzen" und dann zu "Belichtungsfehler kompensieren" geht.

  • Dann werden die verzerrten und kompensierten Bilder gemischt.

Sie können den Quellcode anzeigen, um zu sehen, wie die Formel implementiert wird.

Sie können einfach eine ausführbare Windows-Datei von SourceForge herunterladen, um sich das Lesen, Lernen und Kompilieren zu ersparen.

Es gibt viele andere kostenlose Stitching-Programme, die meisten mit verfügbarem Quellcode.

Ich schlage vor, dass Ihre Formel diese Art von Ergebnis liefert:

Nahtlinien sichtbar

Stattdessen möchten Sie wahrscheinlich diese Art von Ergebnis:

Ergebnis der OpenCV-Stitching-Demo

Mache ich hier etwas falsch?

Ja. Sie gehen davon aus, dass die Ansicht in jedem Bild eine gleiche durchschnittliche Helligkeit haben sollte. Aber wenn Sie die Kamera unter denselben Lichtbedingungen in verschiedene Richtungen richten, ändern Sie die Kompositionen der Szene. Möglicherweise nehmen Sie weniger hellen Himmel und mehr dunklen Vordergrund auf. Oder Sie nehmen weniger helles Gras und mehr dunkle Bäume auf. Sie können nicht erwarten, dass jedes Bild insgesamt die gleiche durchschnittliche Helligkeit hat, wenn jedes Bild in verschiedene Richtungen auf verschiedene Objekte gerichtet aufgenommen wird.

Der effektivste Weg, dieses Problem zu vermeiden, besteht darin, die Belichtung für alle Bilder auf denselben Wert einzustellen, bevor Sie die Bilder aufnehmen (dh manuelle Belichtung oder Belichtungssperre ). Da Sie dies nicht getan haben, ist es am besten, die relative Belichtung jedes Bildes anzupassen, um Belichtungsunterschiede bei der Aufnahme der Bilder auszugleichen. Das heißt, Sie müssen den Belichtungswert in einem Bild auswählen und dann alle anderen Bilder normalisieren, indem Sie die Unterschiede in ISO, Verschlusszeit und Blende auf den Belichtungswert in Ihrem ausgewählten Bild ausgleichen.

Ist das nicht genau das, was die Formel tun soll? Für mich sieht es so aus, als würde es sich für Variationen der Belichtungseinstellungen normalisieren.
Nein, denn verschiedene Dinge sind unterschiedliche Helligkeiten. Wenn Sie möchten, dass alles genau die gleiche Helligkeit hat, haben Sie nur ein solides graues Bild.
Die Formel wendet einen konstanten Belichtungskorrekturfaktor auf alle Pixel eines Bildes an. der Faktor ist nur von den Belichtungsparametern abhängig.
@ths wäre die Formel, wenn sie korrekt ist, nützlich, um Bilder mit genau demselben Sichtfeld zu normalisieren , die mit unterschiedlichen Belichtungen aufgenommen wurden. Aber wenn das Sichtfeld geändert und die Belichtungen "gemittelt" werden, damit sie übereinstimmen, werden die gleichen Punkte, die in beiden Sichtfeldern enthalten sind, mit ziemlicher Sicherheit mit unterschiedlichen Helligkeiten enden. Ein Punkt mit mittlerer Helligkeit mit sehr hellen Dingen auf der einen Seite und sehr dunklen Dingen auf der anderen Seite wird in einem Rahmen, der hauptsächlich die dunklen Dinge enthält, als sehr hell angezeigt, wird jedoch in einem Rahmen, der hauptsächlich die helleren Teile enthält, als schwach angezeigt der Szene.