两个phash之间的mysql汉明距离

时间:2014-01-10 06:28:24

标签: mysql hamming-distance

我有一张表A,其中有一列'template_phash'。我存储了400K图像生成的phash。

现在我拍摄一张随机图像并从该图像中生成一个镜头。

现在我如何查询以便我可以从表A中获取汉明距离差小于阈值的记录,比如20。

我见过Hamming distance on binary strings in SQL,但无法理解。

我想我发现我需要制作一个功能来实现这个目标,但是如何?

我的两个镜头都在BigInt中,例如:7641692061273169067

请帮我制作这个功能,以便我可以查询

SELECT product_id, HAMMING_DISTANCE(phash1,  phash2) as hd 
FROM A 
WHERE hd < 20 ORDER BY hd ASC;

1 个答案:

答案 0 :(得分:22)

我发现汉明距离只是两个哈希值之间不同位的计数。首先,两个哈希值得到二进制值的计数:

SELECT product_id, BIT_COUNT(phash1 ^ phash2) as hd from A ORDER BY hd ASC;