2016-05-05 12 views
0

In einer Django App laden Benutzer verschiedene Fotos hoch und erhalten Upvoted/Downvoted (ähnlich wie 9gag).Vergleichen hochgeladenes Bild mit mehreren, optimiert für Effizienz, nicht Genauigkeit (Python)

Ich möchte eine grundlegende Überprüfung einführen, die verhindert, dass der Benutzer Bilder, die kürzlich auf der Website eingereicht wurden, erneut einreicht.

Ich brauche keine luftdichte Lösung. Wie meine Frage von othersuch Fragen zu SO unterscheidet ist, dass dies nicht nur ein Vergleich von zwei Bildern ist, dies ist ein Fall von Vergleichen eines hochgeladenen Bildes mit, sagen wir, die 200 zuletzt hochgeladenen Bilder (meine willkürliche abgeschnittene) . Leistung nimmt den vorderen Platz ein.

Da ich alle Bilder bereits thumbnail (40px x 40px), werde ich Foto-Thumbnails anstelle von ausgewachsenen Fotos vergleichen. Dies ist vergleichbar mit dem Vergleich von Objekten, die im Downsampling sind, also wird es schneller und mehr fuzzy (was gut ist).

Meine Frage ist: gibt es eine anständige Möglichkeit, Bildhistogramme auf eine eindeutige Zahl (von Basis 10 oder 16, zum Beispiel) zu reduzieren? Wenn dies der Fall ist, kann ich sie in der Datenbank speichern, den Abstand zwischen diesen Werten finden und einen willkürlichen Grenzwert festlegen. Ein anschauliches Beispiel wäre schön. Das klingt in meinem Kopf nach dem schnellsten Weg, meinen Fall zu bearbeiten.

Alternativ, wenn es aus verschiedenen Gründen nicht getan werden kann, ist das eine echte Antwort.

Antwort

1

Sie möchten wahrscheinlich eine Art von Wahrnehmungsbild Hashing verwenden. Ich habe es nicht versucht, aber sieht aus wie https://pypi.python.org/pypi/ImageHash könnte den Trick tun.

+0

Sehr interessant. Danke für die Hilfe. Ich werde es ausprobieren und mit den Profis auf die Nachteile zurückkommen. –

+0

Versuchte es und funktioniert perfekt für meine Bedürfnisse. Ich schrieb meine eigene durchschnittliche Hash-Funktion. –