Ich versuche die Ähnlichkeit (lies: Levenshtein distance ) von zwei Bildern mit Python 2.6 und PIL zu berechnen.
Ich plane uns e die python-levenshtein Bibliothek zum schnellen Vergleich.
Hauptfrage:
Was ist eine gute Strategie zum Vergleichen von Bildern? Meine Idee ist etwas wie:
Natürlich werden Fälle wie gespiegelte Bilder, beschnittene Bilder usw. nicht behandelt. Für einen grundlegenden Vergleich sollte dies jedoch nützlich sein.
Gibt es irgendwo eine bessere Strategie?
BEARBEITEN: Aaron H hat recht, was die Geschwindigkeit angeht. Die Berechnung von Levelshtein dauert für Bilder, die um einige hundert Pixel größer als ein paar Hundert sind, ewig. Allerdings ist der Unterschied zwischen den Ergebnissen nach dem Herunterskalieren auf 100x100 und 200x200 in meinem Beispiel weniger als 1%, so dass es sinnvoll sein könnte, eine maximale Bildgröße von ~ 100px oder so einzurichten ...
BEARBEITEN: Danke PreludeAndFugue, nach dieser Frage habe ich gesucht.
By the way, Levenshtein Abstand kann optimiert werden, wie es scheint, aber es gibt mir einige wirklich schlechte Ergebnisse, vielleicht wegen der vielen redundanten Elemente in den Hintergründen. Ich muss mir andere Algorithmen ansehen.
EIDT: Die mittlere quadratische Abweichung und das Signal-Rausch-Verhältnis scheinen zwei weitere Optionen zu sein, die nicht sehr schwer zu implementieren sind und scheinbar nicht sehr CPU-teuer sind. Es scheint jedoch, dass ich eine Art Kontextanalyse für die Erkennung von Formen usw. brauche.
Wie auch immer, danke für alle Links und auch für die Richtung auf NumPy / SciPy.
Sie können sich die stsci Bibliothek ansehen, die zum Vergleichen und Analysieren von Bildern verwendet wird. Es sollte Ihnen geben, was Sie wollen, aber vielleicht ein wenig übertrieben.
Wenn Sie es einfach halten möchten, können Sie zunächst die Anzahl der Farben und die Auflösung verringern und dann die Entfernung berechnen.
Sehen Sie sich imgSeek an:
imgSeek ist eine Sammlung freier Open-Source-visueller Ähnlichkeit Projekte. Die Suchanfrage (Bild, nach der Sie suchen) kann ausgedrückt werden Entweder als grobe Skizze, gemalt vom Benutzer oder als ein anderes Bild Versorgung (oder ein Bild in Ihrer Sammlung). Der Suchalgorithmus macht Verwendung der Multiresolution-Wavelet-Zerlegung der Abfrage und der Datenbank Bilder.
Tags und Links python python-imaging-library fuzzy-logic fuzzy-comparison