我试图匹配使用狗blob检测得到的补丁。我已经通过Jan Solem的书了解了有关python的计算机视觉,我发现:
def match(desc1,desc2,threshold=0.5):
n = len(desc1[0])
d = -ones((len(desc1),len(desc2)))
for i in range(len(desc1)):
for j in range(len(desc2)):
d1 = (desc1[i] - mean(desc1[i])) / std(desc1[i])
d2 = (desc2[j] - mean(desc2[j])) / std(desc2[j])
ncc_value = sum(d1 * d2) / (n-1)
if ncc_value > threshold:
d[i,j] = ncc_value
ndx = argsort(-d)
matchscores = ndx[:,0]
return matchscores
如果你使用哈里斯角点检测很有用,但我的功能引发了一个ValueError:操作数无法与形状(81,)(0,)一起广播。
我怎样才能为不同的blob检测器实现一个有效的代码,它可以做与此相同的事情(使用负交叉相关计算距离)?