【问题标题】:How can we use both Hamming distance and distance between coordinates to match features?我们如何同时使用汉明距离和坐标之间的距离来匹配特征?
【发布时间】:2015-07-08 12:47:39
【问题描述】:

众所周知,对于在 OpenCV 中跟踪对象,我们可以使用:

对于匹配特征DescriptorMatcher 使用汉明距离(相同大小的两个序列之间的差异值,而不是坐标之间的距离)。

即我们在当前帧中找到最相似的对象,但不是最接近前一个位置的对象(如果我们知道的话)。

我们如何使用来匹配汉明距离和坐标之间的距离,例如,给定两者的权重,而不仅仅是汉明距离?

可以解决以下问题:

  • 如果我们从前一帧的位置 (x,y) 开始跟踪对象,并且当前帧包含两个相似的对象,那么我们会找到最相似的,但不是最近的。但由于惯性,坐标的变化通常比相似度慢(光线的急剧变化或物体的旋转)。我们必须找到坐标最近的相似物体。

  • 因此我们找到了特征,它们不仅最相似,而且会给出最准确的单应性,因为我们排除了虽然非常相似,但在坐标上相距很远并且很可能属于的特征到其他对象。

【问题讨论】:

    标签: c++ opencv feature-detection hamming-distance video-tracking


    【解决方案1】:

    你需要的可能是这样的:

    1. 照常计算匹配。
    2. DMatchqueryIdxtrainIdx 索引。您可以使用这些来检索相应的关键点。计算它们之间的欧几里得距离,如果DMatch 使用某种加权函数更新值distance
    3. 按距离对匹配项进行排序(因为 distance 已更改)。

    现在匹配向量根据描述符之间的汉明距离和关键点之间的欧几里德距离进行排序。

    【讨论】:

      【解决方案2】:

      我认为 opencv 中没有内置方法可以做到这一点。

      我要做的是使用 cv::DescriptorMatcher::radiusMatch。它找到所有在一定汉明距离下的匹配。您需要找到一个半径/距离,以确保特征对于您的应用程序来说足够相似,但又不会太大而使整个计算变慢。

      然后,您可以从这些特征中选择最接近您预测的特征位置的特征,或者根据汉明距离和坐标距离等计算某种加权分数。

      【讨论】:

        猜你喜欢
        • 2015-07-21
        • 2015-03-21
        • 2017-09-10
        • 1970-01-01
        • 2021-10-11
        • 1970-01-01
        • 2020-08-06
        • 2016-01-23
        • 2016-05-03
        相关资源
        最近更新 更多