2010-09-25 4 views
1

J'ai besoin de comparer deux images aussi vite que possible. Je n'ai pas besoin de connaître les différences ou quoi que ce soit d'autre que j'ai besoin de savoir s'ils sont identiques, oui/non, génial. Quel est le moyen le plus rapide de le faire?Le moyen le plus rapide de comparer deux images

Merci, R.

+0

Quel type d'images? Que voulez-vous dire par s'ils "sont les mêmes"? Si elles sont identiques octet par octet? Ou ils "regardent la même chose" à un humain (en supposant que vous voulez dire une image comme .png ou .jpg)? – NullUserException

+0

Sont-ils de même format et taille? Sont-ils différents formats avec différents schémas de compression? Lossy ou pas? – JoshD

+0

duplicata possible de [Quel est le moyen le plus rapide que je peux comparer deux bitmaps de taille égale pour déterminer si elles sont identiques?] (Http://stackoverflow.com/questions/2031217/what-is-the-fastest-way-i -can-compare-two-size-bitmaps-equal-size-to-determine-whethe) –

Répondre

1

Si elles devraient être les mêmes, octet par bye comme @NullUserException mentionné, la solution la plus simple est d'utiliser un hachage comme Md5. Si vous souhaitez obtenir plus de détails, vous pouvez obtenir les valeurs RVB de chaque pixel de la première image et calculer la distance euclidienne à partir des pixels de la seconde image pour voir si elle est inférieure à un certain seuil. Tout le reste n'est pas rapide :)

+1

ne comparerait pas chaque octet de fichier par octet jusqu'à ce qu'une différence soit trouvée beaucoup plus rapide que le calcul d'une somme de contrôle md5 pour les deux? – JoshD

+0

@JoshD: il serait certainement beaucoup plus rapide pour les images qui diffèrent et simplement beaucoup plus rapide pour les images qui sont les mêmes. –

+1

Si vous comparez un fichier à un autre, il n'y a aucun avantage à utiliser un hachage. Toutefois, si vous comparez une image à plusieurs, le temps passé à calculer le hachage est amorti sur les comparaisons multiples des valeurs de hachage. La comparaison des hachages est plusieurs fois plus rapide que la comparaison des octets pour les octets car les hachages sont très petits par rapport aux données d'origine. Si vous essayez de déterminer si une nouvelle image est déjà dans une grande collection d'images, calculez le hachage une fois et comparez plusieurs fois (stockez le hachage de chaque image lorsqu'elle est insérée dans la collection, donc c'est bon marché et facile à obtenir) . – dthorpe

Questions connexes