Algorithmus zum Finden ähnlicher Bilder mit einem Index

8

Es gibt einige überraschend gute Bildvergleichswerkzeuge, die ein ähnliches Bild finden, auch wenn es nicht genau das gleiche ist (z. B. Änderung der Größe, Hintergrundbild, Helligkeit / Kontrast). Ich habe hier einige Beispielanwendungen:

Ich habe nur den ersten versucht, aber alle sind für Windows entwickelt und nicht Open Source. Unique Filer wurde im Jahr 2000 veröffentlicht und die Homepage scheint verschwunden zu sein. Es war überraschend schnell (sogar auf Computern von diesem Jahr), weil es einen Index verwendet und einige 10000 Bilder unter Verwendung des Indexes nur einige wenige Sekunden vergleicht (und die Aktualisierung des Indexes war ein skalierbarer Prozess).

Da dieser Algorithmus in einer sehr effektiven Form bereits seit mindestens 15 Jahren existiert, gehe ich davon aus, dass er gut dokumentiert und möglicherweise bereits als Open-Source-Bibliothek implementiert ist. Weiß jemand mehr darüber, mit welchem ​​Algorithmus oder welcher Bilddetektionstheorie diese Anwendungen implementiert wurden? Vielleicht ist sogar eine Open-Source-Implementierung verfügbar?

Ich habe bereits die Frage Algorithmus zum Finden ähnlicher Bilder überprüft, aber alle Antworten darauf Lösen Sie das Problem, indem Sie ein Bild mit einem anderen vergleichen. Für 1000+ Bilder ergibt dies 1000 ^ 2 Vergleichsoperationen, was genau das ist, wonach ich suche.

    
Daniel Alder 03.08.2014, 14:22
quelle

1 Antwort

2

Das von Ihnen beschriebene Problem wird im Allgemeinen Nächste Nachbarsuche genannt. Da Sie bei großen Datasets nach einer hohen Effizienz fragen, ist Approximiert Suche nach dem nächsten Nachbarn das, wonach Sie suchen.

Eine effiziente Methode dafür ist Locality-Sensitive Hashing (LSH) , für die diese Folien geben einen guten Überblick. Seine Grundidee ist die Verwendung von Hashfunktionen, die alle Daten in einen niedrigdimensionalen Raum projizieren, mit der Einschränkung, dass der Hash ähnlicher Daten mit hoher Wahrscheinlichkeit kollidiert und ungleiche Daten mit geringer Wahrscheinlichkeit kollidieren. Diese Wahrscheinlichkeiten sind Parameter des Algorithmus, mit denen der Kompromiss zwischen Genauigkeit und Effizienz geändert werden kann.

LSHKIT ist eine Open-Source-Implementierung von LSH.

    
Florian von Stosch 17.08.2014 12:11
quelle