Klassifizierung von Detektoren, Extraktoren und Matchern
Ich bin neu in opencv und versucht zu implementieren image matching zwischen zwei Bildern. Für diesen Zweck versuche ich zu verstehen, den Unterschied zwischen feature Deskriptoren Deskriptor-Extraktoren und-descriptor-Matcher. Ich stieß auf eine Menge von Begriffen, und versuchte, über Sie zu Lesen auf der opencv-Dokumentation-website, aber ich kann einfach nicht scheinen, um wickeln Sie meinen Kopf herum, die Konzepte. Habe ich verstanden, der grundlegende Unterschied hier. Unterschied zwischen Feature-Erkennung und-Descriptor Extraktion
Aber stieß ich auf die folgenden Bedingungen während des Studiums auf das Thema :
SCHNELL, GFTT, SIFT, SURF, MSER, STERN, KUGEL, REGE, FREAK, KURZE
Ich verstehen, wie SCHNELL, SIFT, SURF-Arbeit, aber kann nicht scheinen, um herauszufinden, welche der oben genannten sind nur die Detektoren und die Extraktoren.
Dann gibt es die Matcher.
FlannBased, BruteForce, knnMatch und wohl auch einige andere.
Nach einigem Lesen, habe ich herausgefunden, dass bestimmte Matcher kann nur verwendet werden, mit bestimmten Abzieher, wie hier beschrieben. Wie Funktioniert OpenCV ORB Feature Detector Arbeit?
Die Klassifizierung ist ganz klar, aber es ist nur für ein paar Abzieher und ich verstehe nicht den Unterschied zwischen float und uchar.
Also im Grunde, kann mir bitte jemand
- klassifizieren die Arten von Detektoren, Extraktoren und Matcher basiert auf float und uchar, wie bereits erwähnt, oder eine andere Art der Klassifizierung?
- erklären Sie den Unterschied zwischen float und uchar Klassifizierung oder welche Klassifikation verwendet wird?
- erwähnen, wie Sie initialisiert werden (code), verschiedene Arten von Detektoren, Extraktoren und Matcher?
Ich kenne seine Fragen, für eine Menge, aber ich werde sehr dankbar.
Danke.
InformationsquelleAutor der Frage hriddle | 2013-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich aus, dass die Liste der feature-Detektoren/Extraktoren (link zum Artikel: SCHNELLGFTTSIEBENSURFENMSERSTARORBFLOTTERFREAKKURZE), einige von Ihnen sind nur feature-Detektoren (SCHNELL, GFTT), in anderen sind beide feature-Detektoren und-descriptor-Extraktoren (SIFT, SURF, ORB, FREAK).
Wenn ich mich richtig erinnere, KURZE ist nur ein descriptor extractor, so muss es Funktionen entdeckt, die von einigen anderen Algorithmus, wie SCHNELL oder ORB.
Sicher sein, was was ist, haben Sie zum durchsuchen der Artikel bezogen auf den Algorithmus oder suchen opencv-Dokumentation, um zu sehen, was umgesetzt wurde, für die
FeatureDetector
Klasse oder das war für denDescriptorExtractor
Klasse.Bezüglich Fragen 1 und 2zu klassifizieren Sie als float und uchar, die link schon gepostet ist die beste Referenz, die ich kenne, vielleicht wird jemand in der Lage sein, es zu vollenden.
Beantwortung Frage 3OpenCV gemacht, der code für die Verwendung der verschiedenen Arten ziemlich die gleiche ist - vor allem müssen Sie wählen Sie eine feature-Detektor. Die meisten der Unterschied ist in der Wahl der Art der matcher und die Sie bereits erwähnt die 3 diejenigen, die OpenCV hat. Ihre beste Wette ist hier die Dokumentation zu Lesen, Codebeispiele und zugehörige Stack-Überlauf Fragen. Auch einige blog-Beiträge sind eine ausgezeichnete Quelle von Informationen, wie diese Serie von feature-Detektor benchmarks von Ievgen Khvedchenia (Der blog ist nicht mehr verfügbar, so musste ich erstellen Sie eine raw-text-Kopie aus google cache).
Matcher werden verwendet, um herauszufinden, ob ein Deskriptor ist ähnlich zu einem anderen Deskriptor aus einer Liste. Sie können entweder vergleichen Sie Ihre query-Deskriptor mit allen anderen Deskriptoren aus der Liste (BruteForce) oder Sie verwenden eine bessere Heuristik (FlannBased, knnMatch). Das problem ist, dass die Heuristiken funktionieren nicht für alle Arten von Deskriptoren. Zum Beispiel, FlannBased Umsetzung funktioniert nur mit
float
Deskriptoren, aber nicht mituchar
's (Aber da 2.4.0, FlannBased mit LSH index angewandt werden kann, uchar Deskriptoren).Zitieren diese App-Solut blog-post über die
DescriptorMatcher
Typen:Einige der beliebtesten Kombinationen sind:
Funktion Detektoren /Decriptor Abzieher /Matcher-Typen
(SCHNELL, SURFEN) /SURFEN /FlannBased
(SCHNELL, SIFT) /SIFT /FlannBased
(SCHNELL, ORB) /ORB /Bruteforce
(SCHNELL, ORB) /BRIEF /Bruteforce
(SCHNELL, SURFEN) /FREAK /Bruteforce
Haben Sie vielleicht auch bemerkt, es gibt ein paar Adapter (Dynamisch, Pyramide, Grid)um die feature-Detektoren. App-Solut blog-post fasst sehr schön Ihre Verwendung:
Weiter Lesen:
Dieser blog-Eintrag von-Yu-Lu hat eine sehr schöne Zusammenfassung Beschreibung auf SIEBEN, SCHNELL, SURFEN, KURZ ORB, munter und FREAK.
Diese Serie von Beiträgen von Gil Levi auch detaillierte Zusammenfassungen für einige dieser algorithmen (KURZ, ORB, munter und FREAK).
InformationsquelleAutor der Antwort Rui Marques