[PYTHON] Est-il possible de détecter des images similaires uniquement avec ImageHash?

introduction

ImageHash a une distance de bourdonnement de ** 0 ** pour la même image et de ** 1-10 ** pour des images potentiellement similaires. Reconfirmez si des images similaires ne peuvent être détectées qu'avec ImageHash.

Code source

Hash utilise dhush.

référence: https://tech.unifa-e.com/entry/2017/11/27/111546

sample.py


import imagehash
from PIL import Image

hash1 = imagehash.dhash(Image.open('./images/001.png'))
hash2 = imagehash.dhash(Image.open('./images/002.png'))
hash3 = imagehash.dhash(Image.open('./images/003.png'))

print(hash1, hash2, hash3)

print('001.png:002.png - {}'.format(hash1 - hash2))
print('001.png:003.png - {}'.format(hash1 - hash3))
print('002.png:003.png - {}'.format(hash2 - hash3))

Image utilisée

Les images suivantes sont utilisées dans ce programme. 002.png et 003.png choisissent des images similaires, 001.png a une pose différente, mais la composition avec le personnage au centre est la même.

1 2 3
001.png 002.png 003.png
001.png 002.png 003.png

Résultat d'exécution

Les distances de bourdonnement de 001.png et des autres images sont respectivement de 16 et 12, qui sont très différentes. La distance de fredonnement est de 8 pour 002.png et 003.png. Normalement, "1 à 10" sont des images potentiellement similaires, mais comme ce sont des images complètement différentes, on peut dire qu'il s'agit d'un faux positif. Comme mentionné dans Publié l'autre jour, on peut dire qu'il est difficile de juger des images similaires uniquement avec le hachage d'image.

3868e0f870706979 a269e8e8f0f4f070 b860e0e8f1f0f070
001.png:002.png - 16
001.png:003.png - 12
002.png:003.png - 8

Recommended Posts

Est-il possible de détecter des images similaires uniquement avec ImageHash?
Après tout, il est faux de chat avec le sous-processus python.
Activé pour convertir PNG en JPG avec Pillow of Python
Quand il est difficile de copier ce que vous avez construit avec vue
J'ai essayé de savoir si ReDoS est possible avec Python
Est-il possible de se lancer dans une entreprise de pré-cotation et de faire fortune avec des stock-options?
Est-il possible de construire une structure en boucle avec une personne dont le nom de la ville et celui du maire prêtent à confusion?
J'ai essayé de mettre en œuvre un apprentissage en profondeur qui n'est pas profond avec uniquement NumPy
Lorsque vous souhaitez l'utiliser tel quel lorsque vous l'utilisez avec lambda memo
Il est préférable d'utiliser Weight Initializer lors de l'initialisation avec HeNormal avec Chainer
Est-il possible de manger avec la prévision du cours des actions par apprentissage automatique [Machine learning partie 1]
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Est-il possible d'extraire les informations de profil de la personne du journal de discussion?
Je veux détecter des objets avec OpenCV
N'est-il pas recommandé d'utiliser pip directement?
Apprenez à coloriser les images monochromes avec Chainer
python à retenir uniquement avec bonjour, mondes
Ajouter des images à des photos iOS avec Pythonista
Ajouter du bruit gaussien aux images avec python2.7
Télécharger des images sur Google Drive avec Python
Il est plus pratique d'utiliser csv-table lors de l'écriture d'une table avec python-sphinx
[OpenCV] Lorsque vous voulez vérifier s'il est lu correctement avec imread
Est-il possible de manger avec les prévisions de cours de bourse par apprentissage automatique [Plan de mise en œuvre]