Es gibt einige Themen, die hilfreich sind, um ähnliche Bilder zu finden.OpenCV/SURF Wie erstelle ich einen Bild-Hash/Fingerabdruck/Signatur aus den Deskriptoren?
Was ich tun möchte, ist einen Fingerabdruck eines Bildes zu bekommen und das gleiche Bild auf verschiedenen Fotos von einer Digitalkamera zu finden. Der SURF-Algorithmus scheint der beste Weg zu sein, unabhängig von Skalierung, Winkel und anderen Verzerrungen zu sein.
Ich verwende OpenCV mit dem SURF-Algorithmus, um Merkmale auf dem Beispielbild zu extrahieren. Jetzt frage ich mich, wie man all diese Feature-Daten (Position, Laplace, Größe, Ausrichtung, Hessian) in einen Fingerabdruck oder Hash konvertieren kann.
Dieser Fingerabdruck wird in einer Datenbank gespeichert und eine Suchanfrage muss in der Lage sein, diesen Fingerabdruck mit einem Fingerabdruck eines Fotos mit fast den gleichen Merkmalen zu vergleichen.
Update:
Es scheint, dass es keine Möglichkeit, alle Descriptor Vektoren in eine einfache Hash zu konvertieren ist. Was wäre also der beste Weg, um die Bilddeskriptoren für schnelle Abfragen in der Datenbank zu speichern?
Würden Wortschatzbäume eine Option sein?
Ich wäre sehr dankbar für jede Hilfe.
Der Code führt, was "nächster Nachbar" matching genannt wird - Nehme den Deskriptor (einen Vektor der Größe N) und vergleiche ihn mit einem Satz von Vektoren anderer Größe N (dies kann durch Berechnen des euklidischen Abstandes zwischen ihnen oder irgendeines anderen Abstandsmaßes sein) und Auswählen desjenigen, welches am nächsten ist. Das Naive im Namen bedeutet, dass der Vektor mit ALLEN anderen Vektoren verglichen wird. Es gibt andere Algorithmen, die approximative nearest neighbour verwenden, die weniger genau, aber effizienter sind. – elijah
Um es kurz zu machen: Sie können keine Hash-Funktion aus Bildern machen (das ist zu schlecht gestellt und anmaßend). Sie können sich auf die Literatur für Nearest-Neighbor-Klassifikation oder Bildähnlichkeitsmaße beziehen. – elijah
Okay, was wäre der beste Weg, um alle Bilddeskriptoren abzufragen? – dan