我正在研究一個項目,其中我在圖像中描述了一組X & Y座標(每個要素5-10個點)特徵。我也有一個數以千計的功能的數據庫,每個功能都有相同類型的描述符。結果如下所示:將特徵匹配到數據庫的快速(er)方式
myFeature: (x1,y1), (x2,y2), (x3,y3)...
myDatabase: Feature1: (x1,y1), (x2,y2), (x3,y3)...
Feature2: (x1,y1), (x2,y2), (x3,y3)...
Feature3: (x1,y1), (x2,y2), (x3,y3)...
...
我想在myDatabase中的功能中找到myFeature的最佳匹配。
什麼是匹配這些功能的最快方法?目前,我踩着雖然數據庫中的每個功能和比較每一個人的一點:
bestScore = 0
for each feature in myDatabase:
score = 0
for each point descriptor in MyFeature:
find minimum distance from the current point to the...
points describing the current feature in the database
if the distance < threshold:
there is a match to the current point in the target feature
score += 1
if score > bestScore:
save feature as new best match
這個搜索工作,但顯然它得到大型數據庫十分緩慢。有沒有人知道更快的方法來做這種類型的搜索,或者至少如果有一種方法可以快速排除明顯不符合描述符的功能?
這假設每個功能有點正確並將位掩碼存儲在數據庫列中?在位掩碼中可以表示多少功能的實際限制以及您將用於存儲的數據類型是什麼? – orangepips 2010-11-05 13:16:26
這裏的問題是這些功能並不準確,在我的搜索功能中,座標可能是(120,30),而在數據庫中它的對應匹配是(121,28)。爲了解決這個問題,我需要一個近似的比較,這就是使用閾值的原因。 – Mikael 2010-11-05 13:30:07
然後擰緊你的矩陣,例如取4點,並使它們位於一個位置。這會讓它變得模糊(就像降低圖像文件的dpi一樣) – Falcon 2010-11-05 13:32:51