计算快速汉明距离

汉明距离,作为一种衡量特征距离的计算方法,在很多场合都有应用,其主要思想是找到两个特征之间的差异大小,也可以说是相似性。

我是在图像处理中用到的,项目中需要计算图像梯度方向,我选择了四个方向,这样就可以用二位二进制表示,分别为 0,1,2,3,也就是 00,01,10,11,这四种情况。这样,我就可以可以把,例如四个临近点,对应梯度特征合并为一个特征向量,如图


只需要一个字节的大小空间就可以表示一个特征。那么,我来用这个特征描述两张图, 假设A,B,就得到了两个特征,featureA,featureB,在假设图像大小为100*100的8bit灰度图像,选择水平方向的四个像素,那么我就可以得到 100*25个单字节的描述特征。接下来,我要怎么衡量这两张图是不是相似,就要用到汉明距离(其他距离也可以,这里直说汉明距离)。如果两个图像在这种特征下是相似的,那意味着他们特征的对应比特位应该是尽可能多的一致,也就是说,featureA ^ featureB ,特征的异或结果中1 的个数尽可能的少。这就涉及到,我们如何计算1的个数。这在leetcode和剑指offer等书中都有类似笔试面试题。

常规解法就是移位判断是不是1,是则计数,需要注意,应该要判断给定数(这里用tmp表示)的符号,否则可能死循环。

 
 

你可能感兴趣的:(算法,算法,汉明距离)