【问题标题】:Identify largest cluster of SURF Points in MatLab在 MatLab 中识别最大的 SURF 点簇
【发布时间】:2015-09-20 02:59:06
【问题描述】:

我有两张图片:一张小狗的大图(场景)和它的一小块鼻子(目标):

我已经为目标和场景收集了 SURF 点,然后匹配它们。我在场景图像上显示了最佳匹配,如下所示:

识别匹配冲浪点的最大集群的最佳方法是什么?

在这个例子中,所有的点都很好地聚集在一起。但是,在其他一些示例中,我想排除几个异常值。

谢谢。

更新: KDE 对我来说效果很好。谢谢大家,太好了。

【问题讨论】:

  • 是否可以将 x 和 y 坐标的中值作为集群的中心并包括:某个半径内的所有点,或最近点的某个百分比?
  • 我认为这适用于小狗示例(我选择不当)。我在下面提供了更新:一个更好的例子,我的问题集有更多典型的异常值。谢谢!
  • 请更新问题,而不是答案。看看密度估计而不是聚类。

标签: matlab pattern-matching cluster-analysis sift template-matching


【解决方案1】:

您不需要聚类分析。

您要找到的是密度最高的区域。这可能就是真正的匹配所在。

有许多密度估计方法,特别是对于低维。如果您负担得起,请考虑核密度估计 KDE。

如果您负担不起密度估计,但需要非常快速的东西,试试这个:

  1. 在每个维度中,计算中位数。

  2. 将中位数组合成一个向量以用作估计值。

中位数对异常值比平均值更稳健,但除此之外,它本质上是取所有点的(稳健)平均值。这没关系,除非同一图像中有多个匹配项。那么上面讨论的密度估计会更好。

【讨论】:

    【解决方案2】:

    您基本上要寻找的是匹配点诱导的密度函数的mode。也就是说,在图像的 2D 空间中,每个匹配点都代表了图像和“目标”之间匹配的概率函数中的一个“样本”。您正在寻找此密度函数具有“峰值”的二维点:即大多数匹配项所在的中心。

    有一种众所周知的算法可以在给定函数样本的情况下找到密度函数的模式,称为Mean shift。将均值偏移应用于图像中匹配项的 XY 坐标(我将使用大小与“目标”大小成比例的圆形或三角形内核)应该得到“目标”中心的坐标"位于图片中。

    在 google 中的快速搜索建议使用 this implementation 进行均值偏移聚类。

    注意:请不要与 Comaniciu 和 Meer 的 mean shift segmentation 混淆。

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2018-07-17
      • 2014-03-07
      • 2022-08-21
      • 1970-01-01
      • 2014-10-09
      • 2011-05-16
      • 1970-01-01
      • 2021-08-14
      相关资源
      最近更新 更多