MySQL Distanza di hamming tra due Phash
-
21-12-2019 - |
Domanda
Ho una tabella A che ha una colonna 'Template_phash'.Congollo il Phash generato da 400k immagini.
Ora prendo un'immagine casuale e genera una phash da quell'immagine.
Ora come posso interrogare in modo da poter ottenere il record dalla tabella A quale differenza di distanza di hamming è inferiore a un valore di soglia, dicono 20.
Ho visto Distanza di hamming su stringhe binarie in SQL ,Ma non potevo capirlo.
Penso di aver capito che ho bisogno di fare una funzione per ottenere questo, ma come?
Entrambe le mie Phash sono in Bigint, ad esempio: 7641692061273169067
Aiutami a rendere la funzione in modo da poter richiedere
SELECT product_id, HAMMING_DISTANCE(phash1, phash2) as hd
FROM A
WHERE hd < 20 ORDER BY hd ASC;
. Soluzione
Ho capito che la distanza di hamming è solo il conteggio dei bit diversi tra i due hash.Prima Xor I due hashes quindi prendi il conteggio dei binari:
SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;
.