Trouver des images similaires dans (pur) PHP / MySQL

Mes utilisateurs sont des images de chargement de mon site et je voudrais tout d'abord leur offrir déjà téléchargé les images de la première. Mon idée est de
1. créer une sorte d'image "hash" de chaque image existante
2. créer une table de hachage de récemment téléchargé l'image et de la comparer avec les autres dans la base de données

j'ai trouvé quelques solutions intéressantes comme http://www.pureftpd.org/project/libpuzzle ou ou http://phash.org/ etc. mais ils ont eu un ou plusieurs problèmes

  1. ils ont besoin de certains non standard extension de PHP (ou ne sont pas en PHP) - il serait OK pour moi, mais je voudrais créer un plugin pour mon CMS populaires, qui est utilisé sur de nombreux environnements d'hébergement sans mon contrôle.
  2. ils sont de la comparaison de deux images, mais j'ai besoin de comparer un à plusieurs (par exemple, des milliers) et de le faire un par un serait très uneffective /lent ...
    ...

Je serais OK pour ne trouver que TRÈS similaire images (si par exemple la taille différente, réenregistré jpg ou différents jpg facteur de compression).

La seule idée que j'ai est pour redimensionner l'image, par exemple de 5px*5px* 256 couleurs, créer une représentation de chaîne, et puis de trouver la même. Mais je suppose que ça peut avoir de créer de petites différences dans les couleurs, même avec seulement deux mêmes images avec différentes tailles, afin de trouver juste le 100 % même serait inutile.

J'ai donc besoin d'un peu de bon format de cette chaîne de la représentation de l'image qui peut être utilisée avec la fonction SQL pour trouver similaire, ou d'une autre belle façon. E. g. phash créer validation de hachages, de sorte que lorsque les deux nombres sont proches, les images doivent être proches, donc j'ai juste besoin de trouver le plus proche distances. Mais c'est encore une bibliothèque externe.

Est-il un moyen facile?

  • votre idée n'était pas mauvaise, et 256 couleurs ne vous donnera pas de "petites différences". Si oui, à diminuer le nombre. Une autre question importante: votre image de hachage doit être bien assez à faire avec la petite image de la rotation.
  • Une idée que j'ai juste eu à propos de la manipulation de l'image rotations dans la table de hachage est de diviser la valeur de hachage en quatre parts égales de la taille des pièces et de faire pivoter l'image, de sorte que celui avec la plus petite valeur moyenne sur le bas à gauche.
  • pHash n'est pas "comparer deux images". Il calcule une valeur de hachage pour chaque image avec l'idée que les mêmes images ont les mêmes valeurs de hachage. Vous pouvez ensuite utiliser des structures de données pour stocker votre image hachages et efficacement look pour le hachage (par exemple, des images) similaire à la valeur de hachage de l'image téléchargée.