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?

mes deux phash sont dans Bigint, par exemple: 7641692061273169067

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;

Était-ce utile?

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;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top