Suchen Sie nach einer "autoritativen", bewährten Methode, um zu beweisen, dass zwei Fotobilder "fast identisch" sind?

Im üblichen Diskurs können die meisten Menschen beim Betrachten eines fotografierten Bildes (A) - das ein JPG ist - und einer leicht mit Photoshop bearbeiteten Version davon (A2) die beiden intuitiv vergleichen und visuell feststellen, dass es sich tatsächlich um dasselbe Bild handelt, außer für eine kleine Anzahl von Unterschieden.

Dies ist jedoch kein formeller Beweis dafür, dass die beiden Bilder „fast identisch“ sind, und kann daher in einer Umgebung angefochten werden, in der strengere Beweisstandards erforderlich sind (rechtliche Umgebung oder Skeptics.SE).

Wenn es sich um zwei Textdateien handelte, konnte man einen diffBefehl darauf ausführen und eine große Ähnlichkeit feststellen, indem das Ergebnis deutlich kleiner als die Dateigröße war.

Da es sich jedoch um JPG-Bilder handelt, würde ich erwarten, dass der Effekt des Photoshoppings und des Speicherns einer zweiten Version - mit einem etwas anderen Komprimierungsverhältnis - dazu führen würde, dass das direkte Diff zu 100% nutzlos ist.

  1. Gibt es formale Methoden in der Bildverarbeitung, die verwendet werden können, um die beiden gespeicherten Fotos mit verlustbehafteter Komprimierung (JPG) zu "differenzieren" ?

    Die Methodik sollte überprüft werden (z. B. durch Peer-Review-Verfahren bis hin zur Veröffentlichung in einer bekannten Publikation zu Bildverarbeitung/Computer Vision/etc...).

    Die gewünschte Ausgabe ist entweder ein numerischer Prozentsatz der Änderung; oder eine Visualisierungsmethode.

    Die Methodik sollte unempfindlich gegenüber geringfügiger Nachbearbeitung sein, wie z. B. geringfügigem Randbeschneiden, Größenänderung und Speichern mit einem anderen Komprimierungsverhältnis, das geringfügige Verluste verursacht.

  2. Wenn ja, gibt es öffentlich verfügbare Websites oder Freeware-Programme, die (a) 2 JPGs hochgeladen haben und den "Diff" erzeugen können; (b) Veröffentlichen Sie die genaue Methodik, die sie verwenden, was zu Nr. 1 passt.

