1

SURF點的最大簇我有兩個圖像:確定MatLab中

puppy nose

我一隻小狗(現場)和它的鼻子小作物(目標)的大圖像爲目標和場景收集SURF點,然後匹配它們。

matching SURF points

什麼是確定最大的集羣匹配的衝浪點最好的辦法:我已經顯示如下的場景圖像上最好的比賽嗎?

在這個例子中,所有的點都很好地聚類。但是,在其他一些例子中,我想排除幾個異常值。

謝謝。

更新: KDE對我很好。謝謝大家,那很好。

+0

將x和y座標的中間值作爲聚類的中心,包括:某個半徑內的所有點或最近點的某個百分比? – gregswiss

+0

我認爲這將在小狗的例子(這是我很不好)的工作。我在下面提供了一個更新:一個更好的例子,對於我的問題集有更多的典型異常值。謝謝! –

+0

請更新問題,而不是回答。看看**密度估計**而不是聚類。 –

回答

1

您不需要聚類分析。

想要查找的是最高密度的區域。這可能是真正匹配的地方。

密度估計有許多方法,特別是對於低維度。考慮核密度估計 KDE,如果你能負擔得起。

如果您不能負擔密度估計,但需要的東西非常快,試試這個:

  1. 在每一個維度,計算中位數。

  2. 將中位數組合成矢量以用作估計。

中位數比這更強大的異常值高於平均值,但另一方面,它本質上是把你的所有點的(健壯)的意思。這將是可以的,除非有在同一圖像多個好匹配。那麼上面討論的密度估計會更好。

0

你基本上尋找的是由匹配點引起的密度函數的mode。也就是說,在圖像的2D空間中,每個匹配點表示來自圖像與「目標」之間匹配的概率函數的「樣本」。您正在尋找2D密度函數具有「峯值」的點:這是大多數匹配的中心點。

有一個衆所周知的算法來找到給定樣本函數的密度函數模式,它被稱爲Mean shift。將mean-shift應用於圖像中匹配的XY座標(我將使用大小與「目標」大小成比例的圓形或三角形內核),結果應爲「目標」中心的座標「位於圖像中。

谷歌快速搜索建議this implementation均值漂移聚類。

注意:請不要與Comaniciu和Meer的mean shift segmentation混淆。