J'entends ce terme parfois et je me demande à quoi il sert?
Hashing est une fonction qui s'applique à des données arbitraires et produit les données d'une taille fixe (généralement une très petite taille). Il existe de nombreux types de hachage différents, mais si nous parlons de hachage d'image, il est utilisé pour:
Les images qui nous semblent identiques peuvent être très différentes si vous comparez simplement les octets bruts. Cela peut être dû à:
Même si vous trouverez une image qui sera différente d'un seul octet, si vous lui appliquez une fonction de hachage, le résultat peut être très différent (pour des hachages comme MD5, SHA il le sera très probablement être complètement différent).
Vous avez donc besoin d'une fonction de hachage qui créera un hachage similaire (ou même identique) pour des images similaires. L'un des génériques est hachage sensible à la localité . Mais nous savons quels types de problèmes peuvent être liés aux images, nous pouvons donc trouver un type de hachage plus spécialisé .
Les algorithmes les plus connus sont:
Par ailleurs, si vous utilisez python, tous ces hachages sont déjà implémentés dans cette bibliothèque .
Bien que le hachage normal d'un fichier hache les bits de données individuels du fichier, le hachage d'image fonctionne à un niveau légèrement supérieur. La différence est qu'avec le hachage d'image, si deux images semblent pratiquement identiques mais sont dans un format ou une résolution différents (ou s'il y a une corruption mineure, peut-être en raison de la compression), elles doivent hacher au même nombre. Bien que les bits réels de leurs données soient totalement différents, s'ils semblent identiques à un humain, ils hachent la même chose.
Une application de ceci est la recherche. TinEye.com vous permet de télécharger une image et de trouver bon nombre de ses occurrences sur Internet. comme google, il possède un robot d'exploration qui parcourt les pages Web et recherche des images. Il hache ensuite ces images et stocke le hachage et l'URL dans une base de données. Lorsque vous téléchargez une image, il calcule simplement le hachage et récupère toutes les URL liées à ce hachage dans la base de données. Les exemples d'utilisation de TinEye incluent la recherche de versions d'images à plus haute résolution ou la recherche du facebook/myspace/etc public de quelqu'un. profil de leur image (en supposant que ces profils utilisent la même photo.
Le hachage d'image peut également être utilisé avec la mise en cache ou le stockage local pour empêcher la retransmission d'une photo ou le stockage de doublons, respectivement.
Il existe de nombreuses autres possibilités, notamment l'authentification d'image et la recherche d'images similaires dans une vidéo (comme cela a été mentionné par quelqu'un d'autre).
le hachage en général est un moyen utile de réduire une énorme quantité de données en un nombre court (ish) qui peut être utilisé pour identifier cette image.
Ils sont parfois destinés simplement à fournir un moyen pratique d'identifier un fichier sans l'intervention d'un humain, en particulier en présence de plusieurs auteurs parallèles qui ne peuvent pas être invoqués pour incrémenter un compteur maître (JPG001 JPG002) sans se chevaucher.
Parfois, les hachages sont destinés à être infalsifiables, de sorte que je peux dire - si le hachage d'image que VOUS générez est le même que celui que j'ai fait lorsque je vous ai envoyé l'image, alors vous pouvez être sûr qu'il provient de moi (et n'est pas ajusté par un malfaiteur ). Cependant, tous les hachages ne peuvent pas faire cette garantie, un hachage "cryptographique" populaire a montré toutes les quelques années des défauts fatals.
Dans la pratique, le hachage d'image est populaire pour trouver des images similaires dans une séquence d'images ou de vidéo, ou pour incorporer un filigrane avec diverses images comme le font de nombreux studios de cinéma (presque à l'écoute de Fight Club dans un sens effrayant!).