2009-03-27 13 views
14

Nun, ich habe jetzt eine grundlegende verlustfreie jpeg Joiner-Sache in Java geschrieben, aber ich würde gerne die Dateien, die es produziert, mit den Originaldateien vergleichen.Ein einfacher Weg (Werkzeug?), Bilder Pixel für Pixel in verschiedenen Formaten zu vergleichen?

Ich kann nur so viel in einem Hex-Editor vergleichen, jemand kennt einen einfachen Weg, Software oder Java basiert (vorzugsweise Software wie ich nicht mehr für jetzt coding!), Dass ich zwei Bilder vergleichen und produzieren kann eine "Differenzkarte", wo die Pixel nicht gleich sind?

Danke.

Antwort

14

Danke für die Vorschläge.

Ich habe zuerst den Gimp-Ansatz versucht, der gut funktioniert, außer wenn der Unterschied zwischen den Bildern sehr klein ist. Ich konnte keine "Unterschiede verbessern" -Option finden, um die Unterschiede sichtbar zu machen, und das Histogramm gibt auch nur eine grobe Darstellung der Unterschiede.

Am Ende habe ich ImageMagick etwas verwendet, das ich vor einiger Zeit installiert hatte und alles vergessen habe. Das Erstellen eines Differenz-/Vergleichsbilds ist so einfach wie das Eintippen:

in der Befehlszeile.

Es ist alles erklärt schön here.

1

Verwenden Sie einen Bildbearbeitungsprogramm wie Photoshop oder Gimp oder was auch immer, die mehrere Ebenen hat. Erstellen Sie ein Bild, bei dem jedes Quellbild in einer separaten Ebene angezeigt wird.

An dieser Stelle können Sie die Bilder visuell vergleichen, indem Sie die Sichtbarkeit der obersten Ebene ein- und ausschalten.

In den meisten anständigen Editoren können Sie die oberste Ebene auch auf den "Differenz" -Modus einstellen. Jetzt ist der Wert jedes Bildpixels die absolute Differenz der Pixelwerte in den darunter liegenden Bildern. Sie können z.B. ein Histogramm-Tool, um zu sehen, ob die Bilder identisch sind. Wenn sie identisch sind, werden alle Pixelwerte genau 0 sein.

1

Für solche Sachen liebe ich die netpbm/pbmplus Toolkit. Sie können djpeg und pnmtoplainpnm verwenden, um jedes Bild in ein einfaches ASCII-Format zu konvertieren. Sie lesen dann beide Dateien und geben ein neues Bild aus, das anzeigt, wo sich die Pixel unterscheiden. Sie könnten zum Beispiel den euklidischen Abstand im RGB-Raum zwischen alten und neuen Pixeln berechnen und ein weißes Pixel für Null-Differenz ausgeben, hellgrau für eine kleine Differenz, dunkler für größere Unterschiede und so weiter. Das ASCII-Format ist einfach und auf den man-Seiten gut dokumentiert, und alle Standard-Viewer-Programme können es direkt anzeigen.

4

Sie könnten viel schlechter als Perceptual Diff tun.

+0

Das sieht sehr gut aus, aber es ist wahrscheinlich viel mehr als das, was ich tun muss. Ich möchte nur Bilder Pixel für Pixel vergleichen und die genauen Unterschiede sehen. Dies ist um zu überprüfen, wie gut meine "verlustfreie" JPEG-Bearbeitung funktioniert. – joinJpegs

+0

Ich hätte ein wenig mehr geklärt werden sollen: Sie * können * ein Flag angeben, das ein Bild mit den Differenzen pro Pixel mit PDiff ausgibt. Der einzige Nachteil ist, dass es in einem seltsamen Format (PPM) ist :) –

+0

Java-Port von Hector Yee's Perceptual Diff-Tool kann. Png Differenzbild erzeugen: [bitbucket.org/joebowbeer/perceptualdiff](https://bitbucket.org/joebowbeer/wahrnehmungsdiff) –

5

TortoiseIDiff ist ein Betrachter frei Bild diff:

http://tortoisesvn.tigris.org/TortoiseIDiff.html

Es ist ein Teil von TortoiseSVN, kann aber ohne Subversion eingesetzt werden.

Je nach Projekt sind nicht alle Dateien, die sich in der Version befinden, Textdateien. Höchstwahrscheinlich haben Sie auch Bilder, für Beispiel Screenshots und Diagramme für die Dokumentation/Hilfedatei.

Für diese Dateien ist es nicht möglich, ein gemeinsames Datei-Diff-Tool zu verwenden, , weil sie nur mit Textdateien und diff Zeile für Zeile arbeiten. Hier ist wo das Tortoise Image Diff Tool (TortoiseIDiff) zur Rettung kommt. Es kann zwei Bilder nebeneinander zeigen, oder sogar die Bilder über einander Alpha-Blended zeigen.

2

Der beste Ansatz wäre, Pix für Windows zu verwenden (kommt mit dem DirectX SDK). Unterstützt Bitmap, PNG und Jpeg ... Viel Spaß!

0

Es gibt auch eine bequeme web app called Resemble.js, die Bilder Pixel für Pixel analysiert und vergleicht. Die verschiedenen Pixel in den Bildern (falls vorhanden) werden je nach Vorliebe mit rosa oder gelben Farben hervorgehoben.