Python 计算用dog提取的描述符之间的距离
我正在尝试匹配我用狗斑点检测得到的补丁。我阅读了Jan Solem关于python计算机视觉的书,我发现:Python 计算用dog提取的描述符之间的距离,python,image-processing,scikit-image,Python,Image Processing,Scikit Image,我正在尝试匹配我用狗斑点检测得到的补丁。我阅读了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]
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
如果您使用harris角点检测,这很有用,但使用我的功能会引发ValueError:操作数无法与形状81、0一起广播
我如何为不同的blob检测器实现一个有效的代码,该检测器执行与使用负互相关计算距离相同的操作?您的代码格式可能错误,我可以更新它吗?是的,很抱歉,我刚刚注意到标识不正确。我会修好的。但是请注意,如果我使用dog blob detection中的blob,即使使用正确的缩进,它也不起作用。请至少提供一些信息:1什么样的线上升值错误?描述1和描述2是什么?签名和形状,如果它们是numpy.arrayIt似乎你不能写sumd1*d2/n-1。。也许你不能做的是d1*d2:d1是一个81的一维数组,d2是一个零len数组???你必须决定你要做什么:如果lendesc1=lendesc2没有太多的意义来计算这样的互相关,但是您必须选择一个desc1窗口,例如,如果它是较大的窗口,则在窗口上进行计算:您可以移动窗口d以查找最佳互相关。