Frage

Ich habe viele Dateien desselben Bildes in verschiedenen Auflösungen, die für alle Geräte wie Mobilgeräte, PCs, PSP usw. geeignet sind.Jetzt versuche ich, nur einzigartige Bilder auf der Seite anzuzeigen, weiß aber nicht, wie das geht.Ich hätte das vermeiden können, wenn ich überhaupt eine Datenbank gepflegt hätte, aber das habe ich nicht getan.Und ich brauche Ihre Hilfe beim Erkennen der größten einzigartigen Bilder.

War es hilfreich?

Lösung

Nun, auch du es gibt durchaus ein paar Algorithmen, das zu tun, ich glaube es noch schneller wäre, dass manuell zu tun. Laden Sie alle Bilder füttern sie in so etwas wie Windows Live Fotogalerie oder jede andere Software, die ähnliche Bilder entsprechen könnte. Dadurch werden Sie einige Stunden dauern, aber die Bild Matching-Algorithmus Implementierung könnte weit mehr nehmen. Danach können Sie zusätzliche Zeit verbringen könnten Ihr aktuelles System zu speichern alles in einem DB über die Änderung. Fix Ursache des Problems, nicht die Symptome.

Andere Tipps

Installieren GD2 und lib Puzzle in Ihrem Server.

Lib Puzzle ist erstaunlich und einfach mit ihm zu spielen. Sehen Sie sich diese Schnipsel

<?php
# Compute signatures for two images
$cvec1 = puzzle_fill_cvec_from_file('img1.jpg');
$cvec2 = puzzle_fill_cvec_from_file('img2.jpg');

# Compute the distance between both signatures
$d = puzzle_vector_normalized_distance($cvec1, $cvec2);

# Are pictures similar?
if ($d < PUZZLE_CVEC_SIMILARITY_LOWER_THRESHOLD) {
  echo "Pictures are looking similar\n";
} else {
  echo "Pictures are different, distance=$d\n";
}

# Compress the signatures for database storage
$compress_cvec1 = puzzle_compress_cvec($cvec1);
$compress_cvec2 = puzzle_compress_cvec($cvec2);

Erstens Ihr Problem hat kaum etwas mit PHP zu tun, so dass ich, dass Tag und hinzugefügt mehr relevanten Tags entfernt habe.


Smartly tun es nicht NxN comparisions erfordern. Sie können viele Heuristiken verwenden, aber zuerst möchte Ich mag Sie fragen:

  1. Sind alle Kopien eines Bildes genau Resize voneinander? (Wird einige Zuschneiden getan - passende beschnittene Bilder zum Original schwieriger und zeitaufwendig sein könnte)

  2. Sind alle generierte Bilder (Größe angepasst) mit demselben Werkzeug?

  3. Was Parameter haben Sie verwendet, um die Größe? So sind zum Beispiel alle Bilder in der gleichen Auflösung auf PSP angezeigt wird?

  4. Was ist Ihre Schätzung, wie viele einzigartige Bilder, die Sie haben (das heißt, wie viele Kopien von jedem Bild könnte es sein - im Durchschnitt)?

  5. Haben Sie irgendeine Art von Kategorisierung haben bereits getan. Zum Beispiel sind alle mobilen Bilder in separaten Ordnern (oder unterschiedlicher Auflösung als der PC-Images)? Dies allein könnte die Zahl der Vergleiche ein Los reduzieren, auch wenn Sie sonst brutale Gewalt zu tun.

Ein sehr obersten Ebene Hinweis auf, warum Sie NxN comparisions nicht benötigen: Sie können viele verschiedene ungefähre Hashes entwickeln (zum Beispiel die Verteilung von hohen / niedrigen Frequenz jpeg-Koeffizienten) und der Gruppe „potentiell“ ähnlichen Bildern zusammen. Dies kann die Anzahl von comparisions erforderlich um 10-100 Zeiten reduzieren oder sogar mehr abhängig von der Qualität der Heuristik verwendet, und dem Datensatz. Die Hashing kann sogar auf Teile der Bilder erfolgen. 30000 ist nicht eine sehr große Zahl, wenn Sie mit der rechten Techniken verwenden.

Sie sollten prüfen, welches der beiden Bilder das kleinste ist, dessen Größe ermitteln und dann nur die Pixel innerhalb der Rechteckgröße vergleichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top