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:
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?
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:
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:
Stattdessen möchten Sie wahrscheinlich diese Art von Ergebnis:
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.
osulisch
Michael C
Michael C
Landini135