Zum Beispiel wollte ich für ein Gespräch über JPEG-Komprimierung Pixel für Pixel vergleichen, was sich zwischen zwei JPEGs geändert hat (eines mit Komprimierungsstufe 100 und eines mit Komprimierungsstufe 95).
Wie erstelle ich gute visuelle Karten von Änderungen ohne langwierige benutzerdefinierte Softwareprogrammierung?
image-processing
image-compression
Taxifahrer
quelle
quelle
Antworten:
Photoshop + Ebenen FTW. (Ja, Sie können auch Gimp oder eine andere Bearbeitungssoftware mit denselben Funktionen verwenden.)
Beginnen Sie mit Ihrem Basis-Image. Im obigen Fall habe ich das Image mit JPEG-Qualität 100 verwendet.
In dem resultierenden Bild ist jedes Pixel, das sich in irgendeiner Weise zwischen den beiden Bildern unterscheidet, weiß. Sie können es anpassen, um die Dinge "ein wenig anders" zu machen, indem Sie den Schwellenwert ändern.
Beispiel mit vielen Unterschieden zwischen JPEG 92 und 100 von Lightroom.
Beispiel zeigt keinen Unterschied zwischen 95 und 100.
Nicht, dass nur ein binäres "Geändert oder Nicht" angezeigt wird. Was wäre, wenn Sie detaillierter wissen möchten, wie stark es sich geändert hat, beispielsweise nach Farbkanal?
Je heller die resultierenden Pixel sind, desto mehr unterscheiden sie sich in dieser Farbe. Der Nachteil ist jedoch, dass Sie am Ende viel grauen Schlamm haben. Manchmal ist es einfacher, den Schwellenwert festzulegen, um festzustellen, wo Unterschiede bestehen. Deshalb baue ich beides und schalte um, welches sichtbar ist.
quelle
Wenn Sie Photoshop verwenden, gehen Sie wie folgt vor:
Legen Sie die beiden JPEG-Dateien in derselben PSD-Datei in zwei separaten Ebenen ab. Sie sollten sich genau überlappen, da ihre Abmessungen gleich sind. (welches oben drauf geht ist egal).
Stellen Sie den Ebenenüberblendungsmodus auf "Unterschied". Sie würden ein größtenteils schwarzes Ergebnis sehen. Abhängig vom Qualitätsunterschied zwischen den beiden Originalebenen können Sie mehr oder weniger Rauschen sehen.
quelle
Alle Bildverarbeitungspakete sollten dies einfach machen. Ich zeige Ihnen, wie es in Mathematica gemacht wird, wenn Sie Zugriff auf dieses System haben. Mathematica ist eine Programmiersprache, aber es ist wirklich einfach, diese Art von Manipulationen durchzuführen. Wenn Sie also Zugriff darauf haben (z. B. über eine Universitätslizenz), empfehle ich, dass Sie es ausprobieren!
Importieren Sie zunächst das Bild:
Komprimieren Sie es erneut mit JPEG-Komprimierung
Nehmen Sie nun die Differenz der Pixelwerte und konvertieren Sie sie zuerst in Gleitkommazahlen, um sicherzustellen, dass negative Werte erhalten bleiben.
Auf dem Differenzbild ist nicht viel zu sehen (der Unterschied ist winzig), und negative Werte werden auf Schwarz abgeschnitten. Skalieren wir also alle Werte neu, um den gesamten Dynamikbereich auszufüllen (das Minimum wird auf 0 skaliert, das Maximum auf 1):
ImageDifference
gibt den absoluten Unterschied der beiden Bilder an und erzeugt keine negativen Zahlen. Dies ist der Vorgang, den Sie eher in Bildverarbeitungspaketen finden, insbesondere in GUI-Paketen (Photoshop, GIMP).Wir können auch einen einzelnen RGB-Kanal verwenden, zum Beispiel den roten, und die positiven und negativen Unterschiede mit 'entgegengesetzten' Farben visualisieren:
Hier ist das Gleiche, mit den Unterschieden, die fünfmal verstärkt wurden. Die JPEG-Artefakte sind jetzt besser erkennbar.
Der Vorteil der Verwendung einer Programmiersprache besteht darin, dass wir dies leicht automatisieren können und sehen können, wie sich der Unterschied für "Komprimierungsstufen" zwischen 0,1 und 1,0 ändert:
quelle
Sie können die Befehlszeilentools von Imagemagick verwenden.
liefert den absoluten Wert der Differenzen für jeden RGB-Kanal.
quelle
In GitHub sind einige interessante Bilddifferenzierungswerkzeuge im Web integriert, wie hier beschrieben und in dieser Demo demonstriert .
quelle
In dem resultierenden Bild zeigen die schwarzen Teile, wo die Originalbilder identisch sind, und alles, was heller ist, zeigt Unterschiede.
quelle