基本上我有:
BruteForceMatcher<L2<float>>().knnMatch(descriptor1,descriptor2,matches,2);
为了只获得好的匹配,我解析所有“匹配”向量并检查距离,如下所示:
if( (matches[i][0].distance / matches[i][1].distance) < ratio ){
//> Good match!
}
但是什么matches[i][0].distance
意思?和之间的距离matches[i][0]
?
我的假设
对于我的猜测,计算第一个匹配与它的 NN 之间的欧几里距离,并用阈值过滤它对我来说听起来更合乎逻辑,例如:
//> I calculate the distance between 2 nearest neighborhood and filter it based on thresold
foreach( matches : i) {
if ( euclianDistance( matches[i][0] , matches[i][1] ) < threshold ) {
//> good match
}
}