Mysql Hamming расстояние между двумя фашными
-
21-12-2019 - |
Вопрос
У меня есть стол, который имеет столбец «Template_Phash».Я храним Phash, сгенерированный с 400K изображений.
Теперь я беру случайное изображение и генерирую фаш из этого изображения.
Теперь, как я могу запрашивать так, чтобы я мог получить запись из таблицы A, какую разницу расстояния Hamming меньше порогового значения, скажем, 20.Я видел Расстояние гамма на двоичных строках в SQL ,Но не мог понять это.
Я думаю, что я понял, что мне нужно сделать функцию для достижения этого, но как?
Оба моей фашины в Bigint, например: 76416920612731692061273169067
Пожалуйста, помогите мне сделать функцию, чтобы я мог запрашивать, как
SELECT product_id, HAMMING_DISTANCE(phash1, phash2) as hd
FROM A
WHERE hd < 20 ORDER BY hd ASC;
. Решение
Я выяснил, что расстояние Hamming - это только подсчет различных битов между двумя хэшими.Сначала XOR два хэши тогда получают количество двоичных:
SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;
. Не связан с StackOverflow