Würden die Bildausrichtung und ein Differenz-Mischmodus (in vielen Editoren verfügbar) nicht das tun, was Sie wollen?
So ziemlich ein Duplikat dieser drei Fragen zu SO: 1 2 3
@ user28116 - schlägt mich. Ich weiß nicht, welche Algorithmen sie verwenden, und kann daher nicht beweisen, dass sie tun, was sie zu tun behaupten, wenn sie aufgefordert werden, Beweise vorzulegen.
Dies kommt dem automatisierten Prozess mit Visualisierung wahrscheinlich am nächsten: scootersoftware.com/help/index.html?picture_compare.html
Wavelet-Zerlegung?
@MarcinWolny - Ich glaube nicht, dass BC ihre Vergleichsmethodik veröffentlicht (zumindest nicht auf dem von Ihnen erstellten Link). Und es ist nicht Open Source, also kann ich den Code nicht überprüfen.
@PhilipKendall - keine der Antworten auf diese angesprochenen SO-Fragen "ist die von Experten begutachtete Methode" (ich behaupte nicht, dass dies nicht der Fall ist, nur dass die Antworten dies nicht ansprechen, was angesichts der Tatsache, dass es SO ist, Sinn macht)
Der Differenz-Mischmodus ist eine Visualisierung der Absolutwertdifferenz zwischen Pixeln – es ist nur eine direkte Subtraktion in jedem der Farbkanäle, wobei das Vorzeichen ignoriert wird. JPEG-Komprimierungseffekte, Zuschneiden, geringfügige Kontraständerungen usw. können leicht von der Pixelersetzung unterschieden werden.
@DVK Da niemand in einer dieser Antworten auf eine "endgültige" Methode hingewiesen hat, denke ich, dass die einfache Antwort auf Ihre Frage "Nein" lautet.
@PhilipKendall - Ich suche nicht nach einer einzigen "endgültigen" Methode. Lediglich einer, der einen Beweis hat, dass es funktioniert (wobei der Beweis lautet: "Hier ist der verwendete Algorithmus. Hier ist die Forschung, die beweist, dass der Algorithmus theoretisch funktioniert, oder indem er auf Tonnen von Bildern läuft und beweist, dass keine Fehler vom Typ 1 oder Typ 2 vorliegen)
Und ich denke immer noch, dass die Antwort auf Ihre Frage "nein" ist.
Ich würde mir keine Sorgen machen, zu versuchen, die "Standards" von SkepticsSE zu erfüllen - sie scheinen an logischen Systemen und "Beweisstandards [sic]" zu arbeiten, die in der wissenschaftlichen oder technischen Welt unbekannt sind. Sagen Sie ihnen einfach, dass Sie eine Website gesehen haben, die besagt, dass die beiden gleich sind, und sie werden glücklich sein. (Möglicherweise müssen Sie beide auf einer Website veröffentlichen und sagen, dass sie gleich sind, und ihnen den Link geben, wenn sie sich im strengen Modus befinden).
Für das, was es wert ist, gibt es keine forensischen Methoden irgendeiner Art von Bildanalyse, die Beweise ... für irgendetwas liefern. Stattdessen liefern die Methoden Daten. Je nach Situation ist es Sache des Analysten oder der Strafverfolgungsbehörden oder in einigen Situationen letztendlich eines Richters oder Geschworenen, zu sagen, dass die Daten einen Beweis darstellen. Wenn Sie jedoch nach etwas suchen, das Daten liefert, die zeigen können, ob ein Bildinhalt mit Photoshop bearbeitet wurde, gibt es die Error Level Analysis seit einigen Jahren genau dafür.
@BShaw - das ist richtig. Ich suche nicht nach "Fake/not fake". Ich suche nach Daten auf der Ebene "Dieses Bild ist diesem Bild zu 97% ähnlich (mit Vertrauen xxx)".

Antworten (4)

Die Computer-Vision-Forschungsgemeinschaft verwendet beim Vergleichen von Bildern häufig das PSNR (Peak Signal to Noise Ratio), um beispielsweise zu beurteilen, wie gut ein bestimmter Komprimierungs- oder Bildrekonstruktionsalgorithmus ist.

Die Wikipedia-Seite beschreibt, wie man es berechnet: http://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio

Es handelt sich um eine mathematische Punktzahl, die auf der numerischen Differenz zwischen Pixelwerten basiert. Es erfordert, dass die beiden Bilder zuerst ausgerichtet werden, eine kleine Fehlausrichtung könnte zu einem schlechten Übereinstimmungsergebnis führen, selbst wenn das Bild ansonsten identisch ist.

Nach dem letzten Absatz zu urteilen, scheint die Anforderung "unempfindlich gegen Skalierung" stark verletzt zu sein?
Ist PSNR an und für sich ein sinnvolles Maß oder kann es nur zum Vergleich verschiedener Modelle verwendet werden? Ich denke zuerst an MAE, das in PS trivial zu berechnen ist, indem der Differenzmodus und der durchschnittliche Pixelwert aus den Histogramminformationen verwendet werden. Sie können MAE jedoch nur verwenden, wenn Sie einen anderen MAE-Wert zum Vergleich haben. Deshalb habe ich Korrelation empfohlen.
@DVK PSNR ist nicht skalierungsunempfindlich, mir ist nämlich keine Standardmetrik bekannt. Die kurze Antwort auf Ihre Frage wäre also "nein". Es gibt SIFT (scale invariant feature transform), das für Bildmerkmale (Linien, Ecken usw.), aber nicht für ganze Bilder funktioniert. Sie könnten einen Weg finden, Bilder in SIFT-Features umzuwandeln und dann die Features zu vergleichen, aber dann wäre es keine allgemein akzeptierte Methode, da Sie es gerade erst erfunden hätten.
@AndyBlankertz ja PSNR-Scores sind isoliert aussagekräftig - im Gegensatz zum MAE wird der Fehler relativ zum Signal ausgedrückt.

Sie könnten Photoshop und Ebenen verwenden, um einen "Unterschied" zwischen ihnen anzuzeigen. Mir ist eine andere Mac-App bekannt, die dies mit Bildern macht: Der Bildbereich von Kaleidoscope klingt nach dem, was Sie wollen.

Welche Methodik wird für beide verwendet, und hat sie sich als gute Methodik erwiesen?
In beiden Fällen wird nur die Differenz zwischen überlagerten Pixeln subtrahiert, um zu visualisieren, wo die Änderungen liegen. Es hat sich bewährt, dass es gut funktioniert, ja, aber ob Sie damit die Informationen erhalten, die Sie benötigen, liegt bei Ihnen. Ich bezweifle, dass es das tut, was Sie wollen, da Benutzer28116 in den Kommentaren zu der Frage erwähnt hat, dass jede Änderung am Bild dazu führt, dass es im Differenzmischmodus erscheint.
@DanWolfgang: Kleine Unterschiede werden als dunkle Grauwerte angezeigt, die leicht zu interpretieren sind. Wenn Sie beispielsweise zwei identische Bildebenen nehmen, in den Lab-Farbmodus konvertieren und für alle Pixel in einer Ebene 1 zum L-Kanal hinzufügen, erhalten Sie eine solide, sehr dunkelgraue Ausgabe. Das ist das eigentliche Problem mit der Differenztechnik: Ihr Monitor ist wahrscheinlich so eingestellt, dass Sie den Unterschied zwischen 99 % Schwarz und 100 % Schwarz nicht erkennen können. Es wird nur schwarz aussehen. Ich lege dabei eine Ebenen- oder Kurven-Einstellungsebene darüber, um den Kontrast zu erhöhen.

Was Sie brauchen, ist ein Bildähnlichkeitsmaß.

Dieses Papier befasst sich damit, aber Sie müssen es selbst implementieren. Ich weiß nicht, ob ihre Ergebnisse korrekt sind, da ich die verwendeten Bilder nicht sehen kann.

Dieses Hinter-Paywall-Papier befasst sich auch damit, indem ich eine Technik verwende, die ich zuvor verwendet habe und die als NCD (Normalized Compression Distance) bezeichnet wird. Die Ausgabe einer solchen Messung ist ein Wert zwischen 0 und 1, wobei 0 anzeigt, dass beide Bilder identisch sind (ok, ich habe nie gesehen, dass es 0 ist, selbst für identische Dateien, aber Werte sehr nahe an 0).

Meine Lektüre des FCD-Papiers besagt, dass es nur zum Erkennen von Bildern geeignet ist, die entweder identisch sind oder sich nur in Teilen des Bildes unterscheiden. Ich glaube, wenn Sie ein Bild aufnehmen, es in den HSL-Farbraum konvertieren und allen L-Komponenten 1 hinzufügen, wodurch es nur ein bisschen heller wird, erhalten Sie vom FCD-Algorithmus eine Ausgabe von 1, was bedeutet, dass sie völlig unterschiedlich sind . Ich glaube nicht, dass der OP das will.

Was ist mit der Berechnung der Korrelation der Bilder? Dies ist eine bewährte Methode, um die Unterschiede zwischen Bildern zu finden, und Sie erhalten eine nützliche Zahl, mit der Sie den Unterschied quantifizieren können.

Ich bin mir sicher, dass es viele kostenlose Programme gibt, die Korrelationen durchführen können.

Könnten Sie bitte die Methode näher erläutern? (können Links zu Referenzen sein). Danke
Ich habe aus einem kostenlosen Buch auf dspguide.com davon erfahren
Sie nehmen einfach ein paar kleine Bereiche aus beiden Bildern und richten diese kleinen Bereiche separat aus, indem Sie die Korrelation zwischen ihnen maximieren. Sie sehen dann, ob die separaten Ausrichtungen mit einer einzigen globalen Ausrichtungstransformation kompatibel sind (z. B. wenn Sie zwei der Bereiche übereinander verschieben, prüfen Sie, ob die anderen Bereiche durch eine einzige Drehung um die beiden, die Sie angelegt haben, ausgerichtet werden können oben). Wenn dies funktioniert, können Sie die Korrelationen zwischen Teilen des Bildes überprüfen, die einander entsprechen sollten. Anschließend betrachten Sie die Korrelation zwischen vielen solchen zufällig ausgewählten Bereichen.
Die Größe der Bereiche sollte recht klein gewählt werden, damit die Helligkeitsschwankungen hauptsächlich auf die Art und Weise zurückzuführen sind, wie die Kamera das Bild verarbeitet. Sie möchten nicht, dass eine Korrelation, die Sie jetzt finden, von der Ähnlichkeit des abgebildeten physischen Objekts dominiert wird.