/ / Feature-Deskriptoren eines großen Satzes von Bildern vergleichen - opencv, Bildverarbeitung, Computer Vision, Sift, Feature-Descriptor

Vergleichen von Funktionsdeskriptoren einer großen Menge von Bildern - opencv, Bildverarbeitung, Computer-Vision, Sieben, Feature-Deskriptor

Ich habe ein paar tausend Bilder, und für jedes Bild habe ich einen Satz von SIFT-Funktionsdeskriptoren extrahiert (derzeit an 200 pro Bild gebunden).

Ich muss einen vollständigen Graphen der Abstände zwischen den einzelnen Bildern erstellen. Das heißt, ich muss den Abstand von jedem Bild zu jedem anderen Bild über eine Metrik ermitteln.

Bisher habe ich versucht, mit FLANN das zu berechnen20 nächsten benachbarten Deskriptoren zwischen den beiden Knoten und Berechnen des mittleren Abstands zwischen jedem der übereinstimmenden Deskriptoren. Leider dauert dieser Prozess viel zu lange.

Gibt es eine Möglichkeit, die Deskriptoren dieser Bilder effizienter zu vergleichen?

Antworten:

4 für die Antwort № 1

Sie können in Betracht ziehen, Ihr SIFT-Descriptord in einem Bag of Visual-Wort (BoV) oder einem Vektor des lokal aggregierten Deskriptors (VLAD) zusammenzufassen. Grundsätzlich gilt:

1 - Berechne ein Codebuch (K SIFT-Deskriptoren) mit beispielsweise K-Mitteln

2 - Extrahieren Sie für jedes Bild die SIFT-Deskriptoren.suchen Sie dann den jeweils nächsten Nachbarn im Codebuch. Berechnen Sie daher ein Histogramm des SIFT des Bildes gemäß dem Codebuch. Dies ist die einfachste Methode (harte Codierung, Sum-Pooling), aber es gibt eine Alternative (und liefert oft bessere Ergebnisse für Computer-Visionsprobleme).

3 - Daher wird jedes Bild mit a dargestellteindeutiger Vektor der Größe K (das Histogramm). Sie können dann einfach den Abstand zwischen den Bildern als (z. B. euklidischer) Abstand zwischen diesen Histogrammen berechnen.