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;
.

È stato utile?

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;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top