MySQL Hamming Distance entre deux phashs
-
21-12-2019 - |
Question
J'ai une table A qui a une colonne 'template_phat'.Je stocke le phash généré à partir de 400K images.
Maintenant, je prends une image aléatoire et génère un choc de choc de cette image.
Maintenant, comment puis-je interroger pour que je puisse obtenir le record de la table A qui atteignit la différence de distance de halmographie est inférieure à une valeur seuil, par exemple 20.
J'ai vu Hamming Distance sur les chaînes binaires dans SQL ,mais ne pouvait pas le comprendre.
Je pense que j'ai compris que j'ai besoin de faire une fonction pour y parvenir, mais comment?
Aidez-moi s'il vous plaît faire la fonction afin que je puisse interroger comme
SELECT product_id, HAMMING_DISTANCE(phash1, phash2) as hd
FROM A
WHERE hd < 20 ORDER BY hd ASC;
La solution
J'ai compris que la distance de Hamming n'est que le nombre de bits différents entre les deux hachages.Premier xor Les deux hachages ont ensuite le nombre de binaires:
SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;