MySQLハミング距離は2つのフィッシュです
-
21-12-2019 - |
質問
列 'template_phash'を持つテーブルAを持っています。400K画像から生成されたフィッシュを保存します。
今私はランダムな画像を取り、その画像からフィッシュを生成します。
今度は、どのハミング距離差が閾値よりも小さいテーブルAからのレコードを取得できるように照会するか、20。
私は SQL のバイナリ文字列のハミング距離しかしそれを理解することができませんでした。
私はこれを達成するための機能を作る必要があることを考え出したと思いますか?
私のフィッシュの両方はBigIntにあります:7641692061273169067
のように照会できるように機能を作るのを手伝ってください
SELECT product_id, HAMMING_DISTANCE(phash1, phash2) as hd
FROM A
WHERE hd < 20 ORDER BY hd ASC;
. 解決
ハミング距離は、2つのハッシュ間の異なるビットの数だけであることを考え出した。最初のXOR 2つのハッシュはバイナリのカウントを取得します:
SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;
. 所属していません StackOverflow