1

目前我正在检查重复的图像,所以我正在使用 ORB,第一部分几乎完成,我有两个图像的描述符向量,现在作为第二部分我想知道我们如何使用汉明计算分数距离,以及说这些是重复的阈值应该是多少

    img1 = gray_image15
    img2 = gray_image25
    # Initiate STAR detector
    orb = cv2.ORB_create() 
    # find the keypoints with ORB
    kp1 = orb.detect(img1,None)
    kp2 = orb.detect(img2,None)
    # compute the descriptors with ORB
    kp1, des1 = orb.compute(img1, kp1)
    kp2, des2 = orb.compute(img2, kp2)

    matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
    matches = matcher.match(des1, des2)
    # Sort them in the order of their distance.
    matches = sorted(matches, key = lambda x:x.distance)

我只想知道这个过程的下一步,以便最终我可以打印重复项的是或否。我在 python 2.7 中使用 opencv3.0.0

4

1 回答 1

2
  • 一旦获得描述符,就可以使用词袋模型对参考图像的描述符进行聚类,即构建词汇表(视觉词)。
  • 然后将另一个图像的描述符投射到这个词汇表上。
  • 然后你可以得到一个直方图,显示两个图像中每个视觉词的分布。
  • 使用直方图比较技术比较这两个直方图,并使用阈值来检测重复项。例如,如果您使用 Bhattacharyya 距离,则低值意味着匹配良好。

我没有这个的 python 实现,但你可以在 c++ here中找到类似的东西。

于 2016-01-28T11:11:09.597 回答