OpenCV: Fingerabdruck-Bild und Vergleichen mit Datenbank
Ich habe eine Datenbank mit Bildern. Wenn ich ein neues Bild aufnehmen, ich möchte um es zu vergleichen gegen die Bilder in dieser Datenbank und erhalten ein ähnlichkeitsergebnis (mit OpenCV). Auf diese Weise möchte ich erkennen, wenn ich ein Bild, welches sehr ähnlich zu dem frischen Bild.
Ist es möglich, erstellen Sie einen Fingerabdruck/hash für meine Datenbank Bilder und neue diejenigen, die gegen es?
Ich bin auf der Suche nach einem alogrithm code-snippet oder technische demo und nicht für eine kommerzielle Lösung.
Besten,
Stefan
- Normalerweise diese Art der Sache geschieht durch extrahieren von feature-Vektoren aus den Bildern und tun, irgendeine Art von template-matching auf der feature-Vektoren.
- Es gibt ein paar ähnliche/Verwandte/doppelte Fragen: OpenCV / SURFEN so erzeugen Sie ein Bild Hashwert / fingerprint / Signatur aus den Deskriptoren?, Near Duplicate Image Detection, Bild Fingerabdruck zu vergleichen, die ähnlichkeit vieler Bilder ...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Pual-R hat kommentiert, dieser "Fingerabdruck/hash" ist in der Regel eine Menge von feature-Vektoren oder eine Menge von feature Deskriptoren. Aber die meisten der feature-Vektoren in der computer vision verwendet sind in der Regel zu rechenintensiv für die Suche gegen die Datenbank. Also diese Aufgabe brauchen Sie eine Besondere Art von feature Deskriptoren, da solche Deskriptoren, die als SURF und SIFT sehr viel Zeit für die Suche auch mit verschiedenen Optimierungen.
Das einzige, was OpenCV ist für Ihre Aufgabe (Objekt-Kategorisierung), ist von der Implementierung des Bag of visual Words (BOW).
Kann es berechnen spezielle Art von Bild-features und trainieren der visuellen Wörter des Vokabulars. Als Nächstes können Sie verwenden dieses Vokabular zu finden, ähnliche Bilder in der Datenbank-und compute ähnlichkeits -.
Hier ist OpenCV-Dokumentation für den Beutel von Worten. Auch OpenCV hat ein Beispiel mit dem Namen
bagofwords_classification.cpp
. Es ist wirklich groß, aber hilfreich sein könnten.Content-based image retrieval-Systeme sind immer noch ein Bereich der aktiven Forschung: http://citeseerx.ist.psu.edu/search?q=content-based+Bild+retrieval
Zunächst muss klar sein, was als ähnlich in Ihrem Kontext:
Gibt es keine "dienen, die alle Bedürfnisse"-Algorithmus für das problem, das Sie beschrieben. Je mehr Sie teilen können über die Besonderheiten Ihres Problems, die besser Antworten könnten Sie bekommen. Posting einige repräsentative Bilder (wenn möglich) und beschreiben das gewünschte Ergebnis ist auch sehr hilfreich.
Dies wäre eine gute Frage für computer-vision.stackexchange.com, wenn es das schon gibt.
Können Sie
pHash
Algorithmus und speichernphash
Wert in der Datenbank, dann verwenden Sie diesen code:Hier 'mismatch' - Wert kann leicht sagen, die ähnlichkeit Verhältnis zwischen zwei Bildern.
pHash Funktion:
Dieser Funktion sind gut Genug, um zu bewerten, Bild Ähnlichkeiten in allen Aspekten.