0

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

有没有办法找到阈值距离来评论特征的相似程度?我检查距离是否 < threshold_distance 则特征相似,否则不相似。

4

2 回答 2

1

为此目的使用单个阈值通常不是那么稳健。

更好的方法是找到最短距离 (d1) 和次短距离 (d2),并使用比率。

r=d1/d2

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

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

于 2016-01-20T10:23:50.910 回答
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);
于 2016-01-20T12:13:10.540 回答