Ich arbeite derzeit mit und vergleiche die Leistung mehrerer von OpenCV bereitgestellter Feature-Detektoren als Grundlage für den visuellen Feature-Matching.
Ich verwende SIFT- Deskriptoren. Ich habe beim Erkennen von MSER- und DoG-Funktionen (SIFT) eine zufriedenstellende Übereinstimmung erzielt (nachdem ich schlechte Übereinstimmungen abgelehnt habe ) .
Derzeit teste ich meinen Code mit GFTT (Good Features to Track - Harris-Ecken) , um einen Vergleich zu erhalten, und auch, weil in der endgültigen Anwendung eine Reihe von GFTT-Funktionen aus dem visuellen Feature-Tracking-Prozess verfügbar sein werden.
Ich verwende, cv::FeatureDetector::detect(...)
wodurch ich mit erkannten Merkmalen / Schlüsselpunkten / Regionen von Interessestd::vector<cv::KeyPoint>
gefüllt werde . Die Struktur enthält grundlegende Informationen zum Standort des Features sowie Informationen zu und in denen der Schlüsselpunkt erkannt wurde.cv::KeyPoint
size
octave
Meine ersten Ergebnisse mit GFTT waren schrecklich, bis ich die typischen size
und octave
Parameter in verschiedenen Arten von Merkmalen verglichen habe :
- MSER stellt die Größe ein (zwischen 10 und 40 Pixel) und belässt die Oktave auf 0
- DoG (SIFT) legt sowohl die Größe als auch die Oktave fest ( Verhältnis Größe / Oktave zwischen 20 und 40).
- GFTT Die Parameter sind immer : Größe = 3 , Oktave = 0
Ich nehme an , das liegt daran, dass der Hauptzweck von GFTT- Funktionen nicht darin bestand, beim Abgleich, sondern nur beim Tracking verwendet zu werden. Dies erklärt die geringe Qualität der Übereinstimmungsergebnisse, da die aus solch winzigen Merkmalen extrahierten Deskriptoren für viele Dinge , einschließlich kleiner 1-Pixel-Verschiebungen, nicht mehr diskriminierend und unveränderlich sind .
Wenn ich manuell das Set size
von GFTT auf 10 bis 12 , ich gute Ergebnisse erzielen, sehr ähnlich wie bei der Verwendung von MSER oder Hund (SIFT) .
Meine Frage ist: Gibt es einen besseren Weg, um festzustellen, um wie viel die size
(und / oder octave
) erhöht werden kann, als nur mit 10 zu sehen, ob es funktioniert ? Ich möchte die Hardcodierung der size
Erhöhung nach Möglichkeit vermeiden und programmgesteuert bestimmen, aber die Hardcodierung ist in Ordnung , solange ich einige solide Argumente habe, die meine Auswahl des neuen Algorithmussize
/ size
Erhöhungs- / size
Schätzalgorithmus stützen .