Ich implementiere eine content-based image retrieval Anwendung, die das Modell Bag of Features beinhaltet. Ich verwende cv::SIFT
als Feature-Detektor.Wird die Anzahl der erkannten Features in SIFT erhöht, um die Präzision zu erhöhen?
Wie auch immer, die Anwendungsleistung ist nicht großartig und ich versuche, sie vom Algorithmus des ersten Schrittes zu verbessern, der Merkmale entdeckt.
Lesen cv::SIFT::create()
documentation Ich habe drei Parameter zu sehen, die meine Aufmerksamkeit erregt:
- nFunktionen - Die Anzahl der besten Eigenschaften zu behalten. Die Merkmale werden nach ihren Werten eingestuft (gemessen im SIFT-Algorithmus als lokaler Kontrast).
- contrastThreshold - Die Kontrastschwelle, die verwendet wird, um schwache Merkmale in semi-einheitlichen (kontrastarmen) Regionen herauszufiltern. Je größer der Schwellenwert ist, desto weniger Merkmale werden vom Detektor erzeugt.
- edgeThreshold - Der Schwellenwert zum Herausfiltern kantenähnlicher Features. Beachten Sie, dass sich seine Bedeutung von der contrastThreshold unterscheidet, d. H. Je größer der edgeThreshold-Wert, desto weniger Features werden herausgefiltert (mehr Features bleiben erhalten). Diese
bedeutet, dass der erste und der dritte Parameter nimmt zu, während die zweite abnimmt, sollte der Algorithmus Genauigkeit verbessern (mit geringerer Zeitleistungen)?
Ich frage mich, vor allem für die ersten Parameter, wo zum Beispiel, wenn wir nfeatures=2000
setzen, wird es genau 2000
Funktionen erkennen, egal ob sie "interessant" sind oder nicht. Das bedeutet, dass es "uninteressante" (so schlechte) Schlüsselpunkte entdecken wird?
Danke für Ihre nützliche Antwort. Ich kenne VLFeat, es hat auch eine C-API, ist leider auf der C-Seite nicht so gut dokumentiert. – justHelloWorld
Auf jeden Fall hat Ihre Antwort meine Verdächtigen bestätigt: Die Erhöhung der Anzahl von 'nFeatures' kann zu Fehlalarmen (und so schlechten Ergebnissen) führen. Ich denke, dass ASIFT eine genauere Lösung sein könnte. Wir werden sehen. – justHelloWorld
Sie sind willkommen. :) Ich habe ASIFT nicht benutzt, bin mir also nicht sicher. – Saurav