Dies hängt ganz davon ab, wie intelligent der Algorithmus sein soll.
Hier sind zum Beispiel einige Probleme:
- zugeschnittene Bilder im Vergleich zu einem nicht zugeschnittenen Bild
- Bilder mit einem hinzugefügten Text gegen einen anderen ohne
- gespiegelte Bilder
Der einfachste und einfachste Algorithmus, den ich dafür gesehen habe, besteht darin, die folgenden Schritte für jedes Bild auszuführen:
- Skalieren Sie auf etwas Kleines, wie 64x64 oder 32x32, ignorieren Sie das Seitenverhältnis, verwenden Sie einen kombinierten Skalierungsalgorithmus anstelle des nächsten Pixels
- Skalieren Sie die Farbbereiche so, dass der dunkelste schwarz und der hellste weiß ist
- Drehen und drehen Sie das Bild so, dass die hellste Farbe oben links und dann oben rechts als nächstes dunkler und unten links als nächstes dunkler ist (so weit wie möglich natürlich).
Bearbeiten Ein kombinierter Skalierungsalgorithmus ist ein Algorithmus , der beim Skalieren von 10 Pixeln auf eins eine Funktion verwendet, die die Farbe all dieser 10 Pixel übernimmt und sie zu einem kombiniert. Kann mit Algorithmen wie Mittelwertbildung, Mittelwert oder komplexeren Algorithmen wie bikubischen Splines durchgeführt werden.
Berechnen Sie dann den mittleren Abstand Pixel für Pixel zwischen den beiden Bildern.
Um eine mögliche Übereinstimmung in einer Datenbank nachzuschlagen, speichern Sie die Pixelfarben als einzelne Spalten in der Datenbank, indizieren Sie eine Reihe von Spalten (aber nicht alle, es sei denn, Sie verwenden ein sehr kleines Bild) und führen Sie eine Abfrage durch, die jeweils einen Bereich verwendet Pixelwert, dh. Jedes Bild, bei dem das Pixel im kleinen Bild zwischen -5 und +5 des Bildes liegt, das Sie nachschlagen möchten.
Dies ist einfach zu implementieren und relativ schnell auszuführen, wird aber natürlich die meisten fortgeschrittenen Unterschiede nicht bewältigen. Dafür benötigen Sie viel fortgeschrittenere Algorithmen.