我正在使用ORB来比较两个图像中的特征,以找出它们之间的相似性。
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1,des2)
distance=maches[i].distance
有没有办法找到阈值距离来评论功能的相似程度? 我检查距离是否< threshold_distance然后功能类似于其他功能。
答案 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);