计算使用ORB计算的匹配之间的阈值距离

时间:2016-01-19 07:07:31

标签: python opencv computer-vision threshold orb

我正在使用ORB来比较两个图像中的特征,以找出它们之间的相似性。 bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) matches = bf.match(des1,des2) distance=maches[i].distance

有没有办法找到阈值距离来评论功能的相似程度? 我检查距离是否< threshold_distance然后功能类似于其他功能。

2 个答案:

答案 0 :(得分:1)

为此目的使用单一阈值通常不那么强大。

更好的方法是找到最短距离(d1)和第二个最短距离(d2),然后使用比率。

r=d1/d2

您希望此r小于适合您的方案的阈值。

此外,您可能希望使用全局阈值来限制有效距离,以消除垃圾匹配。

答案 1 :(得分:0)

可能会对你有帮助,

double max_dist = 0; double min_dist = 100;
for( int i = 0; i < dest1.rows; i++)
{
    double dist = matches12[i].distance;
    if(dist < min_dist)
        min_dist = dist;
    if(dist > max_dist)
        max_dist = dist;
}
printf("-- Max dist : %f \n", max_dist);
printf("-- Min dist : %f \n", min_dist);