Cela dépend entièrement de l'intelligence que vous souhaitez donner à l'algorithme.
Par exemple, voici quelques questions :
- Images recadrées par rapport à une image non recadrée
- images avec un texte ajouté par rapport à une autre sans
- images miroirs
Le plus facile et le plus simple algorithme J'ai vu que pour cela, il suffit de faire les étapes suivantes pour chaque image :
- réduisez l'échelle à quelque chose de petit, comme 64x64 ou 32x32, ne tenez pas compte du rapport d'aspect, utilisez un algorithme de combinaison d'échelle au lieu du pixel le plus proche.
- mettre à l'échelle les gammes de couleurs de façon à ce que la plus sombre soit noire et la plus claire soit blanche.
- faites pivoter et retournez l'image de façon à ce que la couleur la plus claire soit en haut à gauche, puis en haut à droite, puis en bas à gauche (dans la mesure du possible, bien sûr).
Editar A algorithme de mise à l'échelle combinée est une fonction qui, lors de la mise à l'échelle de 10 pixels en un seul, utilise la couleur de ces 10 pixels et les combine en un seul. Cela peut être fait avec des algorithmes comme le calcul de la moyenne, la valeur moyenne ou des algorithmes plus complexes comme les splines bicubiques.
Calculez ensuite la distance moyenne, pixel par pixel, entre les deux images.
Pour rechercher une correspondance possible dans une base de données, stockez les couleurs des pixels sous forme de colonnes individuelles dans la base de données, indexez un certain nombre d'entre elles (mais pas toutes, à moins que vous n'utilisiez une très petite image) et effectuez une requête qui utilise une plage pour chaque valeur de pixel, c'est-à-dire toutes les images où le pixel de la petite image se situe entre -5 et +5 de l'image que vous voulez rechercher.
Cette méthode est facile à mettre en œuvre et assez rapide à exécuter, mais elle ne permet pas de gérer la plupart des différences avancées. Pour cela, vous avez besoin d'algorithmes beaucoup plus avancés.
1 votes
Il y a quelques bonnes réponses dans cette autre question similaire : stackoverflow.com/questions/75891/
1 votes
Et plus encore ici : stackoverflow.com/questions/189943/
1 votes
Il est temps de mettre à jour les réponses à la lumière des récentes avancées dans le domaine de l'apprentissage automatique et plus particulièrement du "Deep Learning".
0 votes
Mon laboratoire devait également résoudre ce problème et a utilisé le processus décrit ici : douglasduhaime.com/posts